Changelog¶
All notable changes to this project will be documented in this file.
0.3.0¶
- Breaking:
ChainDict.parentsis now a property, as incollections.ChainMap. Usechain.parentsinstead ofchain.parents() - Breaking: removed
settings.set_method_namerandsettings._METHOD_NAMER, which nothing used, along with the unusedkinds.GenericSetandkinds._MISSINGsentinel - Breaking:
DictList.subsetnow selects items by name (asDictListindexing,getanddeletedo) instead of by equality innow only checks a mapping's stored keys, so theall,defaultandnonewildcards are no longer always "in" aCatalog, and a list of keys is never "in" one.ChainDictchecks each stored mappingsubsetnow returns deep copies of the selected values whetherinclude,excludeor both are passed. Before, values chosen withincludewere shared with the original- Updated
astral-sh/setup-uvto 10.3.1 and the lockedmarkdown-exec,mkdocs-coverage,mypy,pre-commit,ruffanduvversions (replacing the open Dependabot pull requests), and theruffanduvpre-commithooks to match - Restyled the README examples (single quotes and spaces around keyword argument
=) - Added a
py.typedmarker so that type checkers (such asmypyinbobbie) use the package's type hints - Fixed the
mypyerror from the__delitem__signatures ofBunchandMutableSequencedisagreeing Dictionary.fromkeysandChainDict.fromkeysnow accept any iterable of keys and defaultvaluetoNone, asdict.fromkeysdoes- Fixed
Cataloglookups andCatalog.deletewith atuplethat is itself a stored key, which were treated as a sequence of separate keys ChainDict.new_childnow accepts a plain mapping (wrapped in aDictionary, asadddoes) or no mapping (an emptyDictionary), ascollections.ChainMap.new_childdoes- Fixed
Repository.addignoring an emptystrkey Repository.addnow raises aValueErrorwhen no key is passed and the key namer cannot name the item, instead of storing it underNone- Fixed unique key suffixes when
_uniquifystarts from anindexother than 1 ChainDict.return_firstandRepository.overwriteare now typed asboolinstead ofbool | None- Updated to the
snickerdoodle0.5.0 template (Codecov coverage, a coverage page in the docs, Python 3.15, SPDX license metadata, the version read from__version__, GitHub CLI releases, and CI that runsmypyandpre-commitonce). Added.cruft.jsonso thatcruft updatecan apply future template changes - Replaced the misnamed
,python-versionfile with.python-versionand converted the files with Windows line endings to Unix line endings - Ruff now enforces single quotes and the 80 character line limit, and its
force-excludesetting keepspre-commitfrom linting the excluded folders - Restyled the package and tests (spaces around keyword argument
=, closing brackets on the last line,Public Methodssection markers, and complete docstrings withReturnsbeforeRaises) - Fixed the changelog entries, which were indented so that Markdown showed them as code
- Added tests for the fixes above, the
+and+=operators of every class,tuplekeys,ChainDict.get, thepy.typedmarker, and more (149 tests in total)
0.2.2¶
- Updated to the
snickerdoodle0.4.0 template - Removed
ruff formatfrom thepre-commithooks because it removes the spaces around "=" in keyword arguments - Made
ruffprefer single quotes and converted the strings in the code to single quotes - Made
ruffignore boolean default positional arguments (FBT002) - Relaxed
pydoclintchecks of type hints, class attributes, and raised exceptions - Excluded
uv.lockfrom the large file check - Fixed typos in the contributing guide and noted that the project does not use a code formatter
0.2.1¶
- Fixed CI: applied pre-commit formatting, configured
pydoclint, fixeddependabot - README examples now show results as comments instead of
>>>prompts
0.2.0¶
- Updated to the latest
snickerdoodletemplate:uvandhatchlingreplacepdm, new GitHub Actions, pre-commit, codecov, and mkdocs configuration - Dropped support for Python 3.10 (Python 3.11 and later are supported)
Bunch.__add__(+) now returns a modified copy instead of modifying the instance; use+=to modify in placeBunch.__delitem__now returnsNonesubsetmethods takereturns = None, which readssettings._SUBSET_RETURNat call time sosettings.set_subset_return(new) takes effect;Listing.subsetandDictList.subsetgained thereturnsargumentsettings.set_key_namernow works and is used byRepositoryandDictList; addedsettings.set_subset_returnChainDict: fixedreturn_first = Falseresults, iteration andlennow use keys,addwraps plain mappings,subsetignores keys missing from a stored mapping,deleteraisesKeyErrorfor missing keys,parentskeepsreturn_firstCatalog.deletemodifiescontentsin placeDictList:gethandles out-of-range indices, slices are supported, multiple matches return aDictList,deleteraisesKeyErrorwhen nothing matchesListing.prependno longer flattens nested sequences;bytesare appended, not extended- Completed README, docs, and docstrings; added a full unit test suite
0.1.3¶
- Added
pynguinto test dependencies
0.1.2¶
- Fixed ruff error in
ci.yaml - Removed unneeded actions
0.1.1¶
- Reduced to core classes
- Adapted to
snickerdoodletemplate
0.1.0¶
- Initial Commit