Skip to content

Releases: mxstack/mxdev

5.1.0 - Multiple Push URLs

03 Nov 14:26

Choose a tag to compare

  • Feature: Git repositories can now specify multiple push URLs using multiline syntax in the pushurl configuration option. This enables pushing to multiple remotes (e.g., GitHub + GitLab mirrors) automatically. Syntax follows the same multiline pattern as version-overrides and ignores. Example: pushurl = followed by indented URLs on separate lines. When git push is run in the checked-out repository, it will push to all configured pushurls sequentially, mirroring Git's native multi-pushurl behavior. Backward compatible with single pushurl strings.
    [jensens, 2025-11-03]
  • Feature: Added --version command-line option to display the current mxdev version. The version is automatically derived from git tags via hatch-vcs during build. Example: mxdev --version outputs "mxdev 5.1.0" for releases or "mxdev 5.1.1.dev27+g62877d7" for development versions.
    [jensens, 2025-11-03]

Proper Offline Mode

23 Oct 21:44

Choose a tag to compare

  • Fix #70: HTTP-referenced requirements/constraints files are now properly cached and respected in offline mode. Previously, offline mode only skipped VCS operations but still fetched HTTP URLs. Now mxdev caches all HTTP content in .mxdev_cache/ during online mode and reuses it during offline mode, enabling true offline operation. This fixes the inconsistent behavior where -o/--offline didn't prevent all network activity.
    [jensens]
  • Improvement: Enhanced help text for -n/--no-fetch, -f/--fetch-only, and -o/--offline command-line options to better explain their differences and when to use each one.
    [jensens]

Critical bug fix and minor fixes

23 Oct 16:53

Choose a tag to compare

  • Fix #65: Check source directories exist before writing to requirements-mxdev.txt. In offline mode: missing sources log WARNING and are written as comments (expected behavior). In non-offline mode: missing sources log ERROR and mxdev exits with RuntimeError (fatal error indicating checkout failure). This fixes mxmake two-stage installation workflow and prevents silent failures when sources fail to check out.
    [jensens]
  • Fix: Configuration parsing no longer logs "Can not parse override:" errors when version-overrides is empty. Empty lines in version-overrides and ignores are now properly skipped during parsing. Also fixed bug where ignores lines were not properly stripped of whitespace.
    [jensens]
  • Fix: Three tests that were accidentally marked as skipped during PR #66 merge are now fixed and passing: test_resolve_dependencies_simple_file (fixed assertion to check line contents), test_write_output_with_ignores (fixed to use read() for proper ignore processing), and test_write_relative_constraints_path_different_dirs (fixed to include constraints content).
    [jensens]
  • Chore: Improved test coverage for main.py from 42% to 100%. Added comprehensive tests for the main() function covering all CLI argument combinations (--verbose, --silent, --offline, --threads, --no-fetch, --fetch-only), ensuring robust testing of the entry point and all code paths.
    [jensens]
  • Chore: Updated test fixture data versions to resolve Dependabot security alerts. Updated urllib3 from 1.26.9 to 2.5.0 and requests from 2.28.0 to 2.32.4 in test data files. These are test fixtures only and were never actual dependencies or security risks. Resolves GitHub Dependabot alerts #1-7.
    [jensens]
  • Fix: Add 'synchronize' event to pull_request workflow triggers. This ensures CI runs when PRs are updated with new commits (e.g., after rebasing or pushing new changes), not just when opened or reopened.
    [jensens]
  • Chore: Optimize GitHub Actions to prevent duplicate workflow runs on pull requests. Restrict push trigger to only run on main branch, so PRs only trigger via pull_request event. This reduces CI resource usage by 50% for PR workflows.
    [jensens]
  • Fix: process_line() now correctly comments out packages in override_keys and ignore_keys for both requirements and constraints files. Previously, these settings only applied to constraints files (variety="c"). Now they work for requirements files (variety="r") as well, with the message "-> mxdev disabled (version override)" for override_keys in requirements.
    [jensens]

Upgrades, Features and fixes

22 Oct 16:12

Choose a tag to compare

  • Breaking: support for Python 3.8 and 3.9. Minimum required version is now Python 3.10.
    [jensens]
  • Breaking: Modernize type hints to use Python 3.10+ syntax (PEP 604: X | Y instead of Union[X, Y])
  • Use built-in generic types (list, dict, tuple) instead of typing.List, typing.Dict, typing.Tuple
    [jensens]
  • Chore: Replace black with ruff for faster linting and formatting. Configure ruff with line-length=120 and appropriate rule selections. Keep isort for import sorting with plone profile and force-alphabetical-sort. This modernizes the tooling stack for better Python 3.10+ support and faster CI runs.
    [jensens]
  • Feature: #54: Add fixed install mode for non-editable installations to support production and Docker deployments. The new editable mode replaces direct as the default (same behavior, clearer naming). The direct mode is now deprecated but still works with a warning. Install modes: editable (with -e, for development), fixed (without -e, for production/Docker), skip (clone only).
    [jensens]
  • Fix #35: Add smart-threading configuration option to prevent overlapping credential prompts when using HTTPS URLs. When enabled (default), HTTPS packages are processed serially first to ensure clean credential prompts, then other packages are processed in parallel for speed. Can be disabled with smart-threading = false if you have credential helpers configured.
    [jensens]
  • Fix #34: The offline configuration setting and --offline CLI flag are now properly respected to prevent VCS fetch/update operations. Previously, setting offline = true in mx.ini or using the --offline CLI flag was ignored, and VCS operations still occurred.
    [jensens]
  • Fix #46: Git tags in branch option are now correctly detected and handled during updates. Previously, updating from one tag to another failed because tags were incorrectly treated as branches.
    [jensens]
  • Fix #22 and #25: Constraints file path in requirements-out is now correctly calculated as a relative path from the requirements file's directory. This allows requirements and constraints files to be in different directories. Previously, the path was written from the config file's perspective, causing pip to fail when looking for the constraints file. On Windows, paths are now normalized to use forward slashes for pip compatibility.
    [jensens]
  • Fix #53: Per-package target setting now correctly overrides default-target when constructing checkout paths.
    [jensens]
  • Fix #55: UnicodeEncodeError on Windows when logging emoji. The emoji is now conditionally displayed only when the console encoding supports it (UTF-8), avoiding errors on Windows cp1252 encoding.
    [jensens]

Modernized Package

20 Oct 13:51

Choose a tag to compare

  • Modernize release method with hatchling. See RELEASE.md [jensens]
  • Modernize tox setup. [jensens]
  • Modernize Github workflows. [jensens]
  • Enhance test coverage [jensens]
  • Fix Makefile. [jensens]

Feat for env GIT_CLONE_DEPTH and fixes

03 Jun 13:34

Choose a tag to compare

What's Changed

  • Do not add package with capital names uncommented at the bottom by @petschki in #48
  • Support environment variable GIT_CLONE_DEPTH. by @mauritsvanrees in #51

New Contributors

Full Changelog: v4.0.3...v4.1.0

Fix ignores/overrides with upper case names.

17 May 11:48
9d044c7

Choose a tag to compare

This release fixes #45 "Packages with capital names do not get ignored when checked out".

Migrate from pkg_resources to importlib_resources

12 Mar 23:43

Choose a tag to compare

  • Fix #42: deprecated use of pkg_resoures to load entry points and parse requirements.
    This enables mxdev to work on Python 3.12, where pkg_resources is no longer installed by default in virtual_envs.

Minor git revision fix

02 Mar 07:08

Choose a tag to compare

Changes

4.0.1 (2024-03-01)

  • Fix specifying out a revision (#40)
    [pbauer]

Alternative package installer support

28 Feb 14:55
8427d8a

Choose a tag to compare

  • Breaking: Remove --pre on sources from generated requirements-mxdev.txt.
    Usually it is not needed any longer, at least with pip 23.x.
    This is a breaking change if you rely on the --pre option being present in the generated file.
    Now the --pre option should be added to pip install when the generated file is used.
    This change enables the use of the generated file with the alternative pip replacement uv.
    [jensens]

  • Breaking: Drop official support for Python 3.7 (it is end of life).
    [jensens]

  • Document mx.ini sections vcs setting.
    [jensens]