src package

Submodules

Module contents

pycompile imports

class src.CompilerCommands

Bases: object

cython = 'cythonize {} -3 --inplace'
cython_bench = 'cythonize {} -3 --inplace --quiet 2>/dev/null'
nuitka = 'python -m nuitka --module {}'
nuitka_bench = 'python -m nuitka --quiet --module {} 2>/dev/null'
class src.CompilerHandler(files: dict[str, list[Path]], compiler: CompilerWrapper, clean_source: bool = False, keep_builds: bool = True)

Bases: object

CompilerHandler is responsible for compiling all the .py files using Cython or Nuitka example usage:

compiler_handler = CompilerHandler(files=dir_files,compiler=compiler,
                    clean_source=True,keep_builds=True)
compiler_handler.start()
clean_executables() None

Cleans all the .so files.

start() None

For each .py file runs the compiler command to build the final executable .so

class src.CompilerWrapper

Bases: ABC

abstract cleanup(file_path: Path) None
abstract property cmd: str
class src.CythonWrapper(cmd: str = 'cythonize {} -3 --inplace')

Bases: CompilerWrapper

Cython is a programming language, a superset of the Python programming language, designed to give C-like performance with code that is written mostly in Python with optional additional C-inspired syntax. Cython is a compiled language that is typically used to generate CPython extension modules https://cython.org/

cleanup(file_path: Path) None

Deletes the `build`directory.

property cmd: str
class src.FileHandler(input_path: Path, additional_exclude_patterns: list[str] | None = None)

Bases: object

FileHandler is responsible for finding all the .py files within the input_path. example usage:

dir_files = FileHandler("./my_module").start()

By default, all the test files and any __init__ files are excluded.

Parameters:
  • input_path – Should be a valid file/directory path.

  • additional_exclude_patterns – Any optional additional glob patterns.

collect_with_pattern(pattern: str) Generator[Path, None, None]

Collects all python files within the input_path where they mach the pattern

Parameters:

pattern – str containing glob patters

Returns:

A Generator of file paths.

property exclude_patterns: list[str]

Current glob exclude patterns

property input_path: Path

Current input path

start() dict[str, list[Path]]

For the given input path collect all valid .py files based on the exclude_patterns

Returns:

a dictionary for valid files within each directory.

class src.NuitkaWrapper(cmd: str = 'python -m nuitka --module {}')

Bases: CompilerWrapper

Nuitka is a source-to-source compiler which compiles Python code to C source code, applying some compile-time optimizations in the process such as constant folding and propagation, built-in call prediction, type inference, and conditional statement execution. https://nuitka.net/

cleanup(file_path: Path) None

Deletes the build`directory alongside with the `file.pyi temp file.

property cmd: str
src.change_dir(file_path: Path) Generator[None, None, None]

Context manager to change the current active directory at the file path parents. This is needed to be able to include the compiled files in the same directory as the source files.

src.run_sub_process(files: list[Path], compile_cmd: str) None

For each file path run in a subprocess the corresponding compiler command.

src.setup_logging(verbose: int) None

setup logging helper function