Generates a Python project-specific Makefile by using an extensible library of configurable Makefile snippets.
Project description
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.
Documentation
The detailed mxmake
documentation is available mxstack.github.io/mxmake.
Copyright
- Copyright (c) 2022-2024 mxstack Contributors
- BSD 2-clause license (see below)
Contributors
- Robert Niederreiter
- Jens Klein
Changelog
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 tomx.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 inmxenv
domain to prevent warning on sub make calls. -
Add
LINGUA_OPTIONS
setting tolingua
domain ini18n
topic. Can be used for passing additional command line options topot-create
. -
Perform
mxenv
domain related checks inside target to support setups which install their own python environment. -
Add
Makefile
as dependency target forSENTINEL
target to make sure target execution if Makefile changes. -
Depend on
mxdev>=4.0.2
, which fixes the deprecation ofpkg_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 ofos.path
. -
Add
EXTRA_PATH
setting tobase
domain incore
topic. Can be used to specify additional directories added to environmentPATH
. -
Export
PATH
with virtual environment and node modules bin folders. -
Get rid of
MXENV_PATH
. -
Rename
PYTHON_BIN
toPRIMARY_PYTHON
inmxenv
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 tojs
topic. -
Add pyupgrade based code formatter, see https://pypi-hypernode.com/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 ofcheck
target. -
Add basic CI config file generation for github actions.
-
Add
ruff
domain toqa
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
inHook.generate_additional_sources_targets
. -
Add
PROJECT_CONFIG
as the dependency target ofSOURCES_TARGET
to make sure the target runs when a new source package gets added tomx.ini
.
1.0a1 (2023-05-05)
-
Add
zest-releaser
domain toapplications
topic. -
Support custom makefile include.
-
Support
pytest
as a test runner and make it default if not configured otherwise. -
Add
RUN_TARGET
setting tobase
domain and generaterun
target inMakefile
. -
Create
twisted
domain inapplications
topic. -
Test and coverage templates consider
mxmake-test-path
,mxmake-source-path
andmxmake-omit-path
insettings
section ofmx.ini
to support inclusion of local package inrun-tests.sh
andrun-coverage.sh
scripts. -
Create
scss
domain injs
topic. -
Create
gettext
domain ini18n
topic. -
Create
lingua
domain ini18n
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
tomd
. -
Rename
_SENTINEL
to_TARGET
in domains. -
generic
install
dirty
andclean
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 topackages
. -
Rename
files
domain tomxfiles
. -
Rename
venv
domain tomxenv
. -
Extend hook to generate
sources
dependency targets for package reinstall (setup.py, setup.cfg, pyproject.toml, requirements.txt, constraints.txt). -
Move
tests
andcoverage
domains toqa
topic. -
Create
black
,mypy
,isort
and domains inqa
topic. -
Move
system-dependencies
tosystem
topic. -
Rename
docs
domain tosphinx
and move todocs
topic. -
Create
zpretty
domains inqa
topic. -
Add topic related metadata containing a topic description.
-
Create
npm
domains injs
topic. -
Create
jsdoc
domain, indocs
topic. -
Create
rollup
domains injs
topic. -
Create
karma
domain, injs
topic. -
Create
zope
domain, inapplications
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 defaultclean
target, where the entire virtual env gets removed. -
Remove redundant dependencies from
zope
domain. -
sources
domain is now a soft dependency ofmxfiles
domain instead of thepackages
domain. This ensures source package checkout happens before mxmake generates files, because templates might gain information from source packages if present. -
karma
androllup
targets depend onNPM_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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for mxmake-1.0a6-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6528fb00042103eec19431d213bde9a8168493d7cedc38df23e307e2a4fdcd1f |
|
MD5 | bcff411b947474e02be1458667e1e670 |
|
BLAKE2b-256 | 98fec0dbdc7c3ad06f68c1cc2ac187388e5a9093a93b340caa5401379d6100a2 |