All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.34.0 - 2024-10-18
- Add
Python 3.13
support. - Drop
Python 3.8
andPython 3.9
support. - Fix
dict
backward-compatibility making keylist feature working only with lists. #412 #413 #432 - Remove tests unnecessary output.
- Update
pyproject
Ruff config sections. - Bump requirements and
pre-commit
hooks.
0.33.2 - 2024-03-05
- Fix
clean
method not working on nested dicts. #383 - Enforce top level keys check in
merge
method. #367 - Bump requirements and
pre-commit
hooks.
0.33.1 - 2023-12-27
- Fix calling
from_xls
passing custom options. #355 - Replace
Black
andisort
withRuff-format
. - Bump requirements and
pre-commit
hooks.
0.33.0 - 2023-11-08
- Add
Python 3.12
support. (#342) - Add possibility to restrict input data sources with
sources
argument (more info here). #287 - Add
from_html
method (available by installing the optional[html]
dependency, more info here). #317 - Bump requirements.
0.32.1 - 2023-09-18
- Fix
items
andvalues
methods returned values type (cast tobenedict
). #333 - Fix union with assignment operator inconsistent results (compared to
dict
). #334 - Bump requirements.
0.32.0 - 2023-07-16
- Add
CLISerializer
andfrom_cli
method. (by @Denperidge in #311) - Bump requirements.
0.31.0 - 2023-06-17
- Add
parse
extra (optional dependencies). #300 (#303) - Bump requirements.
0.30.2 - 2023-06-02
- Allow
ini
format to support nested structures (encode to json only dicts). #284 - Prevent clearing dict instance when assigning value to itself. #294
0.30.1 - 2023-05-16
- Allow
ini
format to support nested structures. #284 (#289) - Switch from
setup.cfg
topyproject.toml
. - Replace
flake8
withRuff
. - Fix
tox
test command. - Bump requirements.
0.30.0 - 2023-03-22
- Add
keyattr_dynamic
property (False
by default). #261 (#266) - Make
ini
serializer case-sensitive by default and acceptoptionxform
option. #263 (#265) - Fix
TypeError
when decoding.xls
withNone
columns. - Improve decoding errors traceback.
- Bump requirements.
0.29.1 - 2023-03-09
- Fix missing dependency on
pyyaml
. #260 - Fix protected keys in
json
items preventing automatic keys creation when getting__protected__
attributes. #259
0.29.0 - 2023-03-09
NEW
Addkeyattr
(keys as attributes) support. (#257)NEW
Separate installation targets (extras requires). #200 (#258)- Fix set state when loading from pickle.
- Improve tests coverage.
- Upgrade syntax for
Python >= 3.8
. - Reformat and cleanup code.
- Move
flake8
config tosetup.cfg
. - Increase
flake8
checks. - Add
flake8-bugbear
topre-commit
. - Run
flake8
also on tests files. - Run
pre-commit
also withtox
. - Rename default branch from
master
tomain
. - Bump requirements.
0.28.3 - 2023-01-12
- Remove
tests/
from dist. - Bump requirements.
0.28.2 - 2023-01-11
- Fix
FileNotFoundError
if file is just the filename. #226 - Bump requirements.
0.28.1 - 2023-01-02
- Add
pyupgrade
topre-commit
config. - Add
setup.cfg
(setuptools
declarative syntax) generated usingsetuptools-py2cfg
. - Add support for
pathlib.Path
. #144 - Bump requirements.
0.28.0 - 2022-12-29
- Drop
Python 3.7 support
. - Replace
str.format
withf-strings
. - Remove
python setup.py test
usage. - Remove encoding pragma.
- Fix
s3_options
option forwarded tojson
decoder. #198 (#204) - Bump requirements.
0.27.1 - 2022-11-26
- Add
Python 3.11
support. #143 - Add
pre-commit
withblack
,isort
andflake8
. - Read
toml
files using the standardtomlib
(if available). #143 - Bump requirements (
boto3
,python-slugify
,orjson
) version.
0.27.0 - 2022-10-12
- Add
s3
support to I/O operations. #17 (#126) - Fix subclasses type. #115 (#124)
0.26.0 - 2022-10-09
- Add
xls
files (.xlsx
,.xlsm
,.xls
) support (read-only). #70 (#122) - Drop
Python 3.6
support. (#123)
0.25.4 - 2022-09-06
- Fix
toml
encoding circular reference error. #110
0.25.3 - 2022-08-23
- Fix set dict item value in list. #109
0.25.2 - 2022-07-15
- Fixed
orjson
compatibility. #102 - Fixed
swap
between dict items. - Fixed
deepcopy
with pointer. - Bumped requirements.
0.25.1 - 2022-04-27
- Fixed broken
yaml
serialization withbenedict
attributes. #89 - Fixed
flatten
not working when separator is equal tokeypath_separator
. #88 - Bumped requirements.
0.25.0 - 2022-02-18
- Added official
python 3.10
support. - Dropped
python 2.7
andpython 3.5
support. - Pinned requirements versions.
- Reformatted code with Black.
0.24.3 - 2021-10-04
- Added tuple index support when getting items. #66
- Added
type_util.is_dict_or_list_or_tuple
method. - Improved tests.
0.24.2 - 2021-08-11
- Fixed
json.dumps()
whenbenedict
is initialized with an empty dict. #57 #61 - Fixed
merge
not working with an empty dict. #59
0.24.1 - 2021-08-01
- Fixed
json.dumps()
whenbenedict
is initialized with an empty dict. #57
0.24.0 - 2021-05-04
- Added
ini
format support. #36 #40 - Added
python 3.9
to CI (tox, travis and GitHub actions). - Fixed
to_toml
circular reference error. #53 - Updated
ftfy
requirement version depending onpython
version. - Updated (improved)
QueryStringSerializer
regex.
0.23.2 - 2021-01-19
- Fixed
merge
method lists concat when merging nested dicts. #48 - Fixed
BaseDict
initialized withBaseDict
subclass argument.
0.23.1 - 2021-01-14
- Fixed
get_int_list
with single value.
0.23.0 - 2020-12-24
- Added
get_date
andget_date_list
methods. - Added
python-fsutil
library for file-system operations.
0.22.4 - 2020-12-22
- Removed
sort_keys=True
by default inJSON
serializer.
0.22.3 - 2020-12-22
- Added
concat
option to merge method. #45 - Added
sort_keys=True
by default inJSON
serializer. - Added
memo
option to clone core method. - Fixed broken
json.dumps
using cloned instance. #46
0.22.2 - 2020-11-30
- Fixed
benedict
yaml
representer. #43
0.22.1 - 2020-11-27
- Fixed dump
benedict
object toyaml
not working correctly. #43
0.22.0 - 2020-10-15
- Added
get_uuid
andget_uuid_list
methods.
0.21.1 - 2020-09-30
- Fixed performance issue. #39
- Fixed
to_json
returns empty dict from generator. #38 - Refactored
BaseDict
class and enforced tests.
0.21.0 - 2020-09-22
- Added
match
utility method. #11 #16 - Added
indexes
option support to keypaths method. #13 - Updated
keypaths
method to use the defaultkeypath_separator
(.
) instead ofNone
. - Fixed
keypath_separator
inheritance when init from anotherbenedict
instance. #35 - Fixed
json.dumps
no longer works directly withbenedict
. #34
0.20.0 - 2020-09-20
- Added
BaseDict
as base class to keep pointer to the initial input dict. #32 - Added automatic
benedict
casting to all methods that return dict instances. - Updated
flatten
method, now aKeyError
is raised in case of existing key.
0.19.0 - 2020-09-11
- Added
plist
format support. - Enforced
IODict
initial check when using filepath or data-string. - Improved
KeyError
messages. PR #28 - Added encoding optional argument to
io_util.read_file
andio_util.write_file
. - Fixed python 3.5/3.6 I/O encoding issue.
0.18.2 - 2020-09-02
- Added
find
method. #23 - Added
overwrite
option support to merge method. #24 - Fixed format auto-detection with unexpected extensions. #19
0.18.1 - 2020-03-13
- Added data format auto-detection when creating instance with data from filepath or url.
- Fixed
keypath_separator
support when usingfrom_{format}
methods.
0.18.0 - 2020-02-21
- Added
from_pickle
andto_pickle
methods. - Added
PickleSerializer
. - Added
datetime
,Decimal
andset
support toJSONSerializer
. - Updated
dump
method to useJSONSerializer
. - Refactored
Base64Serializer
. - Fixed
type_util.is_json_serializable
withset
objects. - Fixed
search
method for int no results - #7 - Improved
invert
method to handles correctly lists and tuples. - Improved
io_util.read_file
andio_util.write_file methods
. - Improved code quality and CI.
0.17.0 - 2020-02-06
- Added
groupby
utility method. - Added
nest
utility method. - Added
keylists
core method. - Reorganized lib and tests packages.
- Improved code quality and CI.
0.16.0 - 2020-01-30
- Added
KeylistDict
with list indexes support. #1 - Added
benedict.utils.type_util
with many utility functions. - Improved code quality and CI.
0.15.0 - 2020-01-13
- Added
rename
method. - Added
search
method. - Added
unflatten
method.
0.14.1 - 2020-01-07
- Fixed
keypath_separator
value in instances returned bycopy
,clone
,filter
,flatten
,invert
,subset
methods. #4 - Fixed
get
doesn't work when the key is a list with one element. #5 - Fixed
pickle
AttributeError
. #6
0.14.0 - 2019-12-18
- Added docstrings to methods. #2
- Added test case for stackoverflow answered questions.
- Added possibility to run tests using only
unittest
. - Improved code quality and CI.
- Improved keypath support in
fromkeys
method. - Improved url, file, data autodetect in
io_util.read_content
. - Refactored
standardize
utility method. - Removed duplicated code and
benedicton
decorator. - Renamed
options
arg tochoices
inParseDict
methods. - Replaced unsafe
yaml.load
withyaml.safe_load
.
0.13.0 - 2019-11-07
- Added
csv
I/O support. - Refactored I/O dict class and utils.
- Improved tests.
0.12.0 - 2019-10-29
- Added
standardize
utility method. - Added
traverse
utility method. - Added
keypath_separator
getter/setter. - Improved
base64
I/O support. - Improved tests.
- Refactored
benedict
class and utilies.
0.11.1 - 2019-10-14
- Added
io_util.decode_bytes
utility method.
0.11.0 - 2019-10-14
- Added
query-string
I/O support. - Added
unique
utility method. - Added urldecode, padding fix and
format=None
support toio_util.decode_base64
utility. - Refactored
benedict
class and utilies.
0.10.0 - 2019-10-03
- Added
base64
I/O support. - Added
invert
utility method. - Added
items_sorted_by_keys
utility method. - Added
items_sorted_by_values
utility method. - Refactored
benedict
class and utilies.
0.9.0 - 2019-09-23
- Added
xml
I/O support.
0.8.0 - 2019-09-20
- Added
toml
I/O support.
0.7.0 - 2019-09-17
- Added
yaml
I/O support.
0.6.0 - 2019-09-10
- Added
IODict
withjson
support. - Added
clone
(deepcopy
alias) andmerge
(deepupdate
alias) methods.
0.5.2 - 2019-07-19
- Refactored
KeypathDict
. - Added
remove
utility method. - Added
subset
utility method. - Fixed string casting in parse functions on python 2.
0.5.1 - 2019-07-10
- Added timestamp support to get_datetime parse method.
0.5.0 - 2019-07-09
- Added custom or
None
keypathseparator
support. - Added
filter
utility method. - Improved tests and code quality.
0.4.2 - 2019-06-19
- Fixed
parse_str
UnicodeEncodeError on python 2.
0.4.1 - 2019-06-18
- Fixed
get_phonenumber
not working with numbers without country prefix. - Renamed
country
arg tocountry_code
inget_phonenumber
method.
0.4.0 - 2019-06-17
- Added
clean
method. - Added
get_email
method. - Added
get_phonenumber
method.
0.3.2 - 2019-06-11
- Added support to key-list as key.
- Fixed
setup.py
requirements installation on Python 2.7.
0.3.1 - 2019-06-11
- Added
dump
anddump_items
utility methods.
0.3.0 - 2019-06-10
- Added casting to
benedict
to all dicts returned by any public method. - Renamed
get_keypaths
tokeypaths
according to keys and values existing methods. - Reorganized lib structure to improve scalability.
- Added python 2.7 support.
- Improved code quality.
0.2.0 - 2019-05-20
- Improved
parse_bool
method. - Added keypath support to
pop
method and refactored core methods. - Added
get_keypaths
method. - Added keypath support to
fromkeys
method. - Added
deepcopy
shortcut method. - Added keypath support to
copy
method. - Refactored
KeypathDict
core methods.
0.1.0 - 2018-05-17
- Released package on pypi.