python-constricter 0.2.9__py3-none-any.whl → 0.3.1__py3-none-any.whl

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.
constricter/__init__.py CHANGED
@@ -25,7 +25,7 @@ from constricter.offences import (
25
25
  )
26
26
  from constricter.rules.checker import Coverage, annotation_coverage, check_source, check_tree
27
27
 
28
- __version__ = "0.2.9"
28
+ __version__ = "0.3.1"
29
29
  __all__ = [
30
30
  "COMMENT_TYPED_TARGET",
31
31
  "DEFAULT_CHECKS",
@@ -2,7 +2,7 @@
2
2
  """Standard-library calls whose arguments decide their type: the signatures a call may match.
3
3
 
4
4
  `tables/overloads.json` holds each such function's signatures, in order, as each platform and Python
5
- version reads them (see `tests/typeshed/overloads.py`): every parameter's kind, whether it has a
5
+ version reads them (see `stdlib_tables/overloads.py`): every parameter's kind, whether it has a
6
6
  default, and which argument types (`SCALARS`) it certainly takes or refuses; and the return, as a
7
7
  template naming classes by their dotted paths and type variables by their names.
8
8
 
@@ -31,6 +31,7 @@ from constricter.fix.signatures import (
31
31
  Constant,
32
32
  Parameter,
33
33
  ReadSignature,
34
+ Variant,
34
35
  )
35
36
  from constricter.rules.walked import walk
36
37
 
@@ -308,7 +309,7 @@ def _signatures(name: str) -> tuple[tuple[ReadSignature, ...], ...]:
308
309
  Each variant's signatures.
309
310
 
310
311
  """
311
- variants: list[stdlib.Variant] = stdlib.OVERLOADS.get(name) or stdlib.method_signatures()[name]
312
+ variants: list[Variant] = stdlib.OVERLOADS.get(name) or stdlib.method_signatures()[name]
312
313
  return tuple(
313
314
  tuple(
314
315
  ReadSignature(
@@ -1,12 +1,13 @@
1
1
  # SPDX-License-Identifier: MIT
2
2
  """The signatures `--fix` matches a call against: the standard library's tables', and installed packages'.
3
3
 
4
- What each parameter takes (`Accepts`) and the signature it's in (`ReadSignature`); see
5
- `constricter.fix.overloads`, which matches them, `constricter.fix.stdlib`, whose tables hold them,
6
- and `constricter.fix.stubbed`, which reads an installed package's.
4
+ What each parameter takes (`Accepts`), and a signature as the tables hold it (`Signature`) and as
5
+ it's matched (`ReadSignature`); see `constricter.fix.overloads`, which matches them,
6
+ `constricter.fix.stdlib`, whose tables hold them, and `constricter.fix.stubbed`, which reads an
7
+ installed package's.
7
8
  """
8
9
 
9
- from typing import Final, NamedTuple, Required, TypeAlias, TypedDict
10
+ from typing import Final, NamedTuple, NotRequired, Required, TypeAlias, TypedDict
10
11
 
11
12
  # `Accepts`' keys for an installed package's parameter (see `constricter.fix.stubbed`): a class passed
12
13
  # as the argument, and a builtin container.
@@ -58,6 +59,22 @@ class Accepts(TypedDict, total=False):
58
59
  Parameter: TypeAlias = tuple[str, str, bool, Accepts | None]
59
60
 
60
61
 
62
+ class Signature(TypedDict):
63
+ """One signature of a function whose arguments decide its type: its parameters, and its return.
64
+
65
+ The return is a template (see `constricter.fix.overloads`), or `None` if `--fix` can't write it.
66
+ `self`: for a generic class's method declaring its instance's type (`self: Pattern[str]`), the
67
+ type arguments that instance must have.
68
+ """
69
+
70
+ params: list[Parameter | str]
71
+ returns: str | None
72
+ self: NotRequired[list[str]]
73
+
74
+
75
+ Variant: TypeAlias = list[Signature] # one configuration's signatures, in order
76
+
77
+
61
78
  class ReadSignature(NamedTuple):
62
79
  """One signature, read: its parameters in full, its return template, and its `self`'s type arguments."""
63
80
 
constricter/fix/stdlib.py CHANGED
@@ -1,8 +1,8 @@
1
1
  # SPDX-License-Identifier: MIT
2
2
  """Standard-library functions and classes whose types `--fix` knows, and how a module names them.
3
3
 
4
- The tables are generated from typeshed's stubs into `tables/`, one JSON file each (see
5
- `tests/typeshed/stdlib_tables.py`): `RETURNS` holds functions returning the same builtin type
4
+ The tables are generated from typeshed's stubs into `tables/` when the package is built, one JSON
5
+ file each (see `stdlib_tables/generate.py`): `RETURNS` holds functions returning the same builtin type
6
6
  whatever their arguments; `OVERLOADS` those whose arguments decide it (`str` in, `str` out;
7
7
  `bytes` in, `bytes` out), so they're typed only when those are known; `CLASSES` holds
8
8
  non-generic classes, and functions returning one; `library_member` types those classes' methods
@@ -18,29 +18,13 @@ from collections.abc import Iterable, Mapping
18
18
  from functools import cache, lru_cache
19
19
  from pathlib import Path
20
20
  from types import MappingProxyType
21
- from typing import Final, NamedTuple, NotRequired, TypeAlias, TypedDict, cast
21
+ from typing import Final, NamedTuple, TypeAlias, cast
22
22
 
23
23
  from constricter.fix.known import ImportPlan, Inference, Known
24
- from constricter.fix.signatures import Parameter
24
+ from constricter.fix.signatures import Variant
25
25
  from constricter.rules.syntax import import_bindings
26
26
 
27
27
 
28
- class Signature(TypedDict):
29
- """One signature of a function whose arguments decide its type: its parameters, and its return.
30
-
31
- The return is a template (see `constricter.fix.overloads`), or `None` if `--fix` can't write it.
32
- `self`: for a generic class's method declaring its instance's type (`self: Pattern[str]`), the
33
- type arguments that instance must have.
34
- """
35
-
36
- params: list[Parameter | str]
37
- returns: str | None
38
- self: NotRequired[list[str]]
39
-
40
-
41
- Variant: TypeAlias = list[Signature] # one configuration's signatures, in order
42
-
43
-
44
28
  def _table(name: str) -> object:
45
29
  """Read one of the tables (`tables/<name>.json`), plain JSON as generated.
46
30
 
@@ -1,4 +1,22 @@
1
1
  {
2
- "generator": "tests/typeshed/stdlib_tables.py",
2
+ "basedpyright": "1.40.1",
3
+ "digest": "4ccf811c7737d0379e2ccbd9a361889ae27ea04c1cc4ee0450f31ea3e2ef44ae",
4
+ "tables": [
5
+ "aliases",
6
+ "attributes",
7
+ "bases",
8
+ "classes",
9
+ "generic_attributes",
10
+ "method_overloads",
11
+ "method_signatures",
12
+ "methods",
13
+ "overloads",
14
+ "returns",
15
+ "scalar_members",
16
+ "scalars",
17
+ "subscriptable",
18
+ "type_parameters",
19
+ "variables"
20
+ ],
3
21
  "typeshed": "289e5d3568961c8bcd33d01eef5b7ec5e1ad33ad"
4
22
  }
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-constricter
3
- Version: 0.2.9
3
+ Version: 0.3.1
4
+ Import-Name: constricter
4
5
  Summary: Lint rules: every local variable is typed where it's first bound. A flake8 plugin, a pylint plugin and a standalone CLI.
5
6
  Author: Ivy Duggan
6
- Requires-Python: >=3.11
7
- Description-Content-Type: text/markdown
8
7
  License-Expression: MIT
8
+ License-File: LICENSE.md
9
9
  Classifier: Framework :: Flake8
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: Programming Language :: Python :: 3
@@ -18,12 +18,12 @@ Classifier: Programming Language :: Python :: Implementation :: CPython
18
18
  Classifier: Programming Language :: Python :: Implementation :: PyPy
19
19
  Classifier: Topic :: Software Development :: Quality Assurance
20
20
  Classifier: Typing :: Typed
21
- License-File: LICENSE.md
22
- Requires-Dist: flake8>=7 ; extra == "flake8"
23
- Requires-Dist: pylint>=3 ; extra == "pylint"
21
+ Requires-Python: >=3.11
24
22
  Provides-Extra: flake8
23
+ Requires-Dist: flake8>=7; extra == 'flake8'
25
24
  Provides-Extra: pylint
26
- Import-Name: constricter
25
+ Requires-Dist: pylint>=3; extra == 'pylint'
26
+ Description-Content-Type: text/markdown
27
27
 
28
28
  # python-con`strict`er
29
29
 
@@ -264,7 +264,7 @@ pre-commit, after ruff's hooks (or `constricter-fix`, which runs `--fix` first):
264
264
 
265
265
  ```yaml
266
266
  - repo: https://github.com/ivylikethevine/python-constricter
267
- rev: v0.2.9
267
+ rev: v0.3.1
268
268
  hooks:
269
269
  - id: constricter
270
270
  ```
@@ -378,4 +378,3 @@ I have used generative AI to write large parts of this code. All of the code her
378
378
  _responsibility_ regardless: AI is a tool, not an owner of a project. I have personally understood,
379
379
  reviewed, and approved all of the AI-generated code in this repository, and **mainline releases**
380
380
  carry the same accountability to me as anything I write and publish myself.
381
-
@@ -1,88 +1,88 @@
1
- constricter/__init__.py,sha256=mQtrPf4jujSIHjWAKXATh5XzD6cFKHXL64OksbEH6V0,1097
2
- constricter/__main__.py,sha256=8W9UU0DNnyT_QJ6hfpKTSz6zXyU3b3xGXrdIOXdUaWw,204
3
- constricter/jsonc.py,sha256=Hwj_1v-CYEaTdzjHKWpXZvKXwKDfcCEl-p97ysI9zww,1538
4
- constricter/noqa.py,sha256=tdgfzQNGr7dqPbScyNXMwZnwMsGoglcUx_xv67Q7Dh4,1303
5
- constricter/notebook.py,sha256=xvayO0bpm4Z3Y3hGJoGH5PEuTshS8gUrApuk4WwIyzA,4059
6
- constricter/offences.py,sha256=XqGc1X5f-oolqWaMRWfr3uN5tJ3hyqVxPLFUfwbWc8Y,11124
7
- constricter/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- constricter/cli/__init__.py,sha256=_QW0SXDH9Pvp-uYoCVrVrKWEElgmkpyZRN7fAIFGBxg,135
9
- constricter/cli/baseline.py,sha256=PpOM-M3I8T3BECzNgYkLgSp16nLzX8J0S82pwTb1tW0,3401
10
- constricter/cli/collecting.py,sha256=no5z4JsSP4Xxv4Kz_dqtzk6ipeoc-UTGYWN5admeLus,1548
11
- constricter/cli/command.py,sha256=DCf2CQOhTqPWLEV6fmQoXEoLSoEVzwwpqx8u3bYbAs8,24646
12
- constricter/cli/config.py,sha256=VtoarJg_Lf6YYR-_zybrml3GgNQzuKbikocquPEMy3c,7531
13
- constricter/cli/explain.py,sha256=j7Utx1NW_1rp0GOp2ekSP3D10qGuoNghD7PC6SRVSrA,4756
14
- constricter/cli/guard.py,sha256=EAZbV4ptkwtF9pVjJolAGBJLjHwTN8m1vQfHqj6B4eU,5155
15
- constricter/cli/hints.py,sha256=nGri6Blbs5of1umZ4be2A4_fYQ401JmwyR2h_vL2sMg,30056
16
- constricter/cli/options.py,sha256=_ficxe8qZ5oKu0UT6jOmQ6csq5X11cvRDnJhqHmMbgk,19904
17
- constricter/cli/paths.py,sha256=uJYolDxFeO5TMbebQdb3846S8TTkOjYMy4sG10DJjb4,2902
18
- constricter/cli/protocol.py,sha256=bTl7TahS19BPmYc5wwOkfVsymjc59ee8yQEC7tqbDC0,5471
19
- constricter/cli/report.py,sha256=xiExXf0D7M9RSx0GX0iZblL0-dpfSiR1wdfkVxLlwoE,13068
20
- constricter/cli/runs.py,sha256=tyQ4y43FRS7EAkpzYT8jgVtfgEFokt6yputD68ekdJ0,1426
21
- constricter/cli/schedule.py,sha256=ZKVx7i6F49ax1ni_CkWicFPhgEQ3YurLqBO87X2k70o,9366
22
- constricter/cli/workers.py,sha256=YsYi83F5WWG1Oq406KA_66PuR75477PMzkXiqslKrbo,5343
23
- constricter/fix/__init__.py,sha256=SCTkCs1rX6IhG1ubkKfP3Kt8yzWi48Y3N43tfhX1hJY,110
24
- constricter/fix/atoms.py,sha256=5nh_kJ_fZ_rraO0z15CQV9AdNj7HdMbK5emsSoAz4fA,14068
25
- constricter/fix/callers.py,sha256=dQM7L5lficT4a0iY5_H7nB1kq9ILwSHSALheKRd8eyM,6475
26
- constricter/fix/classnames.py,sha256=4hvh3s6Nqs83exDmSjN_PWEVgf7xDwpenXTyQ0xSCHU,3891
27
- constricter/fix/declared.py,sha256=IdptHbGJwRb8nIP5JX8JvL0aTsgu9fd5Eae1zwn2Wpo,16356
28
- constricter/fix/doubts.py,sha256=v6scCI-xT3TH_MjxX7VnIh47SvKIcXLpJhaYar1_0HA,14827
29
- constricter/fix/fills.py,sha256=dZxjE1cnOwBwJJsIzPlk0X5EsPGQzWYpHeK3VtXxTUU,8320
30
- constricter/fix/fixes.py,sha256=46IcX9AGFGZGBXfi5GSM9zQySBd7LD9TuDvcchent5k,9596
31
- constricter/fix/guesses.py,sha256=nZzE8por7dqUxBgRa-h1eD485WGrZMT7Psws9VYbqdo,10577
32
- constricter/fix/hinted.py,sha256=N4i2SHE7PVen4RV4FF_M4wePInmEyDVWho5_snD4nQ4,9465
33
- constricter/fix/imports.py,sha256=ye7mCG177vBoYZ6zVwUaLilSZF65Fch-Zn6lkupJXFg,7361
34
- constricter/fix/inference.py,sha256=alTv5XEFFVDj2VndMMBS60_Y9cQnwR-yGBwGAu3NDw8,30083
35
- constricter/fix/installed.py,sha256=6X71GgOBTW1rDuVnNQeSMDImINm1stn7IMMaIZifDqE,11225
36
- constricter/fix/known.py,sha256=JOIp85kzCcE22FWS-iV19LH12_LKzdFkLUI5U0UKo-M,15116
37
- constricter/fix/library.py,sha256=RjjUEx_L-jJPjfDqGxGrem6lG3aCJjIwMQQKcfFN-Q4,6583
38
- constricter/fix/members.py,sha256=BOMw2BPKOLt1RVM7bFwWjjBk4cDj8IIW5uQ6AJ3GBEo,7867
39
- constricter/fix/modules.py,sha256=3ll1NWJHnsCdoUad8X42S6k2v2UMDRSMJBWvqMBH21Y,13090
40
- constricter/fix/narrowed.py,sha256=08Xxu3mQwa079Xtn2mlbibOUYmF60vEFdrf4Os6DQtw,6392
41
- constricter/fix/opened.py,sha256=dryz9xqHHA8JjaZ6clgURc0TuSdqSYOypK4eC1SgUOM,2838
42
- constricter/fix/order.py,sha256=6m3u2B9qWNmlUb3XIgK78oUcq3TB_F8AoPzh8DfjNRE,5669
43
- constricter/fix/overloads.py,sha256=MZZNfOVBl4ZeLEws23ejEGJP27Q4jJYZnmSiwFl8zrE,32278
44
- constricter/fix/project.py,sha256=Jiq7E2eWMu3XVEKFypjGuCaCuiSjILR8SXgkeFxbJRg,27266
45
- constricter/fix/returned.py,sha256=iSM5FfXG6u9R7ilsC38x3GC-kAlJUGxbXMmE2IJ-dAw,26643
46
- constricter/fix/returns.py,sha256=V78jfM4KSaL63ORAFVQc1ofMSfqmTZPJUC9xtuBz5ks,5825
47
- constricter/fix/signatures.py,sha256=B8yTGFvE3n7GmGU4uKSrWetFmoniqR020COA6E3CUWk,4033
48
- constricter/fix/stdlib.py,sha256=dnp8HVV4tF7apSOTvGJXmIyNlXUSEx7ikcrvIgfLi5I,16479
49
- constricter/fix/stubbed.py,sha256=R8rtaKFzfHVoJ-oWMByDTLfQoqS57aUvo4W6fpAgf9o,41517
50
- constricter/fix/targets.py,sha256=EOUVpweIztUeNfATynqP0cf6-GFdJ14gWIAyF3-1HLk,6807
51
- constricter/fix/tables/aliases.json,sha256=B0z0jHMjMyTFqudH6jRjNrc4ha8El7ENUXko-q3EmZk,8642
52
- constricter/fix/tables/attributes.json,sha256=QJhBJHIHcmgCAABd4ZgzgIo35qd1zpG3Yv3IzWgkKZE,74250
53
- constricter/fix/tables/bases.json,sha256=SNQQIfW5NIJBOWkxUEk0VF0iOZWHCnBKkBHUjjjIDMM,62580
54
- constricter/fix/tables/classes.json,sha256=v47giHv4wIa3mXEWAY_9NovTeSXjnXVm0QePd7OWyIg,105709
55
- constricter/fix/tables/generic_attributes.json,sha256=WLjAfT1vTSQWV7YaL8Sftsse-s9FWm6B-_2-Dvpt-zc,5353
56
- constricter/fix/tables/method_overloads.json,sha256=tGfTYFDfDtHKyR2nnR-Jd_drFo1i2rvOOwmI-17jm5s,48979
57
- constricter/fix/tables/method_signatures.json,sha256=Y9uaZk0JYhbqzxDUNl_ME5SVX-pJEaL8a7LYw9jkeC8,138742
58
- constricter/fix/tables/methods.json,sha256=zWChMqQDYvBN6xrEQSdAfqLb4UZAeucEB6kPrVG2HUs,99266
59
- constricter/fix/tables/overloads.json,sha256=xsd6gVvBz9sVhgZZySX_rFGHZlfDXsxkY3wjtjN4abs,188102
60
- constricter/fix/tables/returns.json,sha256=7IbqCy7QRMo0CD2PCLoLXoYpWMojqFa4zrL7voXWIp4,43372
61
- constricter/fix/tables/scalar_members.json,sha256=51_Hembsusz-cObxoKchowTAe0q2bDpwUJOnnfztqgw,10230
62
- constricter/fix/tables/scalars.json,sha256=4AxWKrLjTA2I4mZBTrvyRYnfys5wv84D3SP7lFj82HU,122271
63
- constricter/fix/tables/source.json,sha256=S7alszM6BOIivv5zk38ZQWANUkNum_4hG0ls0BksNJM,107
64
- constricter/fix/tables/subscriptable.json,sha256=2FG6JriS2ejw7EQIx_G8AaCqU-UrIosk0M9xxdo5euY,2328
65
- constricter/fix/tables/type_parameters.json,sha256=g0BiXqRgCYkFvmcQW4dgKCdlxbFULlnXaUThBr0lJ8g,6793
66
- constricter/fix/tables/variables.json,sha256=D1LqxfFY0UtPQnoHg8gSwn30OV-Db8ROPyDg6ZQhkPo,94084
67
- constricter/plugins/__init__.py,sha256=JEh8FoQRT-EqMDcG_JSN0HKVyekkorKHqSlnzACIXLk,123
68
- constricter/plugins/flake8.py,sha256=kUVCYMtUhMf-uRypkc54jjtXeyewWyvAVUdnp0Zv070,4762
69
- constricter/plugins/pylint.py,sha256=TL3vVklFd-g-AmZZMwigGDpvVDMmHJKIjiMyNHBGuUg,5961
70
- constricter/rules/__init__.py,sha256=bw2jf6HJXfJUK8j-_m-Wyv7stsZS7n5kMQ8qkikQHQA,100
71
- constricter/rules/annotations.py,sha256=_aQtOQ08hpd3DHzYRfX6bqwjbzHqvbN2E1mNxBkD-Kw,24110
72
- constricter/rules/binding.py,sha256=CKosb_BP_-MOFUxFBGF1CiLvpr6SoF_8B2_vNDrukRs,10627
73
- constricter/rules/calls.py,sha256=CK4eekj6t-Wq3qt2-OhalLUCtXM2XNXHywbUKlJZGJA,8504
74
- constricter/rules/checker.py,sha256=9LdTZmkHZE0BOWj7Md6LNYLLtKSwpu5M7-5zu-iRZQw,28543
75
- constricter/rules/flow.py,sha256=7dXMNVjg2w3pGUC23gWcHFewow-_R00WxAGJpBzCeF0,19187
76
- constricter/rules/late.py,sha256=QXpDjy_apzZqmNtWZnsNeuSRgxramQdvuq3YHy4zCIc,11712
77
- constricter/rules/narrowing.py,sha256=GA4dV_7gfXY2uPCUw5ly9gjI9nQvrYKYWOVwS9dMqWk,3950
78
- constricter/rules/parsed.py,sha256=oxmtOygupwim0tjnXNhUNqfZJfvvOxLdmNGk4LI9uSQ,3376
79
- constricter/rules/rebinding.py,sha256=BNkDDZp27_2RrGZuX3pQrRXDO5AeXStJ-Gy6JX0rGzo,5565
80
- constricter/rules/redundant.py,sha256=2p0Lj4OQpdwOhDqIaIDQBEplPMLr9k6XzQBDLbJr8vs,5467
81
- constricter/rules/scope.py,sha256=7qYrXvEQeAhkwJHFpchdhFGXBaaLVF05u2gMTEsDdF8,26500
82
- constricter/rules/syntax.py,sha256=PQkmNjAT5m7eCvfrySmoWkShXgo03sWpmhjVoKVaCng,11551
83
- constricter/rules/walked.py,sha256=GLym2Hn5xVUC_v_mdKd9Ikd12ladUZ2cWln1vmhozw0,4838
84
- python_constricter-0.2.9.dist-info/entry_points.txt,sha256=U22c0Qr3YH-Jd_PwOrkmFO2WznxDZ0BtpBUC5zeA__E,130
85
- python_constricter-0.2.9.dist-info/licenses/LICENSE.md,sha256=Ph1ZLRjkD-wFIE55wif1JqgQ7cZe6hQDgMHILsJnA0g,1069
86
- python_constricter-0.2.9.dist-info/WHEEL,sha256=lqN8jXt_QloFOGcx9kStvWbryhfEXoI2F2z-YURm350,81
87
- python_constricter-0.2.9.dist-info/METADATA,sha256=l675TZe8GnjzydEMLWzzNz8tC1Mma57jLc6jZrh2WBs,28511
88
- python_constricter-0.2.9.dist-info/RECORD,,
1
+ constricter/__init__.py,sha256=EcrHncwW7III2GqDwkAhzPFKJRBL5ev_nM7L-9WDuSo,1097
2
+ constricter/__main__.py,sha256=8W9UU0DNnyT_QJ6hfpKTSz6zXyU3b3xGXrdIOXdUaWw,204
3
+ constricter/jsonc.py,sha256=Hwj_1v-CYEaTdzjHKWpXZvKXwKDfcCEl-p97ysI9zww,1538
4
+ constricter/noqa.py,sha256=tdgfzQNGr7dqPbScyNXMwZnwMsGoglcUx_xv67Q7Dh4,1303
5
+ constricter/notebook.py,sha256=xvayO0bpm4Z3Y3hGJoGH5PEuTshS8gUrApuk4WwIyzA,4059
6
+ constricter/offences.py,sha256=XqGc1X5f-oolqWaMRWfr3uN5tJ3hyqVxPLFUfwbWc8Y,11124
7
+ constricter/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ constricter/cli/__init__.py,sha256=_QW0SXDH9Pvp-uYoCVrVrKWEElgmkpyZRN7fAIFGBxg,135
9
+ constricter/cli/baseline.py,sha256=PpOM-M3I8T3BECzNgYkLgSp16nLzX8J0S82pwTb1tW0,3401
10
+ constricter/cli/collecting.py,sha256=no5z4JsSP4Xxv4Kz_dqtzk6ipeoc-UTGYWN5admeLus,1548
11
+ constricter/cli/command.py,sha256=DCf2CQOhTqPWLEV6fmQoXEoLSoEVzwwpqx8u3bYbAs8,24646
12
+ constricter/cli/config.py,sha256=VtoarJg_Lf6YYR-_zybrml3GgNQzuKbikocquPEMy3c,7531
13
+ constricter/cli/explain.py,sha256=j7Utx1NW_1rp0GOp2ekSP3D10qGuoNghD7PC6SRVSrA,4756
14
+ constricter/cli/guard.py,sha256=EAZbV4ptkwtF9pVjJolAGBJLjHwTN8m1vQfHqj6B4eU,5155
15
+ constricter/cli/hints.py,sha256=nGri6Blbs5of1umZ4be2A4_fYQ401JmwyR2h_vL2sMg,30056
16
+ constricter/cli/options.py,sha256=_ficxe8qZ5oKu0UT6jOmQ6csq5X11cvRDnJhqHmMbgk,19904
17
+ constricter/cli/paths.py,sha256=uJYolDxFeO5TMbebQdb3846S8TTkOjYMy4sG10DJjb4,2902
18
+ constricter/cli/protocol.py,sha256=bTl7TahS19BPmYc5wwOkfVsymjc59ee8yQEC7tqbDC0,5471
19
+ constricter/cli/report.py,sha256=xiExXf0D7M9RSx0GX0iZblL0-dpfSiR1wdfkVxLlwoE,13068
20
+ constricter/cli/runs.py,sha256=tyQ4y43FRS7EAkpzYT8jgVtfgEFokt6yputD68ekdJ0,1426
21
+ constricter/cli/schedule.py,sha256=ZKVx7i6F49ax1ni_CkWicFPhgEQ3YurLqBO87X2k70o,9366
22
+ constricter/cli/workers.py,sha256=YsYi83F5WWG1Oq406KA_66PuR75477PMzkXiqslKrbo,5343
23
+ constricter/fix/__init__.py,sha256=SCTkCs1rX6IhG1ubkKfP3Kt8yzWi48Y3N43tfhX1hJY,110
24
+ constricter/fix/atoms.py,sha256=5nh_kJ_fZ_rraO0z15CQV9AdNj7HdMbK5emsSoAz4fA,14068
25
+ constricter/fix/callers.py,sha256=dQM7L5lficT4a0iY5_H7nB1kq9ILwSHSALheKRd8eyM,6475
26
+ constricter/fix/classnames.py,sha256=4hvh3s6Nqs83exDmSjN_PWEVgf7xDwpenXTyQ0xSCHU,3891
27
+ constricter/fix/declared.py,sha256=IdptHbGJwRb8nIP5JX8JvL0aTsgu9fd5Eae1zwn2Wpo,16356
28
+ constricter/fix/doubts.py,sha256=v6scCI-xT3TH_MjxX7VnIh47SvKIcXLpJhaYar1_0HA,14827
29
+ constricter/fix/fills.py,sha256=dZxjE1cnOwBwJJsIzPlk0X5EsPGQzWYpHeK3VtXxTUU,8320
30
+ constricter/fix/fixes.py,sha256=46IcX9AGFGZGBXfi5GSM9zQySBd7LD9TuDvcchent5k,9596
31
+ constricter/fix/guesses.py,sha256=nZzE8por7dqUxBgRa-h1eD485WGrZMT7Psws9VYbqdo,10577
32
+ constricter/fix/hinted.py,sha256=N4i2SHE7PVen4RV4FF_M4wePInmEyDVWho5_snD4nQ4,9465
33
+ constricter/fix/imports.py,sha256=ye7mCG177vBoYZ6zVwUaLilSZF65Fch-Zn6lkupJXFg,7361
34
+ constricter/fix/inference.py,sha256=alTv5XEFFVDj2VndMMBS60_Y9cQnwR-yGBwGAu3NDw8,30083
35
+ constricter/fix/installed.py,sha256=6X71GgOBTW1rDuVnNQeSMDImINm1stn7IMMaIZifDqE,11225
36
+ constricter/fix/known.py,sha256=JOIp85kzCcE22FWS-iV19LH12_LKzdFkLUI5U0UKo-M,15116
37
+ constricter/fix/library.py,sha256=RjjUEx_L-jJPjfDqGxGrem6lG3aCJjIwMQQKcfFN-Q4,6583
38
+ constricter/fix/members.py,sha256=BOMw2BPKOLt1RVM7bFwWjjBk4cDj8IIW5uQ6AJ3GBEo,7867
39
+ constricter/fix/modules.py,sha256=3ll1NWJHnsCdoUad8X42S6k2v2UMDRSMJBWvqMBH21Y,13090
40
+ constricter/fix/narrowed.py,sha256=08Xxu3mQwa079Xtn2mlbibOUYmF60vEFdrf4Os6DQtw,6392
41
+ constricter/fix/opened.py,sha256=dryz9xqHHA8JjaZ6clgURc0TuSdqSYOypK4eC1SgUOM,2838
42
+ constricter/fix/order.py,sha256=6m3u2B9qWNmlUb3XIgK78oUcq3TB_F8AoPzh8DfjNRE,5669
43
+ constricter/fix/overloads.py,sha256=PPdZnr6VgT4m6xYJuhXBlj1zkf5PVPs3cBfkD2EQLFA,32283
44
+ constricter/fix/project.py,sha256=Jiq7E2eWMu3XVEKFypjGuCaCuiSjILR8SXgkeFxbJRg,27266
45
+ constricter/fix/returned.py,sha256=iSM5FfXG6u9R7ilsC38x3GC-kAlJUGxbXMmE2IJ-dAw,26643
46
+ constricter/fix/returns.py,sha256=V78jfM4KSaL63ORAFVQc1ofMSfqmTZPJUC9xtuBz5ks,5825
47
+ constricter/fix/signatures.py,sha256=FSzzisKNZS6Z0WMJGUZ_AqV4e25I4OQ1_49HsJqnBVo,4651
48
+ constricter/fix/stdlib.py,sha256=0NTOhDmvnfyymSm_bJsYvHiFDqnlQbRN3e13bS-3TKg,15915
49
+ constricter/fix/stubbed.py,sha256=R8rtaKFzfHVoJ-oWMByDTLfQoqS57aUvo4W6fpAgf9o,41517
50
+ constricter/fix/targets.py,sha256=EOUVpweIztUeNfATynqP0cf6-GFdJ14gWIAyF3-1HLk,6807
51
+ constricter/fix/tables/aliases.json,sha256=B0z0jHMjMyTFqudH6jRjNrc4ha8El7ENUXko-q3EmZk,8642
52
+ constricter/fix/tables/attributes.json,sha256=QJhBJHIHcmgCAABd4ZgzgIo35qd1zpG3Yv3IzWgkKZE,74250
53
+ constricter/fix/tables/bases.json,sha256=SNQQIfW5NIJBOWkxUEk0VF0iOZWHCnBKkBHUjjjIDMM,62580
54
+ constricter/fix/tables/classes.json,sha256=v47giHv4wIa3mXEWAY_9NovTeSXjnXVm0QePd7OWyIg,105709
55
+ constricter/fix/tables/generic_attributes.json,sha256=WLjAfT1vTSQWV7YaL8Sftsse-s9FWm6B-_2-Dvpt-zc,5353
56
+ constricter/fix/tables/method_overloads.json,sha256=tGfTYFDfDtHKyR2nnR-Jd_drFo1i2rvOOwmI-17jm5s,48979
57
+ constricter/fix/tables/method_signatures.json,sha256=Y9uaZk0JYhbqzxDUNl_ME5SVX-pJEaL8a7LYw9jkeC8,138742
58
+ constricter/fix/tables/methods.json,sha256=zWChMqQDYvBN6xrEQSdAfqLb4UZAeucEB6kPrVG2HUs,99266
59
+ constricter/fix/tables/overloads.json,sha256=xsd6gVvBz9sVhgZZySX_rFGHZlfDXsxkY3wjtjN4abs,188102
60
+ constricter/fix/tables/returns.json,sha256=7IbqCy7QRMo0CD2PCLoLXoYpWMojqFa4zrL7voXWIp4,43372
61
+ constricter/fix/tables/scalar_members.json,sha256=51_Hembsusz-cObxoKchowTAe0q2bDpwUJOnnfztqgw,10230
62
+ constricter/fix/tables/scalars.json,sha256=4AxWKrLjTA2I4mZBTrvyRYnfys5wv84D3SP7lFj82HU,122271
63
+ constricter/fix/tables/source.json,sha256=5NU9zUTNQRQHDDhAZnmK7QqeWu81DKRrKT83oc7mGDs,398
64
+ constricter/fix/tables/subscriptable.json,sha256=2FG6JriS2ejw7EQIx_G8AaCqU-UrIosk0M9xxdo5euY,2328
65
+ constricter/fix/tables/type_parameters.json,sha256=g0BiXqRgCYkFvmcQW4dgKCdlxbFULlnXaUThBr0lJ8g,6793
66
+ constricter/fix/tables/variables.json,sha256=D1LqxfFY0UtPQnoHg8gSwn30OV-Db8ROPyDg6ZQhkPo,94084
67
+ constricter/plugins/__init__.py,sha256=JEh8FoQRT-EqMDcG_JSN0HKVyekkorKHqSlnzACIXLk,123
68
+ constricter/plugins/flake8.py,sha256=kUVCYMtUhMf-uRypkc54jjtXeyewWyvAVUdnp0Zv070,4762
69
+ constricter/plugins/pylint.py,sha256=TL3vVklFd-g-AmZZMwigGDpvVDMmHJKIjiMyNHBGuUg,5961
70
+ constricter/rules/__init__.py,sha256=bw2jf6HJXfJUK8j-_m-Wyv7stsZS7n5kMQ8qkikQHQA,100
71
+ constricter/rules/annotations.py,sha256=_aQtOQ08hpd3DHzYRfX6bqwjbzHqvbN2E1mNxBkD-Kw,24110
72
+ constricter/rules/binding.py,sha256=CKosb_BP_-MOFUxFBGF1CiLvpr6SoF_8B2_vNDrukRs,10627
73
+ constricter/rules/calls.py,sha256=CK4eekj6t-Wq3qt2-OhalLUCtXM2XNXHywbUKlJZGJA,8504
74
+ constricter/rules/checker.py,sha256=9LdTZmkHZE0BOWj7Md6LNYLLtKSwpu5M7-5zu-iRZQw,28543
75
+ constricter/rules/flow.py,sha256=7dXMNVjg2w3pGUC23gWcHFewow-_R00WxAGJpBzCeF0,19187
76
+ constricter/rules/late.py,sha256=QXpDjy_apzZqmNtWZnsNeuSRgxramQdvuq3YHy4zCIc,11712
77
+ constricter/rules/narrowing.py,sha256=GA4dV_7gfXY2uPCUw5ly9gjI9nQvrYKYWOVwS9dMqWk,3950
78
+ constricter/rules/parsed.py,sha256=oxmtOygupwim0tjnXNhUNqfZJfvvOxLdmNGk4LI9uSQ,3376
79
+ constricter/rules/rebinding.py,sha256=BNkDDZp27_2RrGZuX3pQrRXDO5AeXStJ-Gy6JX0rGzo,5565
80
+ constricter/rules/redundant.py,sha256=2p0Lj4OQpdwOhDqIaIDQBEplPMLr9k6XzQBDLbJr8vs,5467
81
+ constricter/rules/scope.py,sha256=7qYrXvEQeAhkwJHFpchdhFGXBaaLVF05u2gMTEsDdF8,26500
82
+ constricter/rules/syntax.py,sha256=PQkmNjAT5m7eCvfrySmoWkShXgo03sWpmhjVoKVaCng,11551
83
+ constricter/rules/walked.py,sha256=GLym2Hn5xVUC_v_mdKd9Ikd12ladUZ2cWln1vmhozw0,4838
84
+ python_constricter-0.3.1.dist-info/METADATA,sha256=obWd80uvxzzkPbr3UNMY565tyexQzZegJvY9D36ApoQ,28508
85
+ python_constricter-0.3.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
86
+ python_constricter-0.3.1.dist-info/entry_points.txt,sha256=nYHGyDqpdUYfb3SuOy-MTnnUB1NXDeVlsIaI94i_dDE,133
87
+ python_constricter-0.3.1.dist-info/licenses/LICENSE.md,sha256=Ph1ZLRjkD-wFIE55wif1JqgQ7cZe6hQDgMHILsJnA0g,1069
88
+ python_constricter-0.3.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 4.1.0
2
+ Generator: hatchling 1.32.4
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ constricter = constricter.cli.command:main
3
+
4
+ [flake8.extension]
5
+ LVA = constricter.plugins.flake8:ConstricterChecker
@@ -1,6 +0,0 @@
1
- [console_scripts]
2
- constricter=constricter.cli.command:main
3
-
4
- [flake8.extension]
5
- LVA=constricter.plugins.flake8:ConstricterChecker
6
-