classcore 1.13__tar.gz → 1.14__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 (27) hide show
  1. {classcore-1.13 → classcore-1.14}/PKG-INFO +1 -1
  2. {classcore-1.13 → classcore-1.14}/sources/classcore/__init__.py +1 -1
  3. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/behaviors.py +11 -6
  4. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/nomina.py +4 -0
  5. {classcore-1.13 → classcore-1.14}/.gitignore +0 -0
  6. {classcore-1.13 → classcore-1.14}/LICENSE.txt +0 -0
  7. {classcore-1.13 → classcore-1.14}/README.rst +0 -0
  8. {classcore-1.13 → classcore-1.14}/pyproject.toml +0 -0
  9. {classcore-1.13 → classcore-1.14}/sources/classcore/README.md +0 -0
  10. {classcore-1.13 → classcore-1.14}/sources/classcore/__/__init__.py +0 -0
  11. {classcore-1.13 → classcore-1.14}/sources/classcore/__/doctab.py +0 -0
  12. {classcore-1.13 → classcore-1.14}/sources/classcore/__/imports.py +0 -0
  13. {classcore-1.13 → classcore-1.14}/sources/classcore/__/nomina.py +0 -0
  14. {classcore-1.13 → classcore-1.14}/sources/classcore/decorators.py +0 -0
  15. {classcore-1.13 → classcore-1.14}/sources/classcore/exceptions.py +0 -0
  16. {classcore-1.13 → classcore-1.14}/sources/classcore/factories.py +0 -0
  17. {classcore-1.13 → classcore-1.14}/sources/classcore/nomina.py +0 -0
  18. {classcore-1.13 → classcore-1.14}/sources/classcore/py.typed +0 -0
  19. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/README.md +0 -0
  20. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/__.py +0 -0
  21. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/__init__.py +0 -0
  22. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/classes.py +0 -0
  23. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/decorators.py +0 -0
  24. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/dynadoc.py +0 -0
  25. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/explanations.py +0 -0
  26. {classcore-1.13 → classcore-1.14}/sources/classcore/standard/modules.py +0 -0
  27. {classcore-1.13 → classcore-1.14}/sources/classcore/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: classcore
3
- Version: 1.13
3
+ Version: 1.14
4
4
  Summary: Foundational class factories and decorators.
5
5
  Project-URL: Homepage, https://github.com/emcd/python-classcore
6
6
  Project-URL: Documentation, https://emcd.github.io/python-classcore
@@ -62,7 +62,7 @@ from .factories import *
62
62
 
63
63
 
64
64
  __version__: __.typx.Annotated[ str, __.ddoc.Visibilities.Reveal ]
65
- __version__ = '1.13'
65
+ __version__ = '1.14'
66
66
 
67
67
 
68
68
  standard.finalize_module(
@@ -185,10 +185,15 @@ def render_verifier_text( verifier: __.typx.Any, / ) -> str:
185
185
  qualified name is available. Strings do not reach this
186
186
  function; they are classified as names before rendering. A
187
187
  non-string 'pattern' attribute is not trusted as text; such
188
- verifiers fall through to qualified-name rendering. Hostile
189
- metadata (raising descriptors, custom '__getattribute__')
190
- yields '<unrenderable>' rather than raising, so diagnostic
191
- rendering never disrupts its callers.
188
+ verifiers fall through to qualified-name rendering, where a
189
+ non-string qualified name falls back to '<anonymous>' while
190
+ a non-string module name preserves the qualified name.
191
+ Hostile metadata (raising descriptors, custom
192
+ '__getattribute__') yields '<unrenderable>' rather than
193
+ raising, so diagnostic rendering never disrupts its callers.
194
+ The broad 'except Exception' is deliberate: rendering is
195
+ diagnostics, and diagnostics must never break enforcement
196
+ or survey paths.
192
197
 
193
198
  Note: the inspect utilities were considered and rejected here;
194
199
  they resolve modules to objects and provide no qualified-name
@@ -501,8 +506,8 @@ def _render_verifier_text( verifier: __.typx.Any, / ) -> str:
501
506
  pattern = getattr( verifier, 'pattern', None )
502
507
  if isinstance( pattern, str ): return pattern
503
508
  qualname = getattr( verifier, '__qualname__', None )
504
- if qualname is None: return '<anonymous>'
509
+ if not isinstance( qualname, str ): return '<anonymous>'
505
510
  module = getattr( verifier, '__module__', None )
506
- if module is None or '<locals>' in qualname:
511
+ if not isinstance( module, str ) or '<locals>' in qualname:
507
512
  return qualname
508
513
  return f"{module}.{qualname}"
@@ -29,6 +29,10 @@ concealment_label = 'concealment'
29
29
  immutability_label = 'immutability'
30
30
 
31
31
 
32
+ abc_class_mutables = __.abc_class_mutables
33
+ typing_class_mutables = __.typing_class_mutables
34
+
35
+
32
36
  BehaviorExclusionNames: __.typx.TypeAlias = __.cabc.Set[ str ]
33
37
  BehaviorExclusionNamesOmni: __.typx.TypeAlias = (
34
38
  BehaviorExclusionNames | __.typx.Literal[ '*' ] )
File without changes
File without changes
File without changes
File without changes