22name = " intersect-sdk"
33description = " Python SDK to interact with INTERSECT"
44authors = [
5- { name = " Lance Drane" , email = " dranelt@ornl.gov" },
6- { name = " Marshall McDonnell" , email = " mcdonnellmt@ornl.gov" },
7- { name = " Seth Hitefield" , email = " hitefieldsd@ornl.gov" },
8- { name = " Andrew Ayres" , email = " ayresaf@ornl.gov" },
9- { name = " Gregory Cage" , email = " cagege@ornl.gov" },
10- { name = " Jesse McGaha" , email = " mcgahajr@ornl.gov" },
11- { name = " Robert Smith" , email = " smithrw@ornl.gov" },
12- { name = " Gavin Wiggins" , email = " wigginsg@ornl.gov" },
13- { name = " Michael Brim" , email = " brimmj@ornl.gov" },
14- { name = " Rick Archibald" , email = " archibaldrk@ornl.gov" },
15- { name = " Addi Malviya Thakur" , email = " malviyaa@ornl.gov" },
5+ { name = " Lance Drane" , email = " dranelt@ornl.gov" },
6+ { name = " Marshall McDonnell" , email = " mcdonnellmt@ornl.gov" },
7+ { name = " Seth Hitefield" , email = " hitefieldsd@ornl.gov" },
8+ { name = " Andrew Ayres" , email = " ayresaf@ornl.gov" },
9+ { name = " Gregory Cage" , email = " cagege@ornl.gov" },
10+ { name = " Jesse McGaha" , email = " mcgahajr@ornl.gov" },
11+ { name = " Robert Smith" , email = " smithrw@ornl.gov" },
12+ { name = " Gavin Wiggins" , email = " wigginsg@ornl.gov" },
13+ { name = " Michael Brim" , email = " brimmj@ornl.gov" },
14+ { name = " Rick Archibald" , email = " archibaldrk@ornl.gov" },
15+ { name = " Addi Malviya Thakur" , email = " malviyaa@ornl.gov" },
1616]
1717version = " 0.9.0"
1818readme = " README.md"
1919license = { text = " BSD-3-Clause" }
2020requires-python = " >=3.10,<4.0"
2121keywords = [" intersect" ]
2222classifiers = [
23- " Programming Language :: Python :: 3" ,
24- " Programming Language :: Python :: 3.10" ,
25- " Programming Language :: Python :: 3.11" ,
26- " Programming Language :: Python :: 3.12" ,
27- " Programming Language :: Python :: 3.13" ,
23+ " Programming Language :: Python :: 3" ,
24+ " Programming Language :: Python :: 3.10" ,
25+ " Programming Language :: Python :: 3.11" ,
26+ " Programming Language :: Python :: 3.12" ,
27+ " Programming Language :: Python :: 3.13" ,
2828]
2929dependencies = [
30- " pydantic>=2.7.0" ,
31- " intersect-sdk-common>=0.9.4 ,<0.10.0" ,
32- " jsonschema[format-nongpl]>=4.21.1" , # extras necessary for enforcing formats
33- # "brotli>=1.1.0", # TODO - add this dependency when we add compression
34- " psutil>=7.0.0" ,
30+ " pydantic>=2.7.0" ,
31+ " intersect-sdk-common>=0.9.5 ,<0.10.0" ,
32+ " jsonschema[format-nongpl]>=4.21.1" , # extras necessary for enforcing formats
33+ # "brotli>=1.1.0", # TODO - add this dependency when we add compression
34+ " psutil>=7.0.0" ,
3535]
3636
3737[project .urls ]
@@ -41,20 +41,17 @@ Documentation = "https://intersect-python-sdk.readthedocs.io/en/latest/"
4141Issues = " https://github.com/INTERSECT-SDK/python-sdk/issues"
4242
4343[project .optional-dependencies ]
44- docs = [
45- " sphinx>=5.3.0" ,
46- " furo>=2023.3.27" ,
47- ]
44+ docs = [" sphinx>=5.3.0" , " furo>=2023.3.27" ]
4845
4946[dependency-groups ]
5047dev = [
51- " pre-commit>=3.3.1" ,
52- " ruff==0.12.7" ,
53- " mypy>=1.10.0" ,
54- " codespell>=2.3.0" ,
55- " pytest>=7.3.2" ,
56- " pytest-cov>=4.1.0" ,
57- " httpretty>=1.1.4"
48+ " pre-commit>=3.3.1" ,
49+ " ruff==0.12.7" ,
50+ " mypy>=1.10.0" ,
51+ " codespell>=2.3.0" ,
52+ " pytest>=7.3.2" ,
53+ " pytest-cov>=4.1.0" ,
54+ " httpretty>=1.1.4" ,
5855]
5956
6057[build-system ]
@@ -73,88 +70,94 @@ mccabe = { max-complexity = 20 }
7370pylint = { max-args = 10 , max-branches = 20 , max-returns = 15 , max-statements = 75 }
7471# pyflakes and the relevant pycodestyle rules are already configured
7572extend-select = [
76- ' C90' , # mccabe complexity
77- ' I' , # isort
78- ' N' , # pep8-naming
79- ' D' , # pydocstyle
80- ' UP' , # pyupgrade
81- ' YTT' , # flake8-2020
82- ' ANN' , # flake8-annotations
83- ' ASYNC' , # flake8-async
84- ' S' , # flake8-bandit
85- ' BLE' , # flake8-blind-except
86- ' B' , # flake8-bugbear
87- ' A' , # flake8-builtins
88- ' COM' , # flake8-commas
89- ' C4' , # flake8-comprehensions
90- ' DTZ' , # flake8-datetimez
91- ' T10' , # flake8-debugger
92- ' EM' , # flake8-error-message
93- ' FA' , # flake8-future-annotations
94- ' ISC' , # flake8-implicit-string-concat
95- ' ICN' , # flake8-import-conventions
96- ' G' , # flake8-logging-format
97- ' INP' , # flake8-no-pep420
98- ' PIE' , # flake8-PIE
99- ' T20' , # flake8-T20
100- ' PYI' , # flake8-pyi
101- ' PT' , # flake8-pytest-style
102- ' Q' , # flake8-quotes
103- ' RSE' , # flake8-raise
104- ' RET' , # flake8-return
105- ' SLF' , # flake8-self
106- ' SLOT' , # flake8-slots
107- ' SIM' , # flake8-simplify
108- ' TC' , # flake8-type-checking
109- ' ARG' , # flake8-unused-arguments
110- ' PTH' , # flake8-use-pathlib
111- ' PGH' , # pygrep-hooks
112- ' PL' , # pylint
113- ' TRY' , # tryceratops
114- ' FLY' , # flynt
115- ' RUF' , # RUFF additional rules
116- ' INT' , # flake8-gettext
73+ ' C90' , # mccabe complexity
74+ ' I' , # isort
75+ ' N' , # pep8-naming
76+ ' D' , # pydocstyle
77+ ' UP' , # pyupgrade
78+ ' YTT' , # flake8-2020
79+ ' ANN' , # flake8-annotations
80+ ' ASYNC' , # flake8-async
81+ ' S' , # flake8-bandit
82+ ' BLE' , # flake8-blind-except
83+ ' B' , # flake8-bugbear
84+ ' A' , # flake8-builtins
85+ ' COM' , # flake8-commas
86+ ' C4' , # flake8-comprehensions
87+ ' DTZ' , # flake8-datetimez
88+ ' T10' , # flake8-debugger
89+ ' EM' , # flake8-error-message
90+ ' FA' , # flake8-future-annotations
91+ ' ISC' , # flake8-implicit-string-concat
92+ ' ICN' , # flake8-import-conventions
93+ ' G' , # flake8-logging-format
94+ ' INP' , # flake8-no-pep420
95+ ' PIE' , # flake8-PIE
96+ ' T20' , # flake8-T20
97+ ' PYI' , # flake8-pyi
98+ ' PT' , # flake8-pytest-style
99+ ' Q' , # flake8-quotes
100+ ' RSE' , # flake8-raise
101+ ' RET' , # flake8-return
102+ ' SLF' , # flake8-self
103+ ' SLOT' , # flake8-slots
104+ ' SIM' , # flake8-simplify
105+ ' TC' , # flake8-type-checking
106+ ' ARG' , # flake8-unused-arguments
107+ ' PTH' , # flake8-use-pathlib
108+ ' PGH' , # pygrep-hooks
109+ ' PL' , # pylint
110+ ' TRY' , # tryceratops
111+ ' FLY' , # flynt
112+ ' RUF' , # RUFF additional rules
113+ ' INT' , # flake8-gettext
117114]
118115# If you're seeking to disable a rule, first consider whether the rule is overbearing, or if it should only be turned off for your usecase.
119116ignore = [
120- ' COM812' , # formatter, handled by Ruff format
121- ' ISC001' , # formatter, handled by Ruff format
122- ' SIM105' , # "with contextlib.suppress():" is slower than try-except-pass
123- ' ANN401' , # allow explicit "Any" typing, use with care
124- ' PLR2004' , # allow "magic numbers"
117+ ' COM812' , # formatter, handled by Ruff format
118+ ' ISC001' , # formatter, handled by Ruff format
119+ ' SIM105' , # "with contextlib.suppress():" is slower than try-except-pass
120+ ' ANN401' , # allow explicit "Any" typing, use with care
121+ ' PLR2004' , # allow "magic numbers"
125122]
126123
127124[tool .ruff .lint .flake8-type-checking ]
128- runtime-evaluated-base-classes = [" pydantic.BaseModel" , " intersect_sdk.IntersectBaseCapabilityImplementation" ]
129- runtime-evaluated-decorators = [" pydantic.dataclasses.dataclass" ," pydantic.validate_call" ]
125+ runtime-evaluated-base-classes = [
126+ " pydantic.BaseModel" ,
127+ " intersect_sdk.IntersectBaseCapabilityImplementation" ,
128+ ]
129+ runtime-evaluated-decorators = [
130+ " pydantic.dataclasses.dataclass" ,
131+ " pydantic.validate_call" ,
132+ ]
130133
131134[tool .ruff .lint .extend-per-file-ignores ]
132135'__init__.py' = [
133- ' F401' , # __init__.py commonly has unused imports
134- ' TC004' , # do lazy imports when importing from the base module
136+ ' F401' , # __init__.py commonly has unused imports
137+ ' TC004' , # do lazy imports when importing from the base module
135138]
136139'docs/*' = [
137- ' D' , # the documentation folder does not need documentation
138- ' INP001' , # docs are not a namespace package
140+ ' D' , # the documentation folder does not need documentation
141+ ' INP001' , # docs are not a namespace package
139142]
140143'examples/*' = [
141- ' N999' , # module names for examples are not standard
142- ' T20' , # allow print/pprint statements in examples
143- ' S106' , # don't care about credentials in examples
144- ' D100' , # documenting modules in examples is unhelpful
145- ' D104' , # documenting packages in examples is unhelpful
146- ' TRY002' , # examples can raise their own exception
144+ ' N999' , # module names for examples are not standard
145+ ' T20' , # allow print/pprint statements in examples
146+ ' S106' , # don't care about credentials in examples
147+ ' D100' , # documenting modules in examples is unhelpful
148+ ' D104' , # documenting packages in examples is unhelpful
149+ ' TRY002' , # examples can raise their own exception
147150]
148151'tests/*' = [
149- ' S101' , # allow assert statements in tests
150- ' S106' , # don't care about credentials in tests
151- ' S311' , # don't care about cryptographic security in tests
152- ' SLF001' , # allow private member access in tests
153- ' ANN' , # tests in general don't need types, unless they are runtime types.
154- ' ARG' , # allow unused parameters in tests
155- ' D' , # ignore documentation in tests
156- ' RUF012' , # permit "mutable" class attributes to not be annotated with typing.ClassVar (these shouldn't be mutated anyways...)
157- ]
152+ ' S101' , # allow assert statements in tests
153+ ' S106' , # don't care about credentials in tests
154+ ' S311' , # don't care about cryptographic security in tests
155+ ' SLF001' , # allow private member access in tests
156+ ' ANN' , # tests in general don't need types, unless they are runtime types.
157+ ' ARG' , # allow unused parameters in tests
158+ ' D' , # ignore documentation in tests
159+ ' RUF012' , # permit "mutable" class attributes to not be annotated with typing.ClassVar (these shouldn't be mutated anyways...)
160+ ]
158161
159162# see https://mypy.readthedocs.io/en/stable/config_file.html for a complete reference
160163[tool .mypy ]
@@ -175,8 +178,8 @@ addopts = "-ra"
175178
176179[tool .coverage .report ]
177180omit = [
178- ' *__init__*' , # __init__ files should just re-export other classes and functions
179- ' */discovery_service.py' , # currently unused
181+ ' *__init__*' , # __init__ files should just re-export other classes and functions
182+ ' */discovery_service.py' , # currently unused
180183]
181184exclude_also = [
182185 ' pragma: no-cover' , # standard
0 commit comments