2 # -*- coding: utf-8 -*-
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
19 from setuptools
import setup
, find_packages
20 from setuptools
.command
.install
import install
23 class Install_osm_im(install
):
24 """Generation of .py files from yang models"""
25 model_dir
= "models/yang"
28 def pipinstall(self
, package
):
29 """pip install for executable dependencies"""
30 subprocess
.call([sys
.executable
, "-m", "pip", "install", package
])
33 self
.pipinstall('pyang')
34 self
.pipinstall('pyangbind')
36 print("Using dir {}/{} for python artifacts".format(os
.getcwd(), self
.im_dir
))
37 path
= "{}/{}".format(os
.getcwd(), self
.im_dir
)
38 protoc_command
= ["make", "models"]
39 if subprocess
.call(protoc_command
) != 0:
41 # To ensure generated files are copied to the python installation folder
42 self
.copy_tree(self
.im_dir
, "{}{}".format(self
.install_lib
, self
.im_dir
))
48 description
='OSM Information Model',
49 long_description
=open('README.rst').read(),
50 version_command
=('git describe --tags --long --dirty --match v*', 'pep440-git-full'),
51 author
='Mike Marchetti',
52 author_email
='mmarchetti@sandvine.com',
53 packages
=find_packages(),
54 include_package_data
=True,
55 setup_requires
=['setuptools-version-command'],
56 install_requires
=['pyang', 'pyangbind'],
57 test_suite
='nose.collector',
58 url
='https://osm.etsi.org/gitweb/?p=osm/IM.git;a=summary',
60 cmdclass
={'install': Install_osm_im
},