python-corekit 0.1.0__py3-none-any.whl → 0.1.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.
@@ -89,9 +89,9 @@ class CryptoSettings(BaseModel):
89
89
  """
90
90
  Hashing configuration.
91
91
 
92
- ``salt`` has no default on purpose: the value that used to be hardcoded is
93
- in git history and must be treated as compromised, so hashing raises until
94
- one is supplied.
92
+ ``salt`` has no default on purpose. A salt shipped with a library is shared
93
+ by every install, which defeats the point of salting, so hashing raises
94
+ until one is supplied.
95
95
  """
96
96
 
97
97
  salt: str | None = None
@@ -1,7 +1,7 @@
1
1
  HASH_JOINER = ":"
2
2
  EMPTY_HASH = ""
3
3
 
4
- # NOTE: a hardcoded CRYPTO_SALT previously lived here and is still present in this
5
- # repository's git history. It must be considered compromised and must never be
6
- # reintroduced. The salt is now supplied through configuration -- see
7
- # `corekit.config.CorekitSettings.crypto_salt` and `corekit.crypto.hasher.Hasher`.
4
+ # There is deliberately no default salt. A salt shipped with a library is shared
5
+ # by every install, which defeats the purpose of salting. Supply one through
6
+ # configuration -- see `corekit.config.CorekitSettings.crypto_salt` and
7
+ # `corekit.crypto.hasher.Hasher`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-corekit
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Shared foundations for Python projects: logging, benchmarking, registries, FastAPI routers/handlers, data stores, and ETL
5
5
  Author: Steven Jacobsen
6
6
  License-Expression: MIT
@@ -47,14 +47,12 @@ Requires Python 3.11+.
47
47
  pip install python-corekit
48
48
  ```
49
49
 
50
- No credentials, no SSH key, no token — which means a project that depends on
51
- corekit can be cloned and built by anyone, including inside a Docker build.
50
+ The distribution is `python-corekit`; the import is `corekit`.
52
51
 
53
52
  Every dependency corekit needs is installed with it. There are no optional
54
53
  extras to remember, and no import that fails because something was left out.
55
54
 
56
- The distribution is `python-corekit`; the import is `corekit`. Pin a compatible
57
- release rather than tracking whatever is newest:
55
+ Pin a compatible release rather than tracking whatever is newest:
58
56
 
59
57
  ```
60
58
  python-corekit~=0.1.0
@@ -371,7 +369,8 @@ Imports go downward only.
371
369
 
372
370
  ```
373
371
  corekit/
374
- config.py constants.py
372
+ config/ settings, sources, loader
373
+ constants.py
375
374
 
376
375
  exceptions/ error types
377
376
 
@@ -404,13 +403,13 @@ layering deliberately.
404
403
  ## Development
405
404
 
406
405
  ```bash
407
- pip install -e ".[dev,all]"
406
+ pip install -e ".[dev]"
408
407
  pytest
409
408
  ruff format . && ruff check --fix .
410
409
  ```
411
410
 
412
- `tests/test_imports.py` imports every module in the package. Keep it passing:
413
- several modules were broken for months because nothing ever imported them.
411
+ `tests/test_imports.py` imports every module in the package, so a module that
412
+ nothing else happens to import still has to be importable.
414
413
 
415
414
  ## Licence
416
415
 
@@ -11,7 +11,7 @@ corekit/concurrency/thread_local.py,sha256=Kh_bWuHzUwJ2jUr0JUCxaUSdahpBt8HvOwpgg
11
11
  corekit/concurrency/worker.py,sha256=QAwgucT9tadelFmb8io7J509zpQqlOvByHcVUVpveAM,1969
12
12
  corekit/config/__init__.py,sha256=dw2Y2HvpHw1MXwLSVxdARGPYse9j6IteVN3q70c3Kic,1227
13
13
  corekit/config/loader.py,sha256=KeEAgN0ZPcOQOwjzPQBFZXhhSI1tw9VAiFRWylFTtGY,5041
14
- corekit/config/settings.py,sha256=-Bnaa-37TDhXTC3lYE8jCQpG-Lre3K9OZd0wR1cBUD4,4818
14
+ corekit/config/settings.py,sha256=Z-GB5Cj-gl23AbYT_3HHBfeWFXMQL9XX11p9gqWvcqk,4822
15
15
  corekit/config/sources.py,sha256=kdeji29XnEOaDGRctiwEfp7bKuA2jBYGbvAdVEs21KE,3923
16
16
  corekit/connections/__init__.py,sha256=MkQzfeh-0T-qNSLcA8ERHo61GOTpGzHm7s6HYh_pGIM,1090
17
17
  corekit/connections/connectable.py,sha256=d3ND7KZYXTw7iHHzmN3yvNGCzaDMI4S9kJHELdu4XV0,6525
@@ -31,7 +31,7 @@ corekit/connections/sql/migration/operations.py,sha256=iO3Qq4K3TBxS-K6I77w8BnIJ2
31
31
  corekit/connections/sql/migration/registry.py,sha256=_S3kFGJVGqwZFpy_ls3uYc9Q5yTODLmlpXF_GmMfTEY,6710
32
32
  corekit/connections/sql/migration/table.py,sha256=CpOkJl-4rcG2hTZYq-Yt7OvGTpVhVJ42IrubVO3BUvs,666
33
33
  corekit/crypto/__init__.py,sha256=dtu06iE3reJWRp99gOvV7QQ6iw5V8F7e4kU1CR8ppos,27
34
- corekit/crypto/constants.py,sha256=KALouS9fJKm5Ajk3Yco3aKyJ_LHHlJXWyPtLwwJTjiA,351
34
+ corekit/crypto/constants.py,sha256=0rSSEpVKi9kBeza6Tq-5XK4LoWhEUyhrkKdcidZUEnc,299
35
35
  corekit/crypto/enum.py,sha256=0csj06cATCYDPY_QTNy66j_hB16WCqcHg8tJOO0lMNU,212
36
36
  corekit/crypto/hasher.py,sha256=qiJgeUsI2EeRLRPRf7YPY3ylZkRx3ZXfzsUk5Wg9uW4,2930
37
37
  corekit/data/__init__.py,sha256=y3VOJJwL4WKYxJcWIQooqCBjGV0xNAl_nKIDQYthN5w,1845
@@ -118,8 +118,8 @@ corekit/utils/raise_exc.py,sha256=pcG5rHUd96S4dG1IzoiDn9QD3pWEDbVv5ra_vha_aoA,18
118
118
  corekit/utils/time.py,sha256=070yexi-nMqsMyx6yaTNPm5pvonsWUvJj8mheFwUR1c,536
119
119
  corekit/utils/validators.py,sha256=EBRSIpVhuw_B-hJ9UVQU7W-nzPP49EkUE3mXCLhH2YE,355
120
120
  corekit/utils/void.py,sha256=qMyZ2jRsaH7C8M9eGXqmIdRmSFeontnsH-T7rBiT2BY,186
121
- python_corekit-0.1.0.dist-info/licenses/LICENSE,sha256=357LYxbxAQZ95q5cV-8JK6j-KNgiE6AteRodjEsm-kE,1072
122
- python_corekit-0.1.0.dist-info/METADATA,sha256=w9mKWBP5THi7Fnvlhc6pGRxd12UkHCPlA3PTqsuTgww,12097
123
- python_corekit-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
124
- python_corekit-0.1.0.dist-info/top_level.txt,sha256=SDK4o8BoaI47E9tPbiNCbbWoc2y6N_wCjwnIEfr-GWI,8
125
- python_corekit-0.1.0.dist-info/RECORD,,
121
+ python_corekit-0.1.1.dist-info/licenses/LICENSE,sha256=357LYxbxAQZ95q5cV-8JK6j-KNgiE6AteRodjEsm-kE,1072
122
+ python_corekit-0.1.1.dist-info/METADATA,sha256=x6nMXzukrlJb_FTnRamfMiRtGa13ERzJJFG-38e0gzw,11972
123
+ python_corekit-0.1.1.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
124
+ python_corekit-0.1.1.dist-info/top_level.txt,sha256=SDK4o8BoaI47E9tPbiNCbbWoc2y6N_wCjwnIEfr-GWI,8
125
+ python_corekit-0.1.1.dist-info/RECORD,,