def build_cython_extensions()

in build-module.py [0:0]


def build_cython_extensions() -> None:
    import Cython.Compiler.Options
    from Cython.Build import build_ext, cythonize
    from setuptools import Extension
    from setuptools.dist import Distribution

    Cython.Compiler.Options.annotate = True

    if os.name == "nt":  # Windows
        extra_compile_args = [
            "/O2",
        ]
    else:  # UNIX-based systems
        extra_compile_args = [
            "-O3",
        ]

    package_path = "pyiceberg"

    extension = Extension(
        # Your .pyx file will be available to cpython at this location.
        name="pyiceberg.avro.decoder_fast",
        sources=[
            os.path.join(package_path, "avro", "decoder_fast.pyx"),
        ],
        extra_compile_args=extra_compile_args,
        language="c",
    )

    ext_modules = cythonize([extension], include_path=list(package_path), language_level=3, annotate=True)
    dist = Distribution({"ext_modules": ext_modules})
    cmd = build_ext(dist)
    cmd.ensure_finalized()

    cmd.run()

    for output in cmd.get_outputs():
        output = Path(output)
        relative_extension = output.relative_to(cmd.build_lib)
        shutil.copyfile(output, relative_extension)