pycociC

Remove pycache (and numba cache) files


License
MIT
Install
pip install pycociC==1.1.1

Documentation

pycociC - A Python library for removing pycache and numba cache files

Installation

pip install pycociC

Usage

python -B -m pycociC [-t DIRS [DIRS ...]] [-h]

options:
  -h, --help            show this help message and exit
  -t DIRS [DIRS ...], -d DIRS [DIRS ...], --dirs DIRS [DIRS ...]
                        Directories to search for pycache files (default: (everywhere))

Coding

# pycociC/__init__.py
__all__ = ('FP_RE', 'bytes_to_pretty_view', 'eat_cache', 'dont_write_bytecode')
FP_RE = re.compile(r'.*\.py([co]|.*\.nb[ci])', re.I)


@_run_with_max_recursion
def eat_cache(at_dirs: Iterable[AnyStr, os.PathLike[AnyStr]] = ('.',)):
    """Function removes files matching the regular expression (see FP_RE) from all "__pycache__" folders recursively."""
    ...


def dont_write_bytecode() -> bool:
    """
    return True if env PYTHONDONTWRITEBYTECODE or -B arg passed else False

    >>> import os
    >>> os.environ['PYTHONDONTWRITEBYTECODE'] = 'x'
    >>> dont_write_bytecode()
    True
    >>> del os.environ['PYTHONDONTWRITEBYTECODE']  # or os.environ['PYTHONDONTWRITEBYTECODE'] = ''
    >>> dont_write_bytecode()
    False
    """
    ...


def bytes_to_pretty_view(bytes_size: int | float, *, skip_zero: bool = False) -> str:
    """
    Converts the number of bytes into a pretty SI prefix.

    >>> bytes_to_pretty_view(0)
    '0B'
    >>> bytes_to_pretty_view(0, skip_zero=True)
    ''
    >>> bytes_to_pretty_view(1_000_000_24.)
    '100MB 24B'
    >>> bytes_to_pretty_view(0xFF_FF_FF_FF)
    '4GB 294MB 967kB 295B'
    """
    ...

Example Output

python -m pycociC -d .

WARNING:root:pycociC doesn't remove bytecode files.
        You can use "-B" option of python or PYTHONDONTWRITEBYTECODE=x to do so.


Starting for .


pycociC\__pycache__
        __init__.cpython-310.pyc (4kB 699B)
        __main__.cpython-310.pyc (1kB 153B)
pycociC\__pycache__  # only if the folder has been deleted

venv\Lib\site-packages\_distutils_hack\__pycache__
        __init__.cpython-310.pyc (7kB 593B)
venv\Lib\site-packages\_distutils_hack\__pycache__

venv\Lib\site-packages\__pycache__
        _virtualenv.cpython-310.pyc (4kB 107B)
venv\Lib\site-packages\__pycache__


Removed 17kB 552B

python -B -m pycociC

Starting for C:\, D:\


C:\...\Python310\Lib\collections\__pycache__
        abc.cpython-310.pyc (251B)
        __init__.cpython-310.pyc (48kB 468B)
C:\...\Python310\Lib\collections\__pycache__

C:\...\Python310\Lib\importlib\__pycache__  
        abc.cpython-310.pyc (15kB 904B)
        ...
        __init__.cpython-310.pyc (3kB 818B)
C:\...\Python310\Lib\importlib\__pycache__  

C:\...\Python310\Lib\urllib\__pycache__
        parse.cpython-310.pyc (33kB 817B)
        __init__.cpython-310.pyc (144B)
C:\...\Python310\Lib\urllib\__pycache__

        ...

D:\...\venv\Lib\site-packages\_distutils_hack\__pycache__
        __init__.cpython-310.pyc (7kB 593B)
D:\...\venv\Lib\site-packages\_distutils_hack\__pycache__

D:\...\venv\Lib\site-packages\__pycache__
        _virtualenv.cpython-310.pyc (4kB 107B)
D:\...\venv\Lib\site-packages\__pycache__


Removed 1MB 481kB 138B