Repository navigation
Expand file tree
/
Copy pathsetup.py
More file actions
137 lines (134 loc) · 5.66 KB
/
Copy pathsetup.py
File metadata and controls
137 lines (134 loc) · 5.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
from __future__ import print_function
import sys
from setuptools import setup
import pkg_resources
from packaging import version
# sonic_dependencies, version requirement only supports '>='
sonic_dependencies = ['sonic-py-common', 'sonic-config-engine']
for package in sonic_dependencies:
try:
package_dist = pkg_resources.get_distribution(package.split(">=")[0])
except pkg_resources.DistributionNotFound:
print(package + " is not found!", file=sys.stderr)
print("Please build and install SONiC python wheels dependencies from sonic-buildimage", file=sys.stderr)
exit(1)
if ">=" in package:
if version.parse(package_dist.version) >= version.parse(package.split(">=")[1]):
continue
print(package + " version not match!", file=sys.stderr)
exit(1)
setup(
name='sonic-platform-common',
version='1.0',
description='Platform-specific peripheral hardware interface APIs for SONiC',
license='Apache 2.0',
author='SONiC Team',
author_email='linuxnetdev@microsoft.com',
url='https://github.com/Azure/sonic-platform-common',
maintainer='Joe LeVeque',
maintainer_email='jolevequ@microsoft.com',
package_data={'sonic_platform_api': ['*.pyi', 'py.typed']},
packages=[
'sonic_platform_api',
'sonic_eeprom',
'sonic_led',
'sonic_fan',
'sonic_platform_base',
'sonic_platform_base.sonic_eeprom',
'sonic_platform_base.sonic_sfp',
'sonic_platform_base.sonic_storage',
'sonic_platform_base.sonic_pcie',
'sonic_platform_base.sonic_thermal_control',
'sonic_platform_base.sonic_xcvr',
'sonic_platform_base.sonic_xcvr.fields',
'sonic_platform_base.sonic_xcvr.fields.public',
'sonic_platform_base.sonic_xcvr.fields.broadcom',
'sonic_platform_base.sonic_xcvr.mem_maps',
'sonic_platform_base.sonic_xcvr.mem_maps.public',
'sonic_platform_base.sonic_xcvr.mem_maps.broadcom',
'sonic_platform_base.sonic_xcvr.mem_maps.public.cmis',
'sonic_platform_base.sonic_xcvr.mem_maps.public.cmis.pages',
'sonic_platform_base.sonic_xcvr.mem_maps.public.cmis.elsfp',
'sonic_platform_base.sonic_xcvr.mem_maps.public.cmis.elsfp.pages',
'sonic_platform_base.sonic_xcvr.api',
'sonic_platform_base.sonic_xcvr.api.public',
'sonic_platform_base.sonic_xcvr.api.broadcom',
'sonic_platform_base.sonic_xcvr.codes',
'sonic_platform_base.sonic_xcvr.codes.public',
'sonic_platform_base.sonic_xcvr.codes.broadcom',
'sonic_platform_base.sonic_xcvr.utils',
'sonic_platform_base.sonic_xcvr.api.arista',
'sonic_platform_base.sonic_xcvr.mem_maps.arista',
'sonic_platform_base.sonic_xcvr.api.credo',
'sonic_platform_base.sonic_xcvr.mem_maps.credo',
'sonic_platform_base.sonic_xcvr.codes.credo',
'sonic_platform_base.sonic_xcvr.api.innolight',
'sonic_platform_base.sonic_xcvr.api.hisense',
'sonic_platform_base.sonic_xcvr.api.amphenol',
'sonic_platform_base.sonic_xcvr.codes.amphenol',
'sonic_platform_base.sonic_xcvr.mem_maps.amphenol',
'sonic_platform_base.sonic_xcvr.api.broadcom',
'sonic_platform_base.sonic_xcvr.mem_maps.broadcom',
'sonic_platform_base.sonic_xcvr.api.nvidia',
'sonic_platform_base.sonic_xcvr.codes.nvidia',
'sonic_platform_base.sonic_xcvr.mem_maps.nvidia',
'sonic_platform_base.sonic_xcvr.cdb',
'sonic_platform_base.sonic_xcvr.cpo',
'sonic_psu',
'sonic_sfp',
'sonic_thermal',
'sonic_y_cable',
'sonic_y_cable.credo',
'sonic_y_cable.broadcom',
'sonic_y_cable.microsoft'
],
# NOTE: Install also depends on sonic-config-engine for portconfig.py
# This dependency should be eliminated by moving portconfig.py
# functionality into sonic-py-common
install_requires=[
'natsort',
'PyYAML',
] + sonic_dependencies,
setup_requires = [
'pytest-runner',
'wheel'
],
tests_require = [
'pytest',
'pytest-cov',
],
# `pip3 install ".[testing]"` is what CI runs before `pytest` and before
# `generator/check.sh`. Until this existed the extra resolved to nothing --
# pip warns about an unknown extra and carries on -- so the stub's two type
# gates were installed nowhere and ran nowhere.
extras_require = {
'testing': [
'pytest',
'pytest-cov',
# mypy ships `stubtest`, which is the gate that catches the facade
# and its .pyi drifting apart. Bounded, as jinja2 is below: both
# gates compare against what these versions produce, so a new
# release would otherwise fail unrelated changes the day it ships.
# Move the bounds in a change of their own.
'mypy>=2.4,<2.5',
# generator/generate.py renders its outputs with it, and the tests
# run the generator in process; `generate.py --check` compares
# them byte for byte.
'jinja2>=3.1,<3.2',
],
},
classifiers=[
'Development Status :: 3 - Alpha',
'Environment :: Plugins',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'License :: OSI Approved :: Apache Software License',
'Natural Language :: English',
'Operating System :: POSIX :: Linux',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.7',
'Topic :: Utilities',
],
keywords='sonic SONiC platform hardware interface api API'
)