annotate 2.2.0__tar.gz → 2.4.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.2.0 → annotate-2.4.0}/CHANGES.rst +11 -0
  2. {annotate-2.2.0/src/annotate.egg-info → annotate-2.4.0}/PKG-INFO +7 -8
  3. {annotate-2.2.0 → annotate-2.4.0}/README.rst +1 -1
  4. {annotate-2.2.0 → annotate-2.4.0}/noxfile.py +15 -8
  5. annotate-2.4.0/pyproject.toml +227 -0
  6. {annotate-2.2.0 → annotate-2.4.0/src/annotate.egg-info}/PKG-INFO +7 -8
  7. {annotate-2.2.0 → annotate-2.4.0}/src/annotate.egg-info/requires.txt +1 -1
  8. {annotate-2.2.0 → annotate-2.4.0}/tests/__init__.py +1 -1
  9. {annotate-2.2.0 → annotate-2.4.0}/tests/__main__.py +3 -2
  10. annotate-2.2.0/pyproject.toml +0 -206
  11. {annotate-2.2.0 → annotate-2.4.0}/LICENSE +0 -0
  12. {annotate-2.2.0 → annotate-2.4.0}/MANIFEST.in +0 -0
  13. {annotate-2.2.0 → annotate-2.4.0}/docs/CHANGES.rst +0 -0
  14. {annotate-2.2.0 → annotate-2.4.0}/docs/README.rst +0 -0
  15. {annotate-2.2.0 → annotate-2.4.0}/docs/_static/.keep +0 -0
  16. {annotate-2.2.0 → annotate-2.4.0}/docs/_templates/.keep +0 -0
  17. {annotate-2.2.0 → annotate-2.4.0}/docs/conf.py +0 -0
  18. {annotate-2.2.0 → annotate-2.4.0}/docs/index.rst +0 -0
  19. {annotate-2.2.0 → annotate-2.4.0}/setup.cfg +0 -0
  20. {annotate-2.2.0 → annotate-2.4.0}/src/annotate/__about__.py +0 -0
  21. {annotate-2.2.0 → annotate-2.4.0}/src/annotate/__init__.py +0 -0
  22. {annotate-2.2.0 → annotate-2.4.0}/src/annotate/_annotate.py +0 -0
  23. {annotate-2.2.0 → annotate-2.4.0}/src/annotate/py.typed +0 -0
  24. {annotate-2.2.0 → annotate-2.4.0}/src/annotate.egg-info/SOURCES.txt +0 -0
  25. {annotate-2.2.0 → annotate-2.4.0}/src/annotate.egg-info/dependency_links.txt +0 -0
  26. {annotate-2.2.0 → annotate-2.4.0}/src/annotate.egg-info/top_level.txt +0 -0
  27. {annotate-2.2.0 → annotate-2.4.0}/src/annotate.egg-info/zip-safe +0 -0
  28. {annotate-2.2.0 → annotate-2.4.0}/tests/data/.keep +0 -0
  29. {annotate-2.2.0 → annotate-2.4.0}/tests/test_main.py +0 -0
@@ -1,6 +1,17 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 2.4.0 (2026-05-11)
5
+ ------------------
6
+ - Added support for GraalPy 3.12
7
+ - Dropped support for Python 3.10 (due to compatibility issues).
8
+ - Fix for nox 'lint' session.
9
+ - Setup update and improvement.
10
+
11
+ 2.3.0 (2026-03-30)
12
+ ------------------
13
+ - Setup update and improvement.
14
+
4
15
  2.2.0 (2026-02-13)
5
16
  ------------------
6
17
  - Added support for Python 3.15
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annotate
3
- Version: 2.2.0
3
+ Version: 2.4.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,26 +16,25 @@ 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
23
- Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3 :: Only
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: 3.14
28
27
  Classifier: Programming Language :: Python :: 3.15
29
- Classifier: Programming Language :: Python :: 3 :: Only
30
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
31
29
  Classifier: Programming Language :: Python :: Implementation :: PyPy
30
+ Classifier: Programming Language :: Python :: Implementation :: GraalPy
32
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
33
32
  Classifier: Typing :: Typed
34
- Requires-Python: <4.0.0,>=3.10.0
33
+ Requires-Python: <4.0.0,>=3.11.0
35
34
  Description-Content-Type: text/x-rst; charset=UTF-8
36
35
  License-File: LICENSE
37
36
  Requires-Dist: typing-extensions>=4.15.0
38
- Requires-Dist: pkg-about>=2.2.0
37
+ Requires-Dist: pkg-about>=2.4.0
39
38
  Dynamic: license-file
40
39
 
41
40
  annotate
@@ -207,7 +206,7 @@ Installation
207
206
 
208
207
  Prerequisites:
209
208
 
210
- + Python 3.10 or higher
209
+ + Python 3.11 or higher
211
210
 
212
211
  * https://www.python.org/
213
212
 
@@ -167,7 +167,7 @@ Installation
167
167
 
168
168
  Prerequisites:
169
169
 
170
- + Python 3.10 or higher
170
+ + Python 3.11 or higher
171
171
 
172
172
  * https://www.python.org/
173
173
 
@@ -2,7 +2,7 @@
2
2
  # SPDX-License-Identifier: Zlib
3
3
 
4
4
  # /// script
5
- # dependencies = ["nox>=2026.2.9", "nox_ext", "nox_lib"]
5
+ # dependencies = ["nox>=2026.4.10", "nox_ext", "nox_lib"]
6
6
  # ///
7
7
 
8
8
  from __future__ import annotations
@@ -56,14 +56,14 @@ 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)
63
63
  rmtree(here/".tox")
64
64
  rmtree(here/".nox")
65
65
 
66
- @nox.session(python=[*PY_VERSIONS, "pypy3.10", "pypy3.11"])
66
+ @nox.session(python=[*PY_VERSIONS, "pypy3.11", "graalpy3.12"])
67
67
  def tests(session: nox.Session) -> None:
68
68
  """Running tests"""
69
69
  session.install(".", "--group=test")
@@ -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:
@@ -146,4 +151,6 @@ def typing(session: nox.Session) -> None:
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
+ env_dir = Path(session.virtualenv.location)
155
+ out_file = env_dir/"flake8out.txt"
156
+ session.py("-m", "flake8", "--output-file", out_file, here/"src/")
@@ -0,0 +1,227 @@
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.2.0" ]
7
+
8
+ [project]
9
+ name = "annotate"
10
+ version = "2.4.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.11.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.11",
37
+ "Programming Language :: Python :: 3.12",
38
+ "Programming Language :: Python :: 3.13",
39
+ "Programming Language :: Python :: 3.14",
40
+ "Programming Language :: Python :: 3.15",
41
+ "Programming Language :: Python :: Implementation :: CPython",
42
+ "Programming Language :: Python :: Implementation :: PyPy",
43
+ "Programming Language :: Python :: Implementation :: GraalPy",
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.4.0",
55
+ # others
56
+ ]
57
+
58
+ [dependency-groups]
59
+ base = [
60
+ "pip>=26.1.1; platform_python_implementation!='GraalVM'",
61
+ "pip>=24.3.1; platform_python_implementation=='GraalVM'",
62
+ "setuptools>=81.0.0",
63
+ ]
64
+ test = [
65
+ { include-group = "base" },
66
+ "deepdiff>=9.0.0",
67
+ "rich>=15.0.0",
68
+ ]
69
+ coverage = [
70
+ { include-group = "test" },
71
+ "coverage>=7.14.0",
72
+ "covdefaults>=2.3.0",
73
+ "diff-cover>=10.2.0",
74
+ ]
75
+ docs = [
76
+ { include-group = "base" },
77
+ "sphinx>=9.0.4",
78
+ "pygments_ansi_color>=0.3.0", # fix sphinx load error
79
+ "roman_numerals>=4.1.0", # -||-
80
+ "sphinx-autodoc-typehints>=3.6.1",
81
+ "sphinx-toolbox>=4.1.2",
82
+ "sphinx-tabs>=3.4.5", # Do not change - sphinx-toolbox requires <3.4.7
83
+ "sphinx-copybutton>=0.5.2",
84
+ "sphinxcontrib-spelling>=8.0.2",
85
+ "sphinx-lint>=1.0.2",
86
+ "restructuredtext-lint>=2.0.2",
87
+ "nbsphinx>=0.9.8",
88
+ ]
89
+ build = [
90
+ { include-group = "test" },
91
+ "check-manifest>=0.51",
92
+ "build>=1.5.0",
93
+ "twine>=6.2.0",
94
+ ]
95
+ publish = [
96
+ "twine>=6.2.0",
97
+ ]
98
+ typing = [
99
+ { include-group = "base" },
100
+ "mypy>=2.1.0",
101
+ "mypy_extensions>=1.1.0",
102
+ "types-setuptools>=81.0.0.20260209",
103
+ ]
104
+ lint = [
105
+ { include-group = "test" },
106
+ "flake8>=7.3.0",
107
+ "flake8-in-file-ignores>=0.3.0",
108
+ "flake8-pyproject>=1.2.4",
109
+ "flake8-docstrings>=1.7.0",
110
+ "pep8-naming>=0.15.1",
111
+ "flake8-builtins>=3.1.0",
112
+ "flake8-deprecated>=2.3.0",
113
+ ]
114
+
115
+ [tool.setuptools]
116
+ dynamic.readme = { file = [ "README.rst" ], content-type = "text/x-rst; charset=UTF-8" }
117
+ include-package-data = true
118
+ platforms = [ "any" ]
119
+ zip-safe = true
120
+ packages.find.namespaces = false
121
+ packages.find.where = [ "src" ]
122
+ package-dir."" = "src"
123
+ # package-dir."annotate.tests" = "tests"
124
+ package-data.annotate = [
125
+ ]
126
+ exclude-package-data."*" = [
127
+ "*.c", "*.h",
128
+ "*.cpp", "*.hpp",
129
+ "*.cxx", "*.hxx",
130
+ "*.pyx", "*.pxd",
131
+ ]
132
+ exclude-package-data.annotate = [
133
+ ]
134
+
135
+ [tool.coverage]
136
+ # run
137
+ run.source = [
138
+ "annotate",
139
+ "tests",
140
+ ]
141
+ run.omit = [
142
+ "**/tests/tman_*.py",
143
+ ]
144
+ run.branch = true
145
+ run.plugins = [ "covdefaults" ]
146
+ # report
147
+ report.exclude_also = [
148
+ # Regexes
149
+ # Have to re-enable the standard pragma
150
+ '^\s*if\s+self\.debug\s*:',
151
+ '^\s*if\s+__debug__\s*:',
152
+ '^\s*if\s+(0|False|None)\s*:',
153
+ '''if\s+__name__.*\s*==\s*['"]__main__['"]\s*:''',
154
+ '^\s*@unittest\.skip\s*\(',
155
+ '''^\s*@unittest\.skipIf\s*\(\s*sys\.platform\.startswith\s*\(\s*['"]win['"]\s*\)''',
156
+ '^\s*@unittest\.skipIf\s*\(\s*is_windows\s*,',
157
+ '^\s*@unittest\.skipIf\s*\(\s*is_cpython\s*,',
158
+ '\s*if\s+typing\.TYPE_CHECKING\s*:',
159
+ ]
160
+ report.omit = [
161
+ "tests/run.py",
162
+ ]
163
+ report.skip_covered = false
164
+
165
+ [tool.flake8]
166
+ filename = [ "*.py", "*.pyx" ]
167
+ # include = [ "tests" ]
168
+ # exclude = [ ".nox", ".tox", "*.egg", ".git", "__pycache__",
169
+ # "build", "_build", "docs/_build", "dist" ]
170
+ exclude = [ "_vendor" ]
171
+ max-line-length = 99
172
+ ignore = [
173
+ # pycodestyle error and warning codes
174
+ "E126", # Continuation line over-indented for hanging indent
175
+ "E203", # Whitespace before ",", ";", or ":"
176
+ "E221", # Multiple spaces before operator
177
+ "E251", # Unexpected spaces around keyword / parameter equals
178
+ "E302", # Expected 2 blank lines, found 0
179
+ "E701", # Multiple statements on one line (colon)
180
+ "E702", # Multiple statements on one line (semicolon)
181
+ "E731", # Do not assign a lambda expression, use a def
182
+ "E122", # Continuation line missing indentation or outdented
183
+ "E127", # Continuation line over-indented for visual indent
184
+ "E128", # Continuation line under-indented for visual indent
185
+ "E222", # Multiple spaces after operator
186
+ "E272", # Multiple spaces before keyword
187
+ "E241", # Multiple spaces after ","
188
+ "E266", # Too many leading "#" for block comment
189
+ "E226", # Missing whitespace around arithmetic operator
190
+ "W503", # Line break occurred before a binary operator
191
+ # pydocstyle error and warning codes
192
+ "D100", # Missing docstring in public module
193
+ "D101", # Missing docstring in public class
194
+ "D102", # Missing docstring in public method
195
+ "D103", # Missing docstring in public function
196
+ "D104", # Missing docstring in public package
197
+ "D202", # No blank lines allowed after function docstring
198
+ "D400", # First line should end with a period
199
+ "D401", # First line should be in imperative mood; try rephrasing
200
+ # pep8-naming error and warning codes
201
+ "N801", # Class names should use CapWords convention (class names)
202
+ "N802", # Function name should be lowercase (function names)
203
+ "N803", # Argument name should be lowercase (function arguments)
204
+ "N806", # Variable in function should be lowercase
205
+ # Other error and warning codes
206
+ "I100", # Your import statements are in the wrong order
207
+ ]
208
+ # (e.g. "E4", "W") default: "E121", "E123", "126", "226", "E24", "704"
209
+ # select = [ "E", "W", "F", "N", "I" ]
210
+ # show-source = true
211
+ # verbose = false
212
+ # quiet = true
213
+ count = true
214
+
215
+ [tool.mypy]
216
+ python_version = "3.11"
217
+ strict = true
218
+ sqlite_cache = true
219
+ warn_unused_configs = true
220
+ exclude_gitignore = true
221
+ install_types = true
222
+ non_interactive = true
223
+ pretty = true
224
+ check_untyped_defs = true
225
+ # ignore_missing_imports = true
226
+ files = [ "src" ]
227
+ # exclude = [ "docs/", "tests/" ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annotate
3
- Version: 2.2.0
3
+ Version: 2.4.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,26 +16,25 @@ 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
23
- Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3 :: Only
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: 3.14
28
27
  Classifier: Programming Language :: Python :: 3.15
29
- Classifier: Programming Language :: Python :: 3 :: Only
30
28
  Classifier: Programming Language :: Python :: Implementation :: CPython
31
29
  Classifier: Programming Language :: Python :: Implementation :: PyPy
30
+ Classifier: Programming Language :: Python :: Implementation :: GraalPy
32
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
33
32
  Classifier: Typing :: Typed
34
- Requires-Python: <4.0.0,>=3.10.0
33
+ Requires-Python: <4.0.0,>=3.11.0
35
34
  Description-Content-Type: text/x-rst; charset=UTF-8
36
35
  License-File: LICENSE
37
36
  Requires-Dist: typing-extensions>=4.15.0
38
- Requires-Dist: pkg-about>=2.2.0
37
+ Requires-Dist: pkg-about>=2.4.0
39
38
  Dynamic: license-file
40
39
 
41
40
  annotate
@@ -207,7 +206,7 @@ Installation
207
206
 
208
207
  Prerequisites:
209
208
 
210
- + Python 3.10 or higher
209
+ + Python 3.11 or higher
211
210
 
212
211
  * https://www.python.org/
213
212
 
@@ -1,2 +1,2 @@
1
1
  typing-extensions>=4.15.0
2
- pkg-about>=2.2.0
2
+ pkg-about>=2.4.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,206 +0,0 @@
1
- # Copyright (c) 2012 Adam Karpierz
2
- # SPDX-License-Identifier: Zlib
3
-
4
- [build-system]
5
- requires = ['setuptools>=81.0.0', 'packaging>=26.0.0']
6
- build-backend = 'setuptools.build_meta'
7
-
8
- [project]
9
- name = 'annotate'
10
- version = '2.2.0'
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.15',
41
- 'Programming Language :: Python :: 3 :: Only',
42
- 'Programming Language :: Python :: Implementation :: CPython',
43
- 'Programming Language :: Python :: Implementation :: PyPy',
44
- 'Topic :: Software Development :: Libraries :: Python Modules',
45
- 'Typing :: Typed',
46
- ]
47
- requires-python = '>=3.10.0,<4.0.0'
48
- dependencies = [
49
- # mandatory
50
- 'typing-extensions>=4.15.0',
51
- 'pkg-about>=2.2.0',
52
- # others
53
- ]
54
- dynamic = ['readme']
55
- #scripts.'annotate' = 'annotate.__main__:main'
56
- #gui-scripts.'annotate-gui' = 'annotate:main_gui'
57
- #entry-points.'annotate.magical'.epoint = 'annotate:main_epoint'
58
-
59
- [dependency-groups]
60
- base = [
61
- 'pip>=26.0.1',
62
- 'setuptools>=81.0.0',
63
- ]
64
- test = [
65
- { include-group = 'base' },
66
- 'deepdiff>=8.6.1',
67
- 'rich>=14.3.2',
68
- ]
69
- coverage = [
70
- { include-group = 'test' },
71
- 'coverage>=7.13.4',
72
- 'covdefaults>=2.3.0',
73
- 'diff-cover>=10.2.0',
74
- ]
75
- docs = [
76
- { include-group = 'base' },
77
- 'sphinx>=8.1.3',
78
- 'pygments_ansi_color>=0.3.0', # fix sphinx load error
79
- 'roman_numerals>=4.1.0', # -||-
80
- 'sphinx-autodoc-typehints>=3.0.1',
81
- 'sphinx-toolbox>=4.1.2',
82
- 'sphinx-tabs>=3.4.5', # Do not change - sphinx-toolbox requires <3.4.7
83
- 'sphinx-copybutton>=0.5.2',
84
- 'sphinxcontrib-spelling>=8.0.2',
85
- 'sphinx-lint>=1.0.2',
86
- 'restructuredtext-lint>=2.0.2',
87
- 'nbsphinx>=0.9.8',
88
- ]
89
- build = [
90
- { include-group = 'test' },
91
- 'check-manifest>=0.51',
92
- 'build>=1.4.0',
93
- 'twine>=6.2.0',
94
- ]
95
- publish = [
96
- 'twine>=6.2.0',
97
- ]
98
- typing = [
99
- { include-group = 'base' },
100
- 'mypy>=1.19.1',
101
- 'mypy_extensions>=1.1.0',
102
- 'types-setuptools>=81.0.0.20260209',
103
- ]
104
- lint = [
105
- { include-group = 'test' },
106
- 'flake8>=7.3.0',
107
- 'flake8-in-file-ignores>=0.3.0',
108
- 'flake8-pyproject>=1.2.4',
109
- 'flake8-docstrings>=1.7.0',
110
- 'pep8-naming>=0.15.1',
111
- 'flake8-builtins>=3.1.0',
112
- 'flake8-deprecated>=2.3.0',
113
- ]
114
-
115
- [tool.setuptools.dynamic]
116
- readme = { file = ['README.rst'], content-type = 'text/x-rst; charset=UTF-8' }
117
-
118
- [tool.setuptools]
119
- include-package-data = true
120
- platforms = ['any']
121
- zip-safe = true
122
-
123
- [tool.setuptools.packages.find]
124
- namespaces = false
125
- where = ['src']
126
-
127
- [tool.setuptools.package-dir]
128
- '' = 'src'
129
- #'annotate.tests' = 'tests'
130
-
131
- [tool.setuptools.package-data]
132
- annotate = [
133
- ]
134
-
135
- [tool.setuptools.exclude-package-data]
136
- '*' = ['*.c','*.h','*.cpp','*.hpp','*.cxx','*.hxx','*.pyx','*.pxd']
137
- annotate = [
138
- ]
139
-
140
- [tool.coverage]
141
- # run
142
- run.source = [
143
- 'annotate',
144
- 'tests',
145
- ]
146
- run.omit = [
147
- '**/tests/tman_*.py',
148
- ]
149
- run.branch = true
150
- run.data_file = '.nox/coverage/.coverage'
151
- run.plugins = ['covdefaults']
152
- # report
153
- report.exclude_also = [
154
- # Regexes
155
- # Have to re-enable the standard pragma
156
- '^\s*if\s+self\.debug\s*:',
157
- '^\s*if\s+__debug__\s*:',
158
- '^\s*if\s+(0|False)\s*:',
159
- '''if\s+__name__.*\s*==\s*['"]__main__['"]\s*:''',
160
- '^\s*@unittest\.skip\(',
161
- '^\s*@unittest\.skipIf\(sys\.platform\.startswith\("win"\)',
162
- '^\s*@unittest\.skipIf\(is_windows,',
163
- '^\s*@unittest\.skipIf\(is_cpython,',
164
- 'if typing.TYPE_CHECKING:',
165
- ]
166
- report.omit = [
167
- 'tests/run.py',
168
- ]
169
- report.skip_covered = false
170
- # html report
171
- html.directory = '.nox/coverage/.coverage.html'
172
-
173
- [tool.flake8]
174
- filename = ['*.py','*.pyx']
175
- #include = ['tests']
176
- #exclude = ['.nox','.tox','*.egg','.git','__pycache__','build','_build','docs/_build','dist']
177
- exclude = ['_vendor']
178
- max-line-length = 99
179
- ignore = ['E126','E203','E221','E251','E302','E701','E702','E731',
180
- 'E122','E127','E128','E222','E272','E241','E266','E226',
181
- 'D100','D101','D102','D103','D104','D400','D401','D202',
182
- 'N806','N802','N803','N801',
183
- 'I100','W503']
184
- # (e.g. 'E4','W') default: 'E121','E123','126','226','E24','704'
185
- #select =
186
- #select = ['E','W','F','N','I']
187
- output-file = '.nox/lint/flake8out.txt'
188
- count = true
189
- #show-pep8,
190
- #show-source
191
- #verbose
192
- #quiet
193
-
194
- [tool.mypy]
195
- python_version = '3.10'
196
- strict = true
197
- sqlite_cache = true
198
- warn_unused_configs = true
199
- exclude_gitignore = true
200
- install_types = true
201
- non_interactive = true
202
- pretty = true
203
- check_untyped_defs = true
204
- #ignore_missing_imports = true
205
- files = ['src']
206
- #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