U °atã@s@dZddlmZddlZdZeƒZdd„ZdZddgZ eƒdS) a¸ Publication helps you maintain public-api-friendly modules by preventing unintentional access to private implementation details via introspection. It's easy to use:: # yourmodule.py import dependency1 import dependency2 from publication import publish def implementation_detail(): ... def stuff(): ... implementation_detail() ... __all__ = [ 'stuff' ] publish() Now, C{from yourmodule import dependency1} just raises an C{ImportError} - as you would want; C{dependency1} isn't part of yourmodule! So does C{from yourmodule import dependency1} Only C{stuff} is I{supposed} to be in the public interface you're trying to support, so only it can be imported. All your implementation details are still accessible in a namespace called C{_private}, which you can still use via C{from yourmodule._private import dependency1}, for white-box testing and similar use-cases. é)Ú ModuleTypeNZ_privatec Cs t d¡j}|d}|d}t|ƒ}tj|}|tj|<|dddddddd d g }|D]$}t||tƒ}|tk rVt|||ƒqVt|t|ƒ|tjd   |tg¡<d S) a= Publish the interface of the calling module as defined in C{__all__}; relegate the rest of it to a C{_private} API module. Call it at the top level of your module after C{__all__} and all the names described in it are defined; usually the best place to do this is as the module's last line. éÚ__name__Ú__all__Ú __cached__Ú__doc__Ú__file__Ú __loader__Ú __package__Ú__path__Ú__spec__Ú.N) ÚsysÚ _getframeÚf_localsrÚmodulesÚgetattrÚ_nothingÚsetattrÚ PRIVATE_NAMEÚjoin)Z localvarsÚnameÚallÚpublicÚprivateÚnamesZ publishedÚvalue©rú‰/Users/jalaguru/Documents/Proserv/artifacts/aws_dms_cdk_automation/aws-dms-cdk-automation/venv/lib/python3.8/site-packages/publication.pyÚpublish.s.   ÷   rz0.0.3Ú __version__) rÚtypesrrrÚobjectrrr rrrrrÚs$ #