{"id":23184156,"url":"https://github.com/bozokopic/mkwhl","last_synced_at":"2025-08-18T15:32:07.376Z","repository":{"id":190708032,"uuid":"683252274","full_name":"bozokopic/mkwhl","owner":"bozokopic","description":"python wheel creation utility","archived":false,"fork":false,"pushed_at":"2024-03-08T16:06:44.000Z","size":66,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-08T16:17:30.323Z","etag":null,"topics":["build","pep517","wheel"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bozokopic.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-08-26T01:39:08.000Z","updated_at":"2024-01-08T15:37:29.000Z","dependencies_parsed_at":"2024-03-08T17:28:08.807Z","dependency_job_id":"e88a5332-5ea6-48fa-a607-29e52d9dd704","html_url":"https://github.com/bozokopic/mkwhl","commit_stats":null,"previous_names":["bozokopic/mkwhl"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bozokopic%2Fmkwhl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bozokopic%2Fmkwhl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bozokopic%2Fmkwhl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bozokopic%2Fmkwhl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bozokopic","download_url":"https://codeload.github.com/bozokopic/mkwhl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230245290,"owners_count":18196135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build","pep517","wheel"],"created_at":"2024-12-18T09:17:27.675Z","updated_at":"2024-12-18T09:17:28.262Z","avatar_url":"https://github.com/bozokopic.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. _PEP517: https://peps.python.org/pep-0517\n.. _PEP660: https://peps.python.org/pep-0660\n.. _project metadata: https://packaging.python.org/en/latest/specifications/declaring-project-metadata\n.. _binary distribution format: https://packaging.python.org/en/latest/specifications/binary-distribution-format\n\nmkwhl - python wheel creation utility\n=====================================\n\nCreate Python wheel based on `pyproject.toml` configuration and/or provided\narguments. Wheels can be created by:\n\n* running command line tool\n* `pyproject.toml` build backend\n* calling `mkwhl.create_wheel` function\n\nGoal of this project is to provide simple and minimal utility based on\naccepted PEPs. Usage of `pyproject.toml` should not be mandatory and\neach `pyproject.toml` property should be overridable by provided arguments.\nFunctionality should not depend on specific project's repository layout.\nUser is responsible for providing correct configuration/arguments\n(e.g. python/abi/platform tags) without additional \"automatic\" detection.\n\nOnly responsibility of `mkwhl` is creation of wheels. Any kind of\npreprocessing, including compilation of native extensions, should be done\nprior to `mkwhl` execution.\n\n\nRequirements\n------------\n\n* python \u003e=3.10\n\n\nInstall\n-------\n\nPyPI python package::\n\n    $ pip install mkwhl\n\nArchlinux AUR::\n\n    $ yay -S mkwhl\n\n\nCommand line tool\n-----------------\n\nUsage::\n\n    $ mkwhl --help\n\n`mkwhl` will create new wheel in ``--build-dir`` (defaults to ``build``)\ncontaining files from ``--src-dir`` (defaults to ``.``). Files in ``--src-dir``\nare selected based on ``--src-include`` and ``--src-exclude`` patterns\nused as `pathlib.Path.glob` arguments applied to ``--src-dir``\n(``--src-exclude`` patterns are prioritized over ``--src-include`` patterns).\nIf ``--skip-conf`` is not set, project properties, which are not explicitly\noverridden by command line arguments, are read from ``--conf`` (defaults to\n``pyproject.toml``) as defined by `project metadata`_. When wheel is created,\nwheel name is printed to stdout (unless ``--quiet`` flag is set).\n\nFor more information::\n\n    $ man 1 mkwhl\n\n\n`pyproject.toml` build backend\n------------------------------\n\n`mkwhl` implements build backend according to PEP517_ and PEP660_. To use\n`mkwhl` as build backend, add following to pyproject.toml::\n\n    [build-system]\n    requires = [\"mkwhl\"]\n    build-backend = \"mkwhl\"\n\nWheel will be build based on pyproject.toml `project metadata`_ and additional\n``[tool.mkwhl]`` properties:\n\n* `src-dir` (string)\n\n  Source root directory. If this property is not set, existence of ``src_py``\n  or ``src`` directory is checked and used if available.\n\n* `license-path` (string)\n\n  Optional path to license file.\n\n* `src-include-patterns` (list of strings)\n\n  List of strings used as `pathlib.Path.glob` patterns applied to `src_dir`.\n  These patterns specify which files should be included as part of built\n  wheel. If not set, ``['**/*']`` is assumed.\n\n* `src-exclude-patterns` (list of strings)\n\n  List of strings used as `pathlib.Path.glob` patterns applied to `src_dir`.\n  These patterns specify which files should not be included as part of built\n  wheel. This patterns take priority over `src-include-patterns`. If not set,\n  ``['**/__pycache__/**/*']`` is assumed.\n\n* `data-paths` (list of tables)\n\n  Optional data paths where list element is table with ``src`` and ``dst``\n  keys referencing source and destination path strings.\n\n* 'python-tag' (string)\n\n  Python tag (see `binary distribution format`_). If not set, ``py3`` is\n  assumed.\n\n* 'abi-tag' (string)\n\n  ABI tag (see `binary distribution format`_). If not set, ``none`` is\n  assumed.\n\n* `build-tag` (integer)\n\n  Optional build tag (see `binary distribution format`_).\n\n* 'platform-tag' (string)\n\n  Python tag (see `binary distribution format`_). If not set, ``any`` is\n  assumed.\n\n* 'is-purelib' (boolean)\n\n  Is purelib (see `binary distribution format`_). If not set, ``true`` is\n  assumed.\n\n* `optional-dependencies` (list of strings)\n\n  List of strings used as keys in pyproject.toml\n  ``[project.optional-dependencies]``. These dependencies are required as part\n  of build virtual environment. If not set, ``['dev']`` is assumed.\n\n\nPython API\n----------\n\nIn addition to command line interface and build backend, package `mkwhl`\nexposes single function::\n\n    def create_wheel(src_dir: Path,\n                     build_dir: Path,\n                     *,\n                     name: str | None = None,\n                     version: str | None = None,\n                     description: str | None = None,\n                     readme_path: Path | None = None,\n                     requires_python: str | None = None,\n                     license: str | None = None,\n                     license_path: Path | None = None,\n                     authors: list[tuple[str | None, str | None]] | None = None,\n                     maintainers: list[tuple[str | None, str | None]] | None = None,\n                     keywords: list[str] | None = None,\n                     classifiers: list[str] | None = None,\n                     urls: dict[str, str] | None = None,\n                     scripts: dict[str, str] | None = None,\n                     gui_scripts: dict[str, str] | None = None,\n                     dependencies: list[str] | None = None,\n                     optional_dependencies: dict[str, list[str]] | None = None,\n                     conf_path: Path | None = Path('pyproject.toml'),\n                     editable: bool = False,\n                     src_include_patterns: typing.Iterable[str] = ['**/*'],\n                     src_exclude_patterns: typing.Iterable[str] = ['**/__pycache__/**/*'],\n                     data_paths: list[tuple[Path, Path]] = [],\n                     build_tag: int | None = None,\n                     python_tag: str = 'py3',\n                     abi_tag: str = 'none',\n                     platform_tag: str = 'any',\n                     is_purelib: bool = True\n                     ) -\u003e str:\n        \"\"\"Create wheel and return wheel name\n\n        Argument `src_dir` is path to source root directory.\n\n        Argument `build_dir` is path to directory where resulting wheel will be\n        created.\n\n        If one of arguments `name`, `version`, `description`, `readme_path`,\n        `requires_python`, `license`, `authors`, `maintainers`, `keywords`,\n        `classifiers`, `urls`, `scripts`, `gui_scripts`, `dependencies` or\n        `optional_dependencies` is ``None``, associated resulting property is\n        set based on project configuration read from pyproject.\n\n        Arguments `authors` and `maintainers` are structured as list of tuples\n        where first tuple element represents name and second tuple element\n        represents email.\n\n        If `conf_path` is ``None``, resulting wheel will be created based only\n        on provided arguments without parsing of pyproject configuration.\n\n        Arguments `src_include_patterns` and `src_exclude_patterns` provide\n        list of strings used as `pathlib.Path.glob` patterns applied to\n        `src_dir`. Include patterns specify all files that will be included in\n        resulting wheel. All files specified by exclude patterns will not be\n        included in resulting wheel, even if same file is specified by include\n        pattern.\n\n        Argument `data_paths` defines list of (source, destination) paths to be\n        included in wheel's data directory.\n\n        \"\"\"\n\n\nLicense\n-------\n\nmkwhl - python wheel creation utility\n\nCopyright (C) 2023-2024 Bozo Kopic\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbozokopic%2Fmkwhl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbozokopic%2Fmkwhl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbozokopic%2Fmkwhl/lists"}