The CHANGELOG format is based on Keep a Changelog
NOTES:
- Version releases in the 0.x.y range may introduce breaking changes.
- See the auto-generated release notes for more details.
Note: version releases in the 0.x.y range may introduce breaking changes.
crm convertnow negatesdetect_binary_files_with_prefixwhen converting it to the V1prefix_detection/ignore_binary_filesfield. The two flags are logical inverses, so previously carrying the value over unchanged produced recipes with inverted binary prefix-replacement behavior.
- The boolean flag for
detect_binary_files_with_prefixnot being inverted. - Multiline string regression issue, #541.
- Bad cast in the
ArtifactFetcherrecovery logic. - Recipe/CBC file parsing issue tied to list indentation.
crm convertcommand now defaults to use theALLOW_DUPLICATE_KEYSflag in the parser. Our integration tests have shown that this improvescrm convertcompatibility more than it risks breakages in the conversion process.
- Documentation typos.
- Minor infrastructure improvements.
VariantsManagernow more closely followsconda-build's behavior. Variants are produced per Python version supplied by the CBC file, unless anoarchrecipe is used.
- Finalizer to fetch test cases so that clean up of the temp directory doesn't cause issues.
- Conversion for
skip_compile_pycin v0 to v1.
stack_path_to_strto always make a copy of the data being manipulated.pre-committo simplifyisort,black, andpylintversioning consistency.CbcParserto be split intoCbcParserandCbcReaderto be consistent with theRecipe*classes.
- Redundant README line.
dangerous-default-valuepylint ignores.
- @psteyer fixed the parser to handle nested list yaml syntax in CBC files.
- Multi-list rendering bug to correctly render lines that are blank but are the beginning of a list.
ALLOW_DUPLICATE_KEYSflag to ignore duplicate key exception on parsing of recipe files with duplicate keys.crm convertsupport forpython_version_independentfield.crm convertflag for managing latest Python version.
FLOATS_AS_STRINGSto a default flag for theVersionBumper.crm convertto improvepip_checkconversion.
- Automated CI testing for Python 3.13. Python 3.14 does not have all CRM dependencies available yet.
clickdependency has been pinned to 8.2.1, which is available ondefaultsandconda-forgechannels for Python 3.11-3.14.- Similarly,
pylintpyfakefspytest-socketsphinxdependencies have also been upgraded to use the latest versions available onconda-forgeanddefaultsthat support Python 3.11-3.14.
- Some dependencies do not yet exist for Python 3.14 on the
defaultschannel, so we have capped CRM support to3.13for now.
crm graphand the associated libraries have been removed from the project. CRM v0.9.3 will be the last version containing the tool. This was done to remove graphical dependencies which has caused issues running CRM in a headless environment.crm graphhas not used enough (and was never fully completed) to justify continuing to support it.
- Fixes #476. CRM now quotes version values that could be interpreted as a float.
- Fixes Issue #220 (and others). CRM now supports all YAML multiline string formats. This should significantly
improve parsing compatibility. In our testing, we believe this should allow CRM to be able to parse recipe output from
conda-buildartifacts. crm convertnow deprecates thelicense_urlfield in compliance with recent changes to CEP-0014.crm convertnow ensuresrun_exportscontains a list if a single value is provided.
- @leahsch Made improvements to the README file and fixed some typos.
- @mgorny Fixed a few edge V1 upgrade issues when a V0 recipe file contains python version information.
RecipeVariantignores pure comment lines when evaluating selectors.RecipeVariantonly attempts to render JINJA for node values containing JINJA expressions.
- Canonical recipe section sorting at the root and outputs level after each
patch addoperation inRecipeParser.
RecipeParser.update_skip_statement_python()works in the event that a build section is entirely absent.
- Recipe build variants generation.
SelectorQueryclass, replaced withBuildContext.
RecipeReader.get_value()now usesrender_to_object(), simplifying the logic and preserving retrieved value types better.RecipeReader.render_to_object()was also reworked for increased accuracy, and to better supportget_value().
- The
conda_recipe_manager.ops.VersionBumperclass. This takes the core logic fromcrm bump-recipeand exposes it as a library that can be easily leveraged by other tooling. - Two new context-manageable functions (
from_recipe_fetch()andfrom_recipe_fetch_corrected()) to theartifact_fetchermodule. These attempt to provide an easier way of acquiring remote source resources referenced in Conda recipe files. HttpArtifactFetcher::get_path_to_archive()which provides access to the source archive file acquired when fetching a remote resource. This is exposed to provide compatibility with existing Conda tooling.- A static utility function in
GitArtifactFetcherthat provides some limited ability to matchgittags to semantic version strings. This functionality was originally created by @msentissi.
artifact_fetcher::from_recipe()is now context-manageable.- The
crm bump-recipecommand now utilizes the newVersionBumperclass in a backwards-compatible way. - The artifact fetching classes derived from
BaseArtifactFetchercan now be used as context-managed instances. This provides callers with finer control over how long the temporary disk space is available.
- A test that was accidentally initializing 2 instances of the fake filesystem.
--fail-on-unsupported-jinjaflag tocrm convertat the request of the conda-forge community. When unsupported JINJA statements are seen in a V0 recipe attempting to be upgraded to V1, this flag kills the convert process with a unique exit code.
make testnow shows verbosepytestlogs.
- Support for multi-line JINJA set statements.
- Support for JINJA list variables.
ParsingJinjaException, which is thrown at construction if unsupported JINJA is encountered.force_remove_jinjaflag to the parser constructors to silently remove unsupported JINJA and attempt parsing.
- JINJA expression evaluation now uses
jinja2directly, instead of custom logic. crm convert, if it fails to parse a recipe because of unsupported JINJA, will output a warning, remove the unsupported statements, and re-attempt V1 conversion.- Book theme for sphinx is used for the project documentation.
RecipeReaderDeps.get_all_dependencies()now has a flag to include test dependencies.
- Various issues with
crm convertaround the new V1/build/scriptsection.
- The CRM software version to the API docs.
- Support for duplicate JINJA variable names for V0 recipes. There are some missing features around this change, but at least duplicate JINJA variables are no longer dropped. This is commonly seen when a string variable needs a conditional concatenation.
RecipeParser::update_skip_statement_python()which provides the ability to upgrade the commonly used[py>=3*]version selector to a new python version for V0 recipe files.
- Some formatting issues in the API docs.
- Issue #423 by making improvements to the
SpdxUtilsclass. - An issue with handling empty dependency sections in
RecipeParserDeps::add_dependency()
- Logging support via the standard Python logging library. By default, all modules (except
commands, which contains the CLI programs) default to use theNullHandlerso that the client program can determine the best way to log for their needs. - A series of new parsing-related exceptions. Most notably, when there is a parsing failure at parser construction,
a
ParsingExceptionis raisedfromthe original exception.
- De-emphasizes/redacts the
MessageTableclass in favor of the standard Python library logger. It is now only used as part of the recipe conversion process incrm convert
- Improves the V0 format correction algorithm used to increase V0 recipe compatibility.
crmCLI commands now support-hin addition to--help.
CHANGELOG.mdnow uses theKeep a Chagelogformat (from this version on)- The retry logic in
crm bump-recipenow uses a much shorter default timeout.
- The algorithm responsible for cleaning up V0 recipes prior to the parsing stage has been greatly improved to better handle inconsistent tabs.
- Wrong interpretation of the
+in JINJA variables in some cases.
- Contains many significant parsing bug fixes. Most of these fixes relate to quoting strings and JINJA statements.
Our integration tests indicate that this increases parsing compatibility across the board. We are seeing that
~97% of all recipe files in the
conda-recipe-manager-test-dataset can now be parsed without throwing an exception. - Contains a few bug fixes around parsing and rendering comments in V0 recipe files.
- Fixes several edge cases for PyPi URL upgrades with
crm bump-recipe - Adds a
pytest-socketsmoke test - Includes several new quality-of-life improvements for CRM developers
- Huge shout-out to @mrbean-bremen for their help on diagnosing some
pyfakefsissues on the latest point releases of Python.
- Fixes a JINJA rendering bug for V0 recipes in
RecipeReader::get_value(..., sub_vars=True)and related functions.
- BREAKING CHANGE:
RecipeParser::search_and_patch()has been replaced byRecipeParser::search_and_patch_replace(). - Adds some support for interpreting
splitandjoinJINJA functions. - Adds support for negative indexing in JINJA statements.
crm bump-recipenow attempts to correct PyPi URLs when the predicted source artifact URL cannot be found. This is to counteract changes introduced in the last year where some PyPi tarballs may have switched from using_s to-s. This comes from a PEP standard change for source artifacts.crm bump-recipenow replaces all older PyPi URLs withpypi.orgaddresses.- Minor fixes for the
crm graphcommand. - Fixes risky threading behavior in
crm bump-recipe. - Fixes for converting
/build/force_use_keys,/build/ignore_run_exports_from, and/build/ignore_run_exportsincrm convert.
- Various bug fixes and improvements related to
crm bump-recipe- Introduces the new
--override-build-numflag to allow bumped recipes to start counting from a non-zero value - Adds support for
| replace()JINJA functions to be evaluated.
- Introduces the new
crm convertnow prints stacktraces when the--debugflag is used.crm bump-recipenow includes a--save-on-failureflag that can save the contents of a bumped recipe if the bump fails to fully complete.- Significant recipe compatibility improvements, brought on by changes made in
rattler-build @0.34.1. - Several community-reported bug fixes.
- Introduces MVP for the
bump-recipecommand. This command should be able to update the version number, build number, and SHA-256 hash for most simple recipe files. - Starts work for scanning
pyproject.tomldependencies - Minor bug fixes and infrastructure improvements.
- Makes
DependencyVariabletype hashable.
- Fixes a bug discovered by user testing relating to manipulating complex dependencies.
- Renames a few newer functions from
*_stringto*_strfor project consistency.
- Refactors
RecipeParserDepsintoRecipeReaderDeps. Creates a newRecipeParserDepsthat adds the high-leveladd_dependency()andremove_dependencyfunctions. - A few bug fixes and some unit testing improvements
Minor bug fixes. Addresses feedback from conda-forge users.
With this release, Conda Recipe Manager expands past it's original abilities to parse and upgrade Conda recipe files.
Some highlights:
- Introduces the
scanner,fetcher, andgraphermodules. - Adds significant tooling around our ability to parse Conda recipe dependencies.
- Adds some initial V1 recipe file format support.
- Introduces many bug fixes, parser improvements, and quality of life changes.
- Adds
pyfakefsto the unit testing suite.
Full changelog available at: https://github.com/conda/conda-recipe-manager/compare/v0.2.1...v0.3.0
Minor bug fixes and documentation improvements. Conversion compatibility with Bioconda recipe has improved significantly.
Includes many previously missing recipe transformations.
- Fixes integration tests from rattler-build 0.18.0 update (#76)
- Adds common environment settings (#75)
- Adds demo day intro slidedeck to CRM (#73)
- Upgrades basic quoted multiline strings (#72)
- Adds missing transforms for "git source" fields (#71)
- pip check improvements, more missing transforms, and some spelling enhancements (#70)
- Multiline summary fix issue 44 (#68)
- Preprocessor: Replace dot with bar functions (#67)
- Corrects using hash_type as a JINJA variable for the sha256 key (#66)
- Adds script_env support (#65)
- Adds missing build transforms (#62)
- Some minor improvements (#61)
Major improvements from 0.1.0, mostly dealing with compatibility with rattler-build.
This marks the first actual release of the project, but still consider this work to be experimental
and continually changing.
Migrates parser from internal project. , ,