mxmake


Namemxmake JSON
Version 1.0a7 PyPI version JSON
download
home_pageNone
SummaryGenerates a Python project-specific Makefile by using an extensible library of configurable Makefile snippets.
upload_time2024-10-24 09:14:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseBSD 2-Clause License
keywords development deployment make
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <img src="docs/source/_static/mxmake-logo.svg?raw=true"
     alt="mxmake logo"
     align="right"
     style="float: right; margin-left: 10px; margin-bottom: 10px; width: 25%" /> *mxmake* [mɪks meɪk] generates a project-specific Makefile by using an extensible library of configurable Makefile snippets.

It targets the development environments for Python packages but may be used outside of this playground.

[![Latest PyPI version](https://img.shields.io/pypi/v/mxmake.svg)](https://pypi.python.org/pypi/mxmake)
[![Number of PyPI downloads](https://img.shields.io/pypi/dm/mxmake.svg)](https://pypi.python.org/pypi/mxmake)
[![Tests](https://github.com/mxstack/mxmake/actions/workflows/test.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/test.yml)
[![Typecheck](https://github.com/mxstack/mxmake/actions/workflows/typecheck.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/typecheck.yml)
[![Lint](https://github.com/mxstack/mxmake/actions/workflows/lint.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/lint.yml)
[![Variants](https://github.com/mxstack/mxmake/actions/workflows/variants.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/variants.yml)

# Documentation

The detailed `mxmake` documentation is available [mxstack.github.io/mxmake](https://mxstack.github.io/mxmake).

# Copyright

- Copyright (c) 2022-2024 mxstack Contributors
- BSD 2-clause license (see below)

Contributors
============

- Robert Niederreiter
- Jens Klein

# Changelog

## 1.0a7 (2024-10-24)

- Add proxy target support.

**Breaking changes**

- Rename `npm` domain to `nodejs` and add support for using `pnpm` as
  alternative package manager.

## 1.0a6 (2024-08-02)

- Fix bug in `Template.write` when creating target folders to also create
  parent folders if not exists.

- Add support for preseeds configuration files.

- Add `plone-site` template configuration to `mx.ini` template.

- More fine grained control over plone site creation and purging.

- Drop Python 3.8 and set all defaults to a Python 3.9 minimum.

## 1.0a5 (2024-06-07)

- Export `OS` environment variable in `mxenv` domain to prevent warning on
  sub make calls.

- Add `LINGUA_OPTIONS` setting to `lingua` domain in `i18n` topic. Can be used
  for passing additional command line options to `pot-create`.

- Perform `mxenv` domain related checks inside target to support setups
  which install their own python environment.

- Add `Makefile` as dependency target for `SENTINEL` target to make sure
  target execution if Makefile changes.

- Depend on `mxdev>=4.0.2`, which fixes the deprecation of `pkg_resources` and
  use the provided infrastructure of mxdev to handle entry_points in mxmake.

- Add Plone site creation and purging in new `plone` domain.

## 1.0a4 (2024-03-12)

- Add experimental windows support.

- Support `mxmake update` command, updating the Makefile without prompting for
  settings.

- Use importlib.metadata to load entrypoints.

- Add support for uv as fast alternative to pip #25.

- Remove Python 3.7 from CI. Still works though.

- Run test on GH-Actions on platform macos-latest.

- Use `pathlib.Path` instead of `os.path`.

- Add `EXTRA_PATH` setting to `base` domain in `core` topic. Can be used to
  specify additional directories added to environment `PATH`.

- Export `PATH` with virtual environment and node modules bin folders.

- Get rid of `MXENV_PATH`.

- Rename `PYTHON_BIN` to `PRIMARY_PYTHON` in `mxenv` domain.

- Introduce `MXENV_PYTHON`. It defines the Python executable used for mxmake
  operations.

- Remove ruff cache when running `make ruff-clean` target.

- Fix #20: make VENV_ENABLED=false test does not work.

- Add `wtr` (Web test runner) domain to `js` topic.

- Add pyupgrade based code formatter, see https://pypi.org/project/pyupgrade/.

- Add `ZOPE_TEMPLATE_CHECKOUT` option to zope domain to allow pinning to a tag,
  branch or revision (uses cookiecutter `--checkout`). If empty, do not apply
  `--checkout` option.

- Add phony target `cookiecutter` to be able to just install it.

- Add feature to pass options to zest-releaser commands.

- Change default for venv folder to `.venv`, since this is established practice.

## 1.0a3 (2024-02-06)

- Add `typecheck` target and use it for mypy instead of `check` target.

- Add basic CI config file generation for github actions.

- Add `ruff` domain to `qa` topic.

- Fix exporting path in `jsdoc` target.

## 1.0a2 (2023-07-07)

- Add support for `pip.conf` file.

- Fixes #18: VENV_CREATE is ignored.

- Fix error when new source package gets added to `mx.ini` in
  `Hook.generate_additional_sources_targets`.

- Add `PROJECT_CONFIG` as the dependency target of `SOURCES_TARGET` to make
  sure the target runs when a new source package gets added to `mx.ini`.

## 1.0a1 (2023-05-05)

- Add `zest-releaser` domain to `applications` topic.

- Support custom makefile include.

- Support `pytest` as a test runner and make it default if not configured
  otherwise.

- Add `RUN_TARGET` setting to `base` domain and generate `run` target in
  `Makefile`.

- Create `twisted` domain in `applications` topic.

- Test and coverage templates consider `mxmake-test-path`, `mxmake-source-path`
  and `mxmake-omit-path` in `settings` section of `mx.ini` to support inclusion
  of local package in `run-tests.sh` and `run-coverage.sh` scripts.

- Create `scss` domain in `js` topic.

- Create `gettext` domain in `i18n` topic.

- Create `lingua` domain in `i18n` topic.

- Conditional add local [requirement|constraints}.txt to LOCAL_PACKAGE_FILES.

- Generate one Makefile from snippets instead of including several files from
  subfolder.

- Semantic overhaul. "Domains" become "Topics" and "Makefile" becomes "Domain".

- Use inquirer to configure included domains and targets.

- Generate initial `mx.ini` config file.

- Generate "Topic" and "Domain" docs.

- Change docs format from `rst` to `md`.

- Rename `_SENTINEL` to `_TARGET` in domains.

- generic `install` `dirty` and `clean` targets in main makefile template.

- Rename `.sentinels` folder to `.mxmake-sentinels`.

- Provide a set of default targets and a mechanism to extend it's dependency
  targets in domain make files.

- Rename `install` domain to `packages`.

- Rename `files` domain to `mxfiles`.

- Rename `venv` domain to `mxenv`.

- Extend hook to generate `sources` dependency targets for package reinstall
  (setup.py, setup.cfg, pyproject.toml, requirements.txt, constraints.txt).

- Move `tests` and `coverage` domains to `qa` topic.

- Create `black`, `mypy`, `isort` and domains in `qa` topic.

- Move `system-dependencies` to `system` topic.

- Rename `docs` domain to `sphinx` and move to `docs` topic.

- Create `zpretty` domains in `qa` topic.

- Add topic related metadata containing a topic description.

- Create `npm` domains in `js` topic.

- Create `jsdoc` domain, in `docs` topic.

- Create `rollup` domains in `js` topic.

- Create `karma` domain, in `js` topic.

- Create `zope` domain, in `applications` topic.

- Add `soft-depends` setting in domains to define conditional order of domain
  rendering.

- Make `sources` target an optional dependency.

- Extend makefile parser to provide multi line settings.

- Take local package into account to "dirty" if there (pyproject.toml,
  setup.[cfg|py]

- Check for the existence of pip in `*-clean` targets before uninstalling a
  package, to ensure the targets are working when running via the default
  `clean` target, where the entire virtual env gets removed.

- Remove redundant dependencies from `zope` domain.

- `sources` domain is now a soft dependency of `mxfiles` domain instead of the
  `packages` domain. This ensures source package checkout happens before mxmake
  generates files, because templates might gain information from source
  packages if present.

- `karma` and `rollup` targets depend on `NPM_TARGET` now.

## 0.1 (2022-05-19)

- Initial release.

# License

Copyright (c) 2022-2024, mxstack Contributors

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this
  list of conditions and the following disclaimer in the documentation and/or
  other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mxmake",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "development, deployment, make",
    "author": null,
    "author_email": "MX Stack Developers <dev@bluedynamics.com>",
    "download_url": "https://files.pythonhosted.org/packages/9c/dc/51783daeaf3ea02467eadf7c9c2b8dd1668636ea14b3600b851b6ec73168/mxmake-1.0a7.tar.gz",
    "platform": null,
    "description": "<img src=\"docs/source/_static/mxmake-logo.svg?raw=true\"\n     alt=\"mxmake logo\"\n     align=\"right\"\n     style=\"float: right; margin-left: 10px; margin-bottom: 10px; width: 25%\" /> *mxmake* [m\u026aks me\u026ak] generates a project-specific Makefile by using an extensible library of configurable Makefile snippets.\n\nIt targets the development environments for Python packages but may be used outside of this playground.\n\n[![Latest PyPI version](https://img.shields.io/pypi/v/mxmake.svg)](https://pypi.python.org/pypi/mxmake)\n[![Number of PyPI downloads](https://img.shields.io/pypi/dm/mxmake.svg)](https://pypi.python.org/pypi/mxmake)\n[![Tests](https://github.com/mxstack/mxmake/actions/workflows/test.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/test.yml)\n[![Typecheck](https://github.com/mxstack/mxmake/actions/workflows/typecheck.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/typecheck.yml)\n[![Lint](https://github.com/mxstack/mxmake/actions/workflows/lint.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/lint.yml)\n[![Variants](https://github.com/mxstack/mxmake/actions/workflows/variants.yml/badge.svg)](https://github.com/mxstack/mxmake/actions/workflows/variants.yml)\n\n# Documentation\n\nThe detailed `mxmake` documentation is available [mxstack.github.io/mxmake](https://mxstack.github.io/mxmake).\n\n# Copyright\n\n- Copyright (c) 2022-2024 mxstack Contributors\n- BSD 2-clause license (see below)\n\nContributors\n============\n\n- Robert Niederreiter\n- Jens Klein\n\n# Changelog\n\n## 1.0a7 (2024-10-24)\n\n- Add proxy target support.\n\n**Breaking changes**\n\n- Rename `npm` domain to `nodejs` and add support for using `pnpm` as\n  alternative package manager.\n\n## 1.0a6 (2024-08-02)\n\n- Fix bug in `Template.write` when creating target folders to also create\n  parent folders if not exists.\n\n- Add support for preseeds configuration files.\n\n- Add `plone-site` template configuration to `mx.ini` template.\n\n- More fine grained control over plone site creation and purging.\n\n- Drop Python 3.8 and set all defaults to a Python 3.9 minimum.\n\n## 1.0a5 (2024-06-07)\n\n- Export `OS` environment variable in `mxenv` domain to prevent warning on\n  sub make calls.\n\n- Add `LINGUA_OPTIONS` setting to `lingua` domain in `i18n` topic. Can be used\n  for passing additional command line options to `pot-create`.\n\n- Perform `mxenv` domain related checks inside target to support setups\n  which install their own python environment.\n\n- Add `Makefile` as dependency target for `SENTINEL` target to make sure\n  target execution if Makefile changes.\n\n- Depend on `mxdev>=4.0.2`, which fixes the deprecation of `pkg_resources` and\n  use the provided infrastructure of mxdev to handle entry_points in mxmake.\n\n- Add Plone site creation and purging in new `plone` domain.\n\n## 1.0a4 (2024-03-12)\n\n- Add experimental windows support.\n\n- Support `mxmake update` command, updating the Makefile without prompting for\n  settings.\n\n- Use importlib.metadata to load entrypoints.\n\n- Add support for uv as fast alternative to pip #25.\n\n- Remove Python 3.7 from CI. Still works though.\n\n- Run test on GH-Actions on platform macos-latest.\n\n- Use `pathlib.Path` instead of `os.path`.\n\n- Add `EXTRA_PATH` setting to `base` domain in `core` topic. Can be used to\n  specify additional directories added to environment `PATH`.\n\n- Export `PATH` with virtual environment and node modules bin folders.\n\n- Get rid of `MXENV_PATH`.\n\n- Rename `PYTHON_BIN` to `PRIMARY_PYTHON` in `mxenv` domain.\n\n- Introduce `MXENV_PYTHON`. It defines the Python executable used for mxmake\n  operations.\n\n- Remove ruff cache when running `make ruff-clean` target.\n\n- Fix #20: make VENV_ENABLED=false test does not work.\n\n- Add `wtr` (Web test runner) domain to `js` topic.\n\n- Add pyupgrade based code formatter, see https://pypi.org/project/pyupgrade/.\n\n- Add `ZOPE_TEMPLATE_CHECKOUT` option to zope domain to allow pinning to a tag,\n  branch or revision (uses cookiecutter `--checkout`). If empty, do not apply\n  `--checkout` option.\n\n- Add phony target `cookiecutter` to be able to just install it.\n\n- Add feature to pass options to zest-releaser commands.\n\n- Change default for venv folder to `.venv`, since this is established practice.\n\n## 1.0a3 (2024-02-06)\n\n- Add `typecheck` target and use it for mypy instead of `check` target.\n\n- Add basic CI config file generation for github actions.\n\n- Add `ruff` domain to `qa` topic.\n\n- Fix exporting path in `jsdoc` target.\n\n## 1.0a2 (2023-07-07)\n\n- Add support for `pip.conf` file.\n\n- Fixes #18: VENV_CREATE is ignored.\n\n- Fix error when new source package gets added to `mx.ini` in\n  `Hook.generate_additional_sources_targets`.\n\n- Add `PROJECT_CONFIG` as the dependency target of `SOURCES_TARGET` to make\n  sure the target runs when a new source package gets added to `mx.ini`.\n\n## 1.0a1 (2023-05-05)\n\n- Add `zest-releaser` domain to `applications` topic.\n\n- Support custom makefile include.\n\n- Support `pytest` as a test runner and make it default if not configured\n  otherwise.\n\n- Add `RUN_TARGET` setting to `base` domain and generate `run` target in\n  `Makefile`.\n\n- Create `twisted` domain in `applications` topic.\n\n- Test and coverage templates consider `mxmake-test-path`, `mxmake-source-path`\n  and `mxmake-omit-path` in `settings` section of `mx.ini` to support inclusion\n  of local package in `run-tests.sh` and `run-coverage.sh` scripts.\n\n- Create `scss` domain in `js` topic.\n\n- Create `gettext` domain in `i18n` topic.\n\n- Create `lingua` domain in `i18n` topic.\n\n- Conditional add local [requirement|constraints}.txt to LOCAL_PACKAGE_FILES.\n\n- Generate one Makefile from snippets instead of including several files from\n  subfolder.\n\n- Semantic overhaul. \"Domains\" become \"Topics\" and \"Makefile\" becomes \"Domain\".\n\n- Use inquirer to configure included domains and targets.\n\n- Generate initial `mx.ini` config file.\n\n- Generate \"Topic\" and \"Domain\" docs.\n\n- Change docs format from `rst` to `md`.\n\n- Rename `_SENTINEL` to `_TARGET` in domains.\n\n- generic `install` `dirty` and `clean` targets in main makefile template.\n\n- Rename `.sentinels` folder to `.mxmake-sentinels`.\n\n- Provide a set of default targets and a mechanism to extend it's dependency\n  targets in domain make files.\n\n- Rename `install` domain to `packages`.\n\n- Rename `files` domain to `mxfiles`.\n\n- Rename `venv` domain to `mxenv`.\n\n- Extend hook to generate `sources` dependency targets for package reinstall\n  (setup.py, setup.cfg, pyproject.toml, requirements.txt, constraints.txt).\n\n- Move `tests` and `coverage` domains to `qa` topic.\n\n- Create `black`, `mypy`, `isort` and domains in `qa` topic.\n\n- Move `system-dependencies` to `system` topic.\n\n- Rename `docs` domain to `sphinx` and move to `docs` topic.\n\n- Create `zpretty` domains in `qa` topic.\n\n- Add topic related metadata containing a topic description.\n\n- Create `npm` domains in `js` topic.\n\n- Create `jsdoc` domain, in `docs` topic.\n\n- Create `rollup` domains in `js` topic.\n\n- Create `karma` domain, in `js` topic.\n\n- Create `zope` domain, in `applications` topic.\n\n- Add `soft-depends` setting in domains to define conditional order of domain\n  rendering.\n\n- Make `sources` target an optional dependency.\n\n- Extend makefile parser to provide multi line settings.\n\n- Take local package into account to \"dirty\" if there (pyproject.toml,\n  setup.[cfg|py]\n\n- Check for the existence of pip in `*-clean` targets before uninstalling a\n  package, to ensure the targets are working when running via the default\n  `clean` target, where the entire virtual env gets removed.\n\n- Remove redundant dependencies from `zope` domain.\n\n- `sources` domain is now a soft dependency of `mxfiles` domain instead of the\n  `packages` domain. This ensures source package checkout happens before mxmake\n  generates files, because templates might gain information from source\n  packages if present.\n\n- `karma` and `rollup` targets depend on `NPM_TARGET` now.\n\n## 0.1 (2022-05-19)\n\n- Initial release.\n\n# License\n\nCopyright (c) 2022-2024, mxstack Contributors\n\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice, this\n  list of conditions and the following disclaimer in the documentation and/or\n  other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n",
    "bugtrack_url": null,
    "license": "BSD 2-Clause License",
    "summary": "Generates a Python project-specific Makefile by using an extensible library of configurable Makefile snippets.",
    "version": "1.0a7",
    "project_urls": {
        "Bug Reports": "https://github.com/mxstack/mxmake/issues",
        "Documentation": "https://mxstack.github.io/mxmake",
        "Homepage": "https://github.com/mxstack/mxmake",
        "Source": "https://github.com/mxstack/mxmake/tree/main"
    },
    "split_keywords": [
        "development",
        " deployment",
        " make"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "87bba7ed5f71a7c58cada20b9153ffe265f1120b320051c513950afb68faebc2",
                "md5": "728bd945b12af2125688c9f141b7ca7d",
                "sha256": "916c0d3f5047d5a716865ae48e08acf631720e386232a895f853f8811b9f25d6"
            },
            "downloads": -1,
            "filename": "mxmake-1.0a7-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "728bd945b12af2125688c9f141b7ca7d",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.9",
            "size": 64290,
            "upload_time": "2024-10-24T09:14:30",
            "upload_time_iso_8601": "2024-10-24T09:14:30.202809Z",
            "url": "https://files.pythonhosted.org/packages/87/bb/a7ed5f71a7c58cada20b9153ffe265f1120b320051c513950afb68faebc2/mxmake-1.0a7-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9cdc51783daeaf3ea02467eadf7c9c2b8dd1668636ea14b3600b851b6ec73168",
                "md5": "27a5aea4fcc079a3fa55b461c7b17808",
                "sha256": "68b312129836f4637b9fda05dff0b17f093a299d82ded20bf8c66ec0b3173f8c"
            },
            "downloads": -1,
            "filename": "mxmake-1.0a7.tar.gz",
            "has_sig": false,
            "md5_digest": "27a5aea4fcc079a3fa55b461c7b17808",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 47888,
            "upload_time": "2024-10-24T09:14:32",
            "upload_time_iso_8601": "2024-10-24T09:14:32.034835Z",
            "url": "https://files.pythonhosted.org/packages/9c/dc/51783daeaf3ea02467eadf7c9c2b8dd1668636ea14b3600b851b6ec73168/mxmake-1.0a7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-24 09:14:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mxstack",
    "github_project": "mxmake",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "mxmake"
}
        
Elapsed time: 0.34711s