classcore 1.6__tar.gz → 1.6.1__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 (24) hide show
  1. {classcore-1.6 → classcore-1.6.1}/PKG-INFO +1 -1
  2. {classcore-1.6 → classcore-1.6.1}/sources/classcore/__init__.py +1 -1
  3. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/modules.py +42 -3
  4. {classcore-1.6 → classcore-1.6.1}/.gitignore +0 -0
  5. {classcore-1.6 → classcore-1.6.1}/LICENSE.txt +0 -0
  6. {classcore-1.6 → classcore-1.6.1}/README.rst +0 -0
  7. {classcore-1.6 → classcore-1.6.1}/pyproject.toml +0 -0
  8. {classcore-1.6 → classcore-1.6.1}/sources/classcore/__/__init__.py +0 -0
  9. {classcore-1.6 → classcore-1.6.1}/sources/classcore/__/doctab.py +0 -0
  10. {classcore-1.6 → classcore-1.6.1}/sources/classcore/__/imports.py +0 -0
  11. {classcore-1.6 → classcore-1.6.1}/sources/classcore/__/nomina.py +0 -0
  12. {classcore-1.6 → classcore-1.6.1}/sources/classcore/decorators.py +0 -0
  13. {classcore-1.6 → classcore-1.6.1}/sources/classcore/exceptions.py +0 -0
  14. {classcore-1.6 → classcore-1.6.1}/sources/classcore/factories.py +0 -0
  15. {classcore-1.6 → classcore-1.6.1}/sources/classcore/nomina.py +0 -0
  16. {classcore-1.6 → classcore-1.6.1}/sources/classcore/py.typed +0 -0
  17. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/__.py +0 -0
  18. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/__init__.py +0 -0
  19. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/behaviors.py +0 -0
  20. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/classes.py +0 -0
  21. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/decorators.py +0 -0
  22. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/dynadoc.py +0 -0
  23. {classcore-1.6 → classcore-1.6.1}/sources/classcore/standard/nomina.py +0 -0
  24. {classcore-1.6 → classcore-1.6.1}/sources/classcore/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: classcore
3
- Version: 1.6
3
+ Version: 1.6.1
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.6'
65
+ __version__ = '1.6.1'
66
66
 
67
67
 
68
68
  standard.finalize_module(
@@ -81,7 +81,7 @@ def finalize_module( # noqa: PLR0913
81
81
  *fragments,
82
82
  introspection = introspection,
83
83
  table = dynadoc_table )
84
- reclassify_modules(
84
+ _reclassify_module(
85
85
  module,
86
86
  attributes_namer = attributes_namer,
87
87
  recursive = recursive,
@@ -108,7 +108,6 @@ def reclassify_modules(
108
108
  __.ddoc.Doc( ''' New class for module. ''' ),
109
109
  ] = Module,
110
110
  ) -> None:
111
- # TODO? Ensure correct operation with namespace packages.
112
111
  ''' Reclassifies modules to have attributes concealment and immutability.
113
112
 
114
113
  Can operate on individual modules or entire package hierarchies.
@@ -121,6 +120,46 @@ def reclassify_modules(
121
120
 
122
121
  Has no effect on already-reclassified modules.
123
122
  '''
123
+ _reclassify_module(
124
+ attributes,
125
+ attributes_namer = attributes_namer,
126
+ recursive = recursive,
127
+ replacement_class = replacement_class )
128
+
129
+
130
+ def _reclassify_module(
131
+ attributes: __.typx.Annotated[
132
+ __.cabc.Mapping[ str, __.typx.Any ] | __.types.ModuleType | str,
133
+ __.ddoc.Doc(
134
+ ''' Module, module name, or dictionary of object attributes. ''' ),
135
+ ], /, *,
136
+ attributes_namer: __.typx.Annotated[
137
+ _nomina.AttributesNamer,
138
+ __.ddoc.Doc(
139
+ ''' Attributes namer function with which to seal class. ''' ),
140
+ ] = __.calculate_attrname,
141
+ recursive: __.typx.Annotated[
142
+ bool, __.ddoc.Doc( ''' Recursively reclassify package modules? ''' )
143
+ ] = False,
144
+ replacement_class: __.typx.Annotated[
145
+ type[ __.types.ModuleType ],
146
+ __.ddoc.Doc( ''' New class for module. ''' ),
147
+ ] = Module,
148
+ ) -> None:
149
+ # TODO? Ensure correct operation with namespace packages.
150
+ ''' Core implementation for module reclassification.
151
+
152
+ Reclassifies modules to have attributes concealment and immutability.
153
+ Can operate on individual modules or entire package hierarchies.
154
+
155
+ Only converts modules within the same package to prevent unintended
156
+ modifications to external modules.
157
+
158
+ When used with a dictionary, converts any module objects found as
159
+ values if they belong to the same package.
160
+
161
+ Has no effect on already-reclassified modules.
162
+ '''
124
163
  if isinstance( attributes, str ):
125
164
  attributes = __.sys.modules[ attributes ]
126
165
  if isinstance( attributes, __.types.ModuleType ):
@@ -134,7 +173,7 @@ def reclassify_modules(
134
173
  if not __.inspect.ismodule( value ): continue
135
174
  if not value.__name__.startswith( f"{package_name}." ): continue
136
175
  if recursive:
137
- reclassify_modules(
176
+ _reclassify_module(
138
177
  value,
139
178
  attributes_namer = attributes_namer,
140
179
  recursive = True,
File without changes
File without changes
File without changes
File without changes