# type: ignore
from __future__ import annotations
from builtins import builtin_function_or_method as BuiltinFunctionType
from builtins import module as ModuleType
from collections.abc import Callable
import collections.abc
import sys as sys
import typing
__all__: list[str] = ['BuiltinFunctionType', 'Callable', 'ModuleType', 'Property', 'sys']
class Property(str):
    """
    This class allows to make a string object callable. Call returns underlying string's data.
    """
    @classmethod
    def __new__(cls, prop: collections.abc.Callable[..., typing.Any]):
        ...
    def __call__(self, *args: typing.Any) -> collections.abc.Callable[..., typing.Any]:
        ...
def __append_property_to_module(func: collections.abc.Callable[..., typing.Any], target_module_name: str) -> None:
    """
    Modifies the target module's __getattr__ method to expose a python property wrapper by the function's name.
    
        :param func: the function which will be transformed to behave as python property.
        :param target_module_name: the name of the module to which properties are added.
        
    """
def __make_properties(source_module_of_properties: module, target_module_name: str) -> None:
    """
    Makes python properties in target module from functions found in the source module.
    
        :param source_module_of_properties: the source module from which functions should be taken.
        :param target_module_name: the name of the module to which properties are added.
        
    """
