Module Reclassification¶
Purpose¶
The library SHALL apply immutability and concealment to module objects, enabling package-level API control and protection of module namespaces.
Requirements¶
Requirement: Single Module Reclassification¶
The reclassify_module function MUST apply immutability and concealment to
a single module object.
Scenario: Module attributes become immutable¶
WHEN
reclassify_moduleis applied to a moduleTHEN module attributes MUST become immutable
Scenario: Non-public module attributes concealed¶
WHEN
dir()is called on a reclassified moduleTHEN non-public attributes MUST NOT appear
Scenario: Public module API visible¶
WHEN
dir()is called on a reclassified moduleTHEN public attributes MUST appear
Requirement: Module Finalization¶
The finalize_module function MUST apply behaviors and dynadoc
configuration to complete module initialization.
Scenario: Finalized module has behaviors¶
WHEN
finalize_moduleis applied to a moduleTHEN the module MUST have immutability and concealment
Scenario: Finalized module has documentation¶
WHEN
finalize_moduleis applied to a moduleTHEN dynadoc configuration MUST be applied
Requirement: Recursive Application¶
Module reclassification MUST support recursive application to submodules.
Scenario: Recursive reclassification¶
WHEN
reclassify_modulesis called withrecursive=TrueTHEN all submodules MUST be reclassified
Requirement: Module Attribute Immutability¶
After reclassification, module attributes MUST NOT be modifiable.
Scenario: Assignment to reclassified module attribute¶
WHEN assignment is attempted on a reclassified module attribute
THEN an error MUST be raised
Requirement: Module Attribute Concealment¶
After reclassification, non-public module attributes MUST be concealed
from dir() output.
Scenario: Concealed module attribute¶
WHEN
dir()is called on a reclassified moduleTHEN attributes starting with
_MUST NOT appear (unless explicitly visible)