@@ -8,8 +8,7 @@ description = "PySide6-based GUI to run real time DeepLabCut experiments"
88readme = " README.md"
99keywords = [ " deep learning" , " deeplabcut" , " gui" , " pose estimation" , " real-time" ]
1010license-files = [ " LICENSE" ]
11- authors = [ { name = " A. & M. Mathis Labs" , email = " adim@deeplabcut.org" } ]
12- requires-python = " >=3.10,<3.13"
11+ requires-python = " >=3.10" # don' forget to update tool.pyproject-fmt if this changes
1312classifiers = [
1413 " Development Status :: 4 - Beta" ,
1514 " Environment :: X11 Applications :: Qt" ,
@@ -34,35 +33,41 @@ dependencies = [
3433 " qdarkstyle" ,
3534 " vidgear[core]" ,
3635]
37- optional-dependencies.all = [ " harvesters" , " pypylon" ]
38- optional-dependencies.basler = [ " pypylon" ]
39- optional-dependencies.dev = [
36+ [[project .authors ]]
37+ name = " A. & M. Mathis Labs"
38+ email = " adim@deeplabcut.org"
39+ [project .optional-dependencies ]
40+ all = [ " harvesters" , " pypylon" ]
41+ basler = [ " pypylon" ]
42+ dev = [
4043 " hypothesis>=6" ,
4144 " pre-commit" ,
4245 " pytest>=7" ,
4346 " pytest-cov>=4" ,
4447 " pytest-mock>=3.10" ,
4548 " pytest-qt>=4.2" ,
4649]
47- optional-dependencies. gentl = [ " harvesters" ]
48- optional-dependencies. pytorch = [
50+ gentl = [ " harvesters" ]
51+ pytorch = [
4952 " deeplabcut-live[pytorch]>=2" , # this includes timm and scipy
5053]
51- optional-dependencies. test = [
54+ test = [
5255 " hypothesis>=6" ,
5356 " pytest>=7" ,
5457 " pytest-cov>=4" ,
5558 " pytest-mock>=3.10" ,
5659 " pytest-qt>=4.2" ,
5760]
58- optional-dependencies. tf = [
61+ tf = [
5962 " deeplabcut-live[tf]>=2" ,
6063]
61- urls."Bug Tracker" = " https://github.com/DeepLabCut/DeepLabCut-live-GUI/issues"
62- urls.Documentation = " https://github.com/DeepLabCut/DeepLabCut-live-GUI"
63- urls.Homepage = " https://github.com/DeepLabCut/DeepLabCut-live-GUI"
64- urls.Repository = " https://github.com/DeepLabCut/DeepLabCut-live-GUI"
65- scripts.dlclivegui = " dlclivegui:main"
64+ [project .scripts ]
65+ dlclivegui = " dlclivegui:main"
66+ [project .urls ]
67+ "Bug Tracker" = " https://github.com/DeepLabCut/DeepLabCut-live-GUI/issues"
68+ Documentation = " https://github.com/DeepLabCut/DeepLabCut-live-GUI"
69+ Homepage = " https://github.com/DeepLabCut/DeepLabCut-live-GUI"
70+ Repository = " https://github.com/DeepLabCut/DeepLabCut-live-GUI"
6671
6772[tool .setuptools ]
6873# [tool.setuptools]
@@ -72,36 +77,42 @@ scripts.dlclivegui = "dlclivegui:main"
7277# This is more granular and explicit than include-package-data,
7378
7479# which can be too broad and include unwanted files.
75-
76- package-data."dlclivegui.assets" = [ " *.png" ]
77- packages.find.where = [ " ." ]
78- packages.find.include = [ " dlclivegui*" ]
79- packages.find.exclude = [ " tests*" , " docs*" ]
80+ [tool .setuptools .package-data ]
81+ "dlclivegui.assets" = [ " *.png" ]
82+ [tool .setuptools .packages ]
83+ find.where = [ " ." ]
84+ find.include = [ " dlclivegui*" ]
85+ find.exclude = [ " tests*" , " docs*" ]
8086
8187[tool .ruff ]
8288target-version = " py310"
8389line-length = 120
8490fix = true
85- lint.select = [ " B" , " E" , " F" , " I" , " UP" ]
86- lint.ignore = [ " E741" ]
91+ [tool .ruff .lint ]
92+ select = [ " B" , " E" , " F" , " I" , " UP" ]
93+ ignore = [ " E741" ]
8794
8895[tool .pyproject-fmt ]
89- generate-python-classifiers = false
96+ max_supported_python = " 3.12"
97+ generate_python_version_classifiers = true
98+ # Avoid collapsing tables to field.key = value format (less readable)
99+ table_format = " long"
90100
91101[tool .pytest ]
92- ini_options.testpaths = [ " tests" ]
93- ini_options.python_files = [ " test_*.py" ]
94- ini_options.python_classes = [ " Test*" ]
95- ini_options.python_functions = [ " test_*" ]
96- ini_options.addopts = [
102+ [tool .pytest .ini_options ]
103+ testpaths = [ " tests" ]
104+ python_files = [ " test_*.py" ]
105+ python_classes = [ " Test*" ]
106+ python_functions = [ " test_*" ]
107+ addopts = [
97108 " --strict-markers" ,
98109 " --strict-config" ,
99110 " --disable-warnings" ,
100111 # "--maxfail=1",
101112 " -ra" ,
102113 " -q" ,
103114]
104- ini_options. markers = [
115+ markers = [
105116 " unit: Unit tests for individual components" ,
106117 " integration: Integration tests for component interaction" ,
107118 " functional: Functional tests for end-to-end workflows" ,
@@ -111,13 +122,8 @@ ini_options.markers = [
111122]
112123
113124[tool .coverage ]
114- run.branch = true
115- run.omit = [
116- " */__pycache__/*" ,
117- " */site-packages/*" ,
118- ]
119- run.source = [ " dlclivegui" , " tests" ]
120- report.exclude_lines = [
125+ [tool .coverage .report ]
126+ exclude_lines = [
121127 " @abstract" ,
122128 " def __repr__" ,
123129 " if __name__ == .__main__.:" ,
@@ -126,6 +132,13 @@ report.exclude_lines = [
126132 " raise AssertionError" ,
127133 " raise NotImplementedError" ,
128134]
129- report. omit = [
135+ omit = [
130136 " tests/*" ,
131137]
138+ [tool .coverage .run ]
139+ branch = true
140+ omit = [
141+ " */__pycache__/*" ,
142+ " */site-packages/*" ,
143+ ]
144+ source = [ " dlclivegui" , " tests" ]
0 commit comments