annotate 2.1.1__tar.gz → 2.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {annotate-2.1.1 → annotate-2.3.0}/CHANGES.rst +9 -0
  2. {annotate-2.1.1/src/annotate.egg-info → annotate-2.3.0}/PKG-INFO +5 -5
  3. {annotate-2.1.1 → annotate-2.3.0}/noxfile.py +15 -9
  4. annotate-2.3.0/pyproject.toml +226 -0
  5. {annotate-2.1.1 → annotate-2.3.0/src/annotate.egg-info}/PKG-INFO +5 -5
  6. {annotate-2.1.1 → annotate-2.3.0}/src/annotate.egg-info/requires.txt +1 -1
  7. {annotate-2.1.1 → annotate-2.3.0}/tests/__init__.py +1 -1
  8. {annotate-2.1.1 → annotate-2.3.0}/tests/__main__.py +3 -2
  9. annotate-2.1.1/pyproject.toml +0 -205
  10. {annotate-2.1.1 → annotate-2.3.0}/LICENSE +0 -0
  11. {annotate-2.1.1 → annotate-2.3.0}/MANIFEST.in +0 -0
  12. {annotate-2.1.1 → annotate-2.3.0}/README.rst +0 -0
  13. {annotate-2.1.1 → annotate-2.3.0}/docs/CHANGES.rst +0 -0
  14. {annotate-2.1.1 → annotate-2.3.0}/docs/README.rst +0 -0
  15. {annotate-2.1.1 → annotate-2.3.0}/docs/_static/.keep +0 -0
  16. {annotate-2.1.1 → annotate-2.3.0}/docs/_templates/.keep +0 -0
  17. {annotate-2.1.1 → annotate-2.3.0}/docs/conf.py +0 -0
  18. {annotate-2.1.1 → annotate-2.3.0}/docs/index.rst +0 -0
  19. {annotate-2.1.1 → annotate-2.3.0}/setup.cfg +0 -0
  20. {annotate-2.1.1 → annotate-2.3.0}/src/annotate/__about__.py +0 -0
  21. {annotate-2.1.1 → annotate-2.3.0}/src/annotate/__init__.py +0 -0
  22. {annotate-2.1.1 → annotate-2.3.0}/src/annotate/_annotate.py +0 -0
  23. {annotate-2.1.1 → annotate-2.3.0}/src/annotate/py.typed +0 -0
  24. {annotate-2.1.1 → annotate-2.3.0}/src/annotate.egg-info/SOURCES.txt +0 -0
  25. {annotate-2.1.1 → annotate-2.3.0}/src/annotate.egg-info/dependency_links.txt +0 -0
  26. {annotate-2.1.1 → annotate-2.3.0}/src/annotate.egg-info/top_level.txt +0 -0
  27. {annotate-2.1.1 → annotate-2.3.0}/src/annotate.egg-info/zip-safe +0 -0
  28. {annotate-2.1.1 → annotate-2.3.0}/tests/data/.keep +0 -0
  29. {annotate-2.1.1 → annotate-2.3.0}/tests/test_main.py +0 -0
@@ -1,6 +1,15 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 2.3.0 (2026-03-30)
5
+ ------------------
6
+ - Setup update and improvement.
7
+
8
+ 2.2.0 (2026-02-13)
9
+ ------------------
10
+ - Added support for Python 3.15
11
+ - Setup update (mainly dependencies).
12
+
4
13
  2.1.1 (2026-01-26)
5
14
  ------------------
6
15
  - Marked the package as typed.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annotate
3
- Version: 2.1.1
3
+ Version: 2.3.0
4
4
  Summary: Decorator to set a function's __annotations__ like Py3.
5
5
  Author-email: Adam Karpierz <adam@karpierz.net>
6
6
  Maintainer-email: Adam Karpierz <adam@karpierz.net>
@@ -16,16 +16,16 @@ Keywords: annotate,typing,decorator
16
16
  Platform: any
17
17
  Classifier: Development Status :: 5 - Production/Stable
18
18
  Classifier: Intended Audience :: Developers
19
- Classifier: Operating System :: OS Independent
20
19
  Classifier: Natural Language :: Polish
20
+ Classifier: Operating System :: OS Independent
21
21
  Classifier: Programming Language :: Python
22
- Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3 :: Only
23
23
  Classifier: Programming Language :: Python :: 3.10
24
24
  Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Programming Language :: Python :: 3.13
27
27
  Classifier: Programming Language :: Python :: 3.14
28
- Classifier: Programming Language :: Python :: 3 :: Only
28
+ Classifier: Programming Language :: Python :: 3.15
29
29
  Classifier: Programming Language :: Python :: Implementation :: CPython
30
30
  Classifier: Programming Language :: Python :: Implementation :: PyPy
31
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
@@ -34,7 +34,7 @@ Requires-Python: <4.0.0,>=3.10.0
34
34
  Description-Content-Type: text/x-rst; charset=UTF-8
35
35
  License-File: LICENSE
36
36
  Requires-Dist: typing-extensions>=4.15.0
37
- Requires-Dist: pkg-about>=2.1.0
37
+ Requires-Dist: pkg-about>=2.3.0
38
38
  Dynamic: license-file
39
39
 
40
40
  annotate
@@ -1,8 +1,8 @@
1
- # Copyright (c) 2025 Adam Karpierz
1
+ # Copyright (c) 2026 Adam Karpierz
2
2
  # SPDX-License-Identifier: Zlib
3
3
 
4
4
  # /// script
5
- # dependencies = ["nox>=2025.11.12", "nox_ext", "nox_lib"]
5
+ # dependencies = ["nox>=2026.2.9", "nox_ext", "nox_lib"]
6
6
  # ///
7
7
 
8
8
  from __future__ import annotations
@@ -56,7 +56,7 @@ def cleanup(session: nox.Session) -> None:
56
56
  cmd = here/".clean.cmd"
57
57
  if cmd.is_file(): subprocess.run([cmd], stderr=subprocess.DEVNULL)
58
58
  rmtree(here/"build")
59
- rmtree(here/"dist"),
59
+ rmtree(here/"dist")
60
60
  for item in here.glob("src/*.egg-info"): rmtree(item)
61
61
  for item in here.glob("**/__pycache__"): rmtree(item)
62
62
  for item in here.glob("**/.mypy_cache"): rmtree(item)
@@ -74,10 +74,15 @@ def tests(session: nox.Session) -> None:
74
74
  def coverage(session: nox.Session) -> None:
75
75
  """Running code coverage analysis"""
76
76
  session.install(".", "--group=coverage")
77
- session.py("-m", "coverage", "erase")
78
- session.py("-m", "coverage", "run", "-m", "tests", *session.posargs, success_codes=range(0, 256))
79
- session.py("-m", "coverage", "html", success_codes=range(0, 256))
80
- session.py("-m", "coverage", "report")
77
+ env_dir = Path(session.virtualenv.location)
78
+ data_file = env_dir/".coverage"
79
+ html_dir = env_dir/'.coverage.html'
80
+ session.py("-m", "coverage", "erase", f"--data-file={data_file}")
81
+ session.py("-m", "coverage", "run", f"--data-file={data_file}", "-m", "tests",
82
+ *session.posargs, success_codes=range(0, 256))
83
+ session.py("-m", "coverage", "html", f"--data-file={data_file}", f"--directory={html_dir}",
84
+ success_codes=range(0, 256))
85
+ session.py("-m", "coverage", "report", f"--data-file={data_file}")
81
86
 
82
87
  @nox.session(python=[PY_DEFAULT])
83
88
  def docs(session: nox.Session) -> None:
@@ -139,11 +144,12 @@ def publish(session: nox.Session) -> None:
139
144
  @nox.session(python=[PY_DEFAULT])
140
145
  def typing(session: nox.Session) -> None:
141
146
  """Static type checking"""
142
- session.install(".", "--group=typing")
147
+ session.install(".", "--group=type")
143
148
  session.py("-m", "mypy")
144
149
 
145
150
  @nox.session(python=[PY_DEFAULT])
146
151
  def lint(session: nox.Session) -> None:
147
152
  """Checking code style and quality"""
148
153
  session.install(".", "--group=lint")
149
- session.py("-m", "flake8", here/"src/")
154
+ out_file = env_dir/"flake8out.txt"
155
+ session.py("-m", "flake8", "--output-file", out_file, here/"src/")
@@ -0,0 +1,226 @@
1
+ # Copyright (c) 2012 Adam Karpierz
2
+ # SPDX-License-Identifier: Zlib
3
+
4
+ [build-system]
5
+ build-backend = "setuptools.build_meta"
6
+ requires = [ "setuptools>=81.0.0", "packaging>=26.0.0" ]
7
+
8
+ [project]
9
+ name = "annotate"
10
+ version = "2.3.0"
11
+ description = "Decorator to set a function's __annotations__ like Py3."
12
+ keywords = [ "annotate", "typing", "decorator" ]
13
+ license = "Zlib"
14
+ license-files = [ "LICENSE" ]
15
+ authors = [
16
+ { name = "Adam Karpierz", email = "adam@karpierz.net" },
17
+ ]
18
+ maintainers = [
19
+ { name = "Adam Karpierz", email = "adam@karpierz.net" },
20
+ ]
21
+ urls.Homepage = "https://pypi.org/project/annotate/"
22
+ urls.Documentation = "https://karpierz.github.io/annotate/"
23
+ urls.History = "https://karpierz.github.io/annotate/CHANGES.html"
24
+ urls.Download = "https://pypi.org/project/annotate/"
25
+ urls.Repository = "https://github.com/karpierz/annotate"
26
+ urls.Tracker = "https://github.com/karpierz/annotate/issues"
27
+ urls.Sponsoring = "https://www.paypal.com/donate/?hosted_button_id=FX8L7CJUGLW7S"
28
+ requires-python = ">=3.10.0,<4.0.0"
29
+ classifiers = [
30
+ "Development Status :: 5 - Production/Stable",
31
+ "Intended Audience :: Developers",
32
+ "Natural Language :: Polish",
33
+ "Operating System :: OS Independent",
34
+ "Programming Language :: Python",
35
+ "Programming Language :: Python :: 3 :: Only",
36
+ "Programming Language :: Python :: 3.10",
37
+ "Programming Language :: Python :: 3.11",
38
+ "Programming Language :: Python :: 3.12",
39
+ "Programming Language :: Python :: 3.13",
40
+ "Programming Language :: Python :: 3.14",
41
+ "Programming Language :: Python :: 3.15",
42
+ "Programming Language :: Python :: Implementation :: CPython",
43
+ "Programming Language :: Python :: Implementation :: PyPy",
44
+ "Topic :: Software Development :: Libraries :: Python Modules",
45
+ "Typing :: Typed",
46
+ ]
47
+ dynamic = [ "readme" ]
48
+ # scripts.annotate = "annotate.__main__:main"
49
+ # gui-scripts.annotate-gui = "annotate:main_gui"
50
+ # entry-points.annotate.magical.epoint = "annotate:main_epoint"
51
+ dependencies = [
52
+ # mandatory
53
+ "typing-extensions>=4.15.0",
54
+ "pkg-about>=2.3.0",
55
+ # others
56
+ ]
57
+
58
+ [dependency-groups]
59
+ base = [
60
+ "pip>=26.0.1",
61
+ "setuptools>=81.0.0",
62
+ ]
63
+ test = [
64
+ { include-group = "base" },
65
+ "deepdiff>=9.0.0",
66
+ "rich>=14.3.3",
67
+ ]
68
+ coverage = [
69
+ { include-group = "test" },
70
+ "coverage>=7.13.5",
71
+ "covdefaults>=2.3.0",
72
+ "diff-cover>=10.2.0",
73
+ ]
74
+ docs = [
75
+ { include-group = "base" },
76
+ "sphinx>=8.1.3",
77
+ "pygments_ansi_color>=0.3.0", # fix sphinx load error
78
+ "roman_numerals>=4.1.0", # -||-
79
+ "sphinx-autodoc-typehints>=3.0.1",
80
+ "sphinx-toolbox>=4.1.2",
81
+ "sphinx-tabs>=3.4.5", # Do not change - sphinx-toolbox requires <3.4.7
82
+ "sphinx-copybutton>=0.5.2",
83
+ "sphinxcontrib-spelling>=8.0.2",
84
+ "sphinx-lint>=1.0.2",
85
+ "restructuredtext-lint>=2.0.2",
86
+ "nbsphinx>=0.9.8",
87
+ ]
88
+ build = [
89
+ { include-group = "test" },
90
+ "check-manifest>=0.51",
91
+ "build>=1.4.2",
92
+ "twine>=6.2.0",
93
+ ]
94
+ publish = [
95
+ "twine>=6.2.0",
96
+ ]
97
+ type = [
98
+ { include-group = "base" },
99
+ "mypy>=1.19.1",
100
+ "mypy_extensions>=1.1.0",
101
+ "types-setuptools>=81.0.0.20260209",
102
+ ]
103
+ lint = [
104
+ { include-group = "test" },
105
+ "flake8>=7.3.0",
106
+ "flake8-in-file-ignores>=0.3.0",
107
+ "flake8-pyproject>=1.2.4",
108
+ "flake8-docstrings>=1.7.0",
109
+ "pep8-naming>=0.15.1",
110
+ "flake8-builtins>=3.1.0",
111
+ "flake8-deprecated>=2.3.0",
112
+ ]
113
+
114
+ [tool.setuptools]
115
+ dynamic.readme = { file = [ "README.rst" ], content-type = "text/x-rst; charset=UTF-8" }
116
+ include-package-data = true
117
+ platforms = [ "any" ]
118
+ zip-safe = true
119
+ packages.find.namespaces = false
120
+ packages.find.where = [ "src" ]
121
+ package-dir."" = "src"
122
+ # package-dir."annotate.tests" = "tests"
123
+ package-data.annotate = [
124
+ ]
125
+ exclude-package-data."*" = [
126
+ "*.c", "*.h",
127
+ "*.cpp", "*.hpp",
128
+ "*.cxx", "*.hxx",
129
+ "*.pyx", "*.pxd",
130
+ ]
131
+ exclude-package-data.annotate = [
132
+ ]
133
+
134
+ [tool.coverage]
135
+ # run
136
+ run.source = [
137
+ "annotate",
138
+ "tests",
139
+ ]
140
+ run.omit = [
141
+ "**/tests/tman_*.py",
142
+ ]
143
+ run.branch = true
144
+ run.plugins = [ "covdefaults" ]
145
+ # report
146
+ report.exclude_also = [
147
+ # Regexes
148
+ # Have to re-enable the standard pragma
149
+ '^\s*if\s+self\.debug\s*:',
150
+ '^\s*if\s+__debug__\s*:',
151
+ '^\s*if\s+(0|False|None)\s*:',
152
+ '''if\s+__name__.*\s*==\s*['"]__main__['"]\s*:''',
153
+ '^\s*@unittest\.skip\s*\(',
154
+ '''^\s*@unittest\.skipIf\s*\(\s*sys\.platform\.startswith\s*\(\s*['"]win['"]\s*\)''',
155
+ '^\s*@unittest\.skipIf\s*\(\s*is_windows\s*,',
156
+ '^\s*@unittest\.skipIf\s*\(\s*is_cpython\s*,',
157
+ '\s*if\s+typing\.TYPE_CHECKING\s*:',
158
+ ]
159
+ report.omit = [
160
+ "tests/run.py",
161
+ ]
162
+ report.skip_covered = false
163
+
164
+ [tool.flake8]
165
+ filename = [ "*.py", "*.pyx" ]
166
+ # include = [ "tests" ]
167
+ # exclude = [ ".nox", ".tox", "*.egg", ".git", "__pycache__",
168
+ # "build", "_build", "docs/_build", "dist" ]
169
+ exclude = [ "_vendor" ]
170
+ max-line-length = 99
171
+ ignore = [
172
+ # pycodestyle error and warning codes
173
+ "E126", # Continuation line over-indented for hanging indent
174
+ "E203", # Whitespace before ",", ";", or ":"
175
+ "E221", # Multiple spaces before operator
176
+ "E251", # Unexpected spaces around keyword / parameter equals
177
+ "E302", # Expected 2 blank lines, found 0
178
+ "E701", # Multiple statements on one line (colon)
179
+ "E702", # Multiple statements on one line (semicolon)
180
+ "E731", # Do not assign a lambda expression, use a def
181
+ "E122", # Continuation line missing indentation or outdented
182
+ "E127", # Continuation line over-indented for visual indent
183
+ "E128", # Continuation line under-indented for visual indent
184
+ "E222", # Multiple spaces after operator
185
+ "E272", # Multiple spaces before keyword
186
+ "E241", # Multiple spaces after ","
187
+ "E266", # Too many leading "#" for block comment
188
+ "E226", # Missing whitespace around arithmetic operator
189
+ "W503", # Line break occurred before a binary operator
190
+ # pydocstyle error and warning codes
191
+ "D100", # Missing docstring in public module
192
+ "D101", # Missing docstring in public class
193
+ "D102", # Missing docstring in public method
194
+ "D103", # Missing docstring in public function
195
+ "D104", # Missing docstring in public package
196
+ "D202", # No blank lines allowed after function docstring
197
+ "D400", # First line should end with a period
198
+ "D401", # First line should be in imperative mood; try rephrasing
199
+ # pep8-naming error and warning codes
200
+ "N801", # Class names should use CapWords convention (class names)
201
+ "N802", # Function name should be lowercase (function names)
202
+ "N803", # Argument name should be lowercase (function arguments)
203
+ "N806", # Variable in function should be lowercase
204
+ # Other error and warning codes
205
+ "I100", # Your import statements are in the wrong order
206
+ ]
207
+ # (e.g. "E4", "W") default: "E121", "E123", "126", "226", "E24", "704"
208
+ # select = [ "E", "W", "F", "N", "I" ]
209
+ # show-source = true
210
+ # verbose = false
211
+ # quiet = true
212
+ count = true
213
+
214
+ [tool.mypy]
215
+ python_version = "3.10"
216
+ strict = true
217
+ sqlite_cache = true
218
+ warn_unused_configs = true
219
+ exclude_gitignore = true
220
+ install_types = true
221
+ non_interactive = true
222
+ pretty = true
223
+ check_untyped_defs = true
224
+ # ignore_missing_imports = true
225
+ files = [ "src" ]
226
+ # exclude = [ "docs/", "tests/" ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annotate
3
- Version: 2.1.1
3
+ Version: 2.3.0
4
4
  Summary: Decorator to set a function's __annotations__ like Py3.
5
5
  Author-email: Adam Karpierz <adam@karpierz.net>
6
6
  Maintainer-email: Adam Karpierz <adam@karpierz.net>
@@ -16,16 +16,16 @@ Keywords: annotate,typing,decorator
16
16
  Platform: any
17
17
  Classifier: Development Status :: 5 - Production/Stable
18
18
  Classifier: Intended Audience :: Developers
19
- Classifier: Operating System :: OS Independent
20
19
  Classifier: Natural Language :: Polish
20
+ Classifier: Operating System :: OS Independent
21
21
  Classifier: Programming Language :: Python
22
- Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3 :: Only
23
23
  Classifier: Programming Language :: Python :: 3.10
24
24
  Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Programming Language :: Python :: 3.13
27
27
  Classifier: Programming Language :: Python :: 3.14
28
- Classifier: Programming Language :: Python :: 3 :: Only
28
+ Classifier: Programming Language :: Python :: 3.15
29
29
  Classifier: Programming Language :: Python :: Implementation :: CPython
30
30
  Classifier: Programming Language :: Python :: Implementation :: PyPy
31
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
@@ -34,7 +34,7 @@ Requires-Python: <4.0.0,>=3.10.0
34
34
  Description-Content-Type: text/x-rst; charset=UTF-8
35
35
  License-File: LICENSE
36
36
  Requires-Dist: typing-extensions>=4.15.0
37
- Requires-Dist: pkg-about>=2.1.0
37
+ Requires-Dist: pkg-about>=2.3.0
38
38
  Dynamic: license-file
39
39
 
40
40
  annotate
@@ -1,2 +1,2 @@
1
1
  typing-extensions>=4.15.0
2
- pkg-about>=2.1.0
2
+ pkg-about>=2.3.0
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2012 Adam Karpierz
1
+ # Copyright (c) 1994 Adam Karpierz
2
2
  # SPDX-License-Identifier: Zlib
3
3
 
4
4
  __all__ = ('top_dir', 'test_dir')
@@ -10,14 +10,15 @@ from . import test_dir
10
10
  log = logging.getLogger(__name__)
11
11
 
12
12
 
13
- def test_suite(names=None, omit=()):
13
+ def test_suite(names=None, include=(), exclude=()):
14
14
  from . import __name__ as pkg_name
15
15
  from . import __path__ as pkg_path
16
16
  import unittest
17
17
  import pkgutil
18
18
  if names is None:
19
19
  names = [name for _, name, _ in pkgutil.iter_modules(pkg_path)
20
- if name.startswith("test_") and name not in omit]
20
+ if (name.startswith("test_") or name in include)
21
+ and name not in exclude]
21
22
  names = [".".join((pkg_name, name)) for name in names]
22
23
  tests = unittest.defaultTestLoader.loadTestsFromNames(names)
23
24
  return tests
@@ -1,205 +0,0 @@
1
- # Copyright (c) 2012 Adam Karpierz
2
- # SPDX-License-Identifier: Zlib
3
-
4
- [build-system]
5
- requires = ['setuptools>=80.10.2', 'packaging>=26.0.0']
6
- build-backend = 'setuptools.build_meta'
7
-
8
- [project]
9
- name = 'annotate'
10
- version = '2.1.1'
11
- description = '''Decorator to set a function's __annotations__ like Py3.'''
12
- authors = [
13
- { name = 'Adam Karpierz', email = 'adam@karpierz.net' },
14
- ]
15
- maintainers = [
16
- { name = 'Adam Karpierz', email = 'adam@karpierz.net' },
17
- ]
18
- license = 'Zlib'
19
- license-files = ['LICENSE']
20
- urls.Homepage = 'https://pypi.org/project/annotate/'
21
- urls.Documentation = 'https://karpierz.github.io/annotate/'
22
- urls.History = 'https://karpierz.github.io/annotate/CHANGES.html'
23
- urls.Download = 'https://pypi.org/project/annotate/'
24
- urls.Repository = 'https://github.com/karpierz/annotate'
25
- urls.Tracker = 'https://github.com/karpierz/annotate/issues'
26
- urls.Sponsoring = 'https://www.paypal.com/donate/?hosted_button_id=FX8L7CJUGLW7S'
27
- keywords = ['annotate', 'typing', 'decorator']
28
- classifiers = [
29
- 'Development Status :: 5 - Production/Stable',
30
- 'Intended Audience :: Developers',
31
- 'Operating System :: OS Independent',
32
- 'Natural Language :: Polish',
33
- 'Programming Language :: Python',
34
- 'Programming Language :: Python :: 3',
35
- 'Programming Language :: Python :: 3.10',
36
- 'Programming Language :: Python :: 3.11',
37
- 'Programming Language :: Python :: 3.12',
38
- 'Programming Language :: Python :: 3.13',
39
- 'Programming Language :: Python :: 3.14',
40
- 'Programming Language :: Python :: 3 :: Only',
41
- 'Programming Language :: Python :: Implementation :: CPython',
42
- 'Programming Language :: Python :: Implementation :: PyPy',
43
- 'Topic :: Software Development :: Libraries :: Python Modules',
44
- 'Typing :: Typed',
45
- ]
46
- requires-python = '>=3.10.0,<4.0.0'
47
- dependencies = [
48
- # mandatory
49
- 'typing-extensions>=4.15.0',
50
- 'pkg-about>=2.1.0',
51
- # others
52
- ]
53
- dynamic = ['readme']
54
- #scripts.'annotate' = 'annotate.__main__:main'
55
- #gui-scripts.'annotate-gui' = 'annotate:main_gui'
56
- #entry-points.'annotate.magical'.epoint = 'annotate:main_epoint'
57
-
58
- [dependency-groups]
59
- base = [
60
- 'pip>=25.3',
61
- 'setuptools>=80.10.2',
62
- ]
63
- test = [
64
- { include-group = 'base' },
65
- 'deepdiff>=8.6.1',
66
- 'rich>=14.3.1',
67
- ]
68
- coverage = [
69
- { include-group = 'test' },
70
- 'coverage>=7.13.2',
71
- 'covdefaults>=2.3.0',
72
- 'diff-cover>=10.2.0',
73
- ]
74
- docs = [
75
- { include-group = 'base' },
76
- 'sphinx>=8.1.3',
77
- 'pygments_ansi_color>=0.3.0', # fix sphinx load error
78
- 'roman_numerals>=4.1.0', # -||-
79
- 'sphinx-autodoc-typehints>=3.0.1',
80
- 'sphinx-toolbox>=4.1.2',
81
- 'sphinx-tabs>=3.4.5', # Do not change - sphinx-toolbox requires <3.4.7
82
- 'sphinx-copybutton>=0.5.2',
83
- 'sphinxcontrib-spelling>=8.0.2',
84
- 'sphinx-lint>=1.0.2',
85
- 'restructuredtext-lint>=2.0.2',
86
- 'nbsphinx>=0.9.8',
87
- ]
88
- build = [
89
- { include-group = 'test' },
90
- 'check-manifest>=0.51',
91
- 'build>=1.4.0',
92
- 'twine>=6.2.0',
93
- ]
94
- publish = [
95
- 'twine>=6.2.0',
96
- ]
97
- typing = [
98
- { include-group = 'base' },
99
- 'mypy>=1.19.1',
100
- 'mypy_extensions>=1.1.0',
101
- 'types-setuptools>=80.10.0.20260124',
102
- ]
103
- lint = [
104
- { include-group = 'test' },
105
- 'flake8>=7.3.0',
106
- 'flake8-in-file-ignores>=0.3.0',
107
- 'flake8-pyproject>=1.2.4',
108
- 'flake8-docstrings>=1.7.0',
109
- 'pep8-naming>=0.15.1',
110
- 'flake8-builtins>=3.1.0',
111
- 'flake8-deprecated>=2.3.0',
112
- ]
113
-
114
- [tool.setuptools.dynamic]
115
- readme = { file = ['README.rst'], content-type = 'text/x-rst; charset=UTF-8' }
116
-
117
- [tool.setuptools]
118
- include-package-data = true
119
- platforms = ['any']
120
- zip-safe = true
121
-
122
- [tool.setuptools.packages.find]
123
- namespaces = false
124
- where = ['src']
125
-
126
- [tool.setuptools.package-dir]
127
- '' = 'src'
128
- #'annotate.tests' = 'tests'
129
-
130
- [tool.setuptools.package-data]
131
- annotate = [
132
- ]
133
-
134
- [tool.setuptools.exclude-package-data]
135
- '*' = ['*.c','*.h','*.cpp','*.hpp','*.cxx','*.hxx','*.pyx','*.pxd']
136
- annotate = [
137
- ]
138
-
139
- [tool.coverage]
140
- # run
141
- run.source = [
142
- 'annotate',
143
- 'tests',
144
- ]
145
- run.omit = [
146
- '**/tests/tman_*.py',
147
- ]
148
- run.branch = true
149
- run.data_file = '.nox/coverage/.coverage'
150
- run.plugins = ['covdefaults']
151
- # report
152
- report.exclude_also = [
153
- # Regexes
154
- # Have to re-enable the standard pragma
155
- '^\s*if\s+self\.debug\s*:',
156
- '^\s*if\s+__debug__\s*:',
157
- '^\s*if\s+(0|False)\s*:',
158
- '''if\s+__name__.*\s*==\s*['"]__main__['"]\s*:''',
159
- '^\s*@unittest\.skip\(',
160
- '^\s*@unittest\.skipIf\(sys\.platform\.startswith\("win"\)',
161
- '^\s*@unittest\.skipIf\(is_windows,',
162
- '^\s*@unittest\.skipIf\(is_cpython,',
163
- 'if typing.TYPE_CHECKING:',
164
- ]
165
- report.omit = [
166
- 'tests/run.py',
167
- ]
168
- report.skip_covered = false
169
- # html report
170
- html.directory = '.nox/coverage/.coverage.html'
171
-
172
- [tool.flake8]
173
- filename = ['*.py','*.pyx']
174
- #include = ['tests']
175
- #exclude = ['.nox','.tox','*.egg','.git','__pycache__','build','_build','docs/_build','dist']
176
- exclude = ['_vendor']
177
- max-line-length = 99
178
- ignore = ['E126','E203','E221','E251','E302','E701','E702','E731',
179
- 'E122','E127','E128','E222','E272','E241','E266','E226',
180
- 'D100','D101','D102','D103','D104','D400','D401','D202',
181
- 'N806','N802','N803','N801',
182
- 'I100','W503']
183
- # (e.g. 'E4','W') default: 'E121','E123','126','226','E24','704'
184
- #select =
185
- #select = ['E','W','F','N','I']
186
- output-file = '.nox/lint/flake8out.txt'
187
- count = true
188
- #show-pep8,
189
- #show-source
190
- #verbose
191
- #quiet
192
-
193
- [tool.mypy]
194
- python_version = '3.10'
195
- strict = true
196
- sqlite_cache = true
197
- warn_unused_configs = true
198
- exclude_gitignore = true
199
- install_types = true
200
- non_interactive = true
201
- pretty = true
202
- check_untyped_defs = true
203
- #ignore_missing_imports = true
204
- files = ['src']
205
- #exclude = ['docs/', 'tests/']
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes