Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
05cc967
feat: add package registry and maintainability check (#1400)
RuchitAgrawal May 2, 2026
e0af677
fix: revert pypi_arrow policy and fix flake8 line length
RuchitAgrawal May 7, 2026
f92a904
Merge branch 'main' into feat/1400-add-registry-and-heath-check
RuchitAgrawal May 7, 2026
37f557f
test: add integration tests for mcn_registry_maintainability_1
RuchitAgrawal May 15, 2026
659f1f9
Merge branch 'main' into feat/1400-add-registry-and-heath-check
RuchitAgrawal May 15, 2026
7cb72f0
test: fix pypi_arrow registry-maintainability policy
RuchitAgrawal May 19, 2026
520aef7
fix: changes made according suggestions by reviewer
RuchitAgrawal May 21, 2026
4ae3ac5
fix: update integration test expectations for aiohttp and arrow
RuchitAgrawal May 25, 2026
3855537
fix: component ordering corrected in pypi_arrow policy report
RuchitAgrawal May 26, 2026
a38c85a
fix: resolve maven package false-failures and unknown results in main…
RuchitAgrawal Jun 8, 2026
51c88e0
fix: review comments on maven maintainability check
RuchitAgrawal Jun 29, 2026
3e07ebc
Merge branch 'main' into feat/1400-add-registry-and-heath-check
RuchitAgrawal Jun 29, 2026
7f89203
Merge branch 'main' into feat/1400-add-registry-and-heath-check
RuchitAgrawal Jun 30, 2026
78701e6
Merge branch 'main' into feat/1400-add-registry-and-heath-check
RuchitAgrawal Jul 21, 2026
f2bf047
fix: address reviewer and Copilot comments on PR
RuchitAgrawal Jul 21, 2026
6687198
fix: address Copilot review comments-yanked check and archived repo l…
RuchitAgrawal Jul 21, 2026
b523c16
fix: suggested by copilot review
RuchitAgrawal Jul 21, 2026
03925df
fix: normalize GitHub Z timestamp for Python 3.10 compatibility
RuchitAgrawal Jul 21, 2026
3d95beb
Merge branch 'main' into feat/1400-add-registry-and-heath-check
RuchitAgrawal Jul 23, 2026
e070420
fix: resolve ruff and mypy errors after upstream sync
RuchitAgrawal Jul 24, 2026
3a68e74
Merge branch 'main' into feat/1400-add-registry-and-heath-check
RuchitAgrawal Jul 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ the requirements that are currently supported by Macaron.
* - ``mcn_license_1``
- **License check** - Check whether the repository license is not in the configured deny-list.
- This check detects the repository license via the GitHub API and validates it against a user-defined list of denied SPDX identifiers configured in ``defaults.ini``. If the deny-list is empty, any detected license is accepted.
* - ``mcn_registry_maintainability_1``
- **Registry maintainability** - Check whether the package exists in its public registry and is actively maintained.
- This check validates registry presence, release recency, and explicit deprecation or yanked status (PyPI, npm). Also checks whether the source repository has been archived and how recently code was pushed, when a GitHub repository is available. If the registry release is stale but the GitHub repository shows recent commit activity within the threshold, the check still passes — this avoids false failures for mono-repos where a sub-module has not had its own registry release recently but the project as a whole is active. For Maven packages, the check always queries Maven Central for the **latest** release date (rather than the pinned version's publish date), so actively maintained packages with old pinned versions are not incorrectly flagged as unmaintained. Maven packages without a pinned version are also evaluated via the latest release date. The inactivity threshold is configurable via ``defaults.ini`` (``[registry_maintainability] inactivity_threshold_days``). Returns ``UNKNOWN`` when the ecosystem is unsupported or a Maven Central lookup fails.

----------------------
How does Macaron work?
Expand Down
17 changes: 17 additions & 0 deletions src/macaron/config/defaults.ini
Original file line number Diff line number Diff line change
Expand Up @@ -774,3 +774,20 @@ denied_licenses =
# If True, the check fails when no license is detected.
# If False, a missing license results in a low-confidence pass.
require_license = False

# Registry maintainability configuration.
# The mcn_registry_maintainability_1 check validates whether a package exists
# in its public registry and evaluates its maintenance status.
# Supported ecosystems:
# - PyPI: release recency (latest version), yanked status
# - npm: release recency (latest version), deprecated status
# - Maven Central: release recency (latest version); also works for PURLs
# without a pinned version by querying the most recent release directly
[registry_maintainability]

# Maximum number of days since the last release before a package is considered
# unmaintained. Packages exceeding this threshold will fail the check.
# The same threshold is also applied to the time since the last push to the
# source repository (if available via the GitHub API).
# Default: 365 days (approximately 1 year).
inactivity_threshold_days = 365
Loading