One function

_parse_conf_data in dynaconf/dynaconf

The author described this change as fix: don't treat a string sharing a converter prefix as a cast (#1412). It counts as a record because the check below fails on the code as it stood at 93e49da9e and passes on 5c50a9a64, with nothing else changed between the two runs.

Fix saved2026-06-29
Sharing licenceMIT · LICENSE
Change size+1 1

What the code was meant to do, written into the code itself as a docstring

@int @bool @float @json (for lists and dicts) strings does not need converters export DYNACONF_DEFAULT_THEME='material' export DYNACONF_DEBUG='@bool True' export DYNACONF_DEBUG_TOOLBAR_ENABLED='@bool False' export DYNACONF_PAGINATION_PER_PAGE='@int 20' export DYNACONF_MONGODB_SETTINGS='@json {"DB": "quokka_db"}' export DYNACONF_ALLOWED_EXTENSIONS='@json ["jpg", "png"]'

The change

2424 castenabled
2525 and data
2626 and isinstance(data, str)
27- and data.startswith(tuple(converters.keys()))
27+ and data.partition(" ")[0] in converters
2828 ):
2929 # Check combination token is used
3030 comb_token = re.match(

The check that tells the two apart

failpass·tests/test_utils.py::test_string_starting_with_converter_prefix_is_not_cast

Check file tests/test_utils.py, taken without changes from the fix and copied onto the older code, so the exact same check runs against both versions.

Origin and history

The code before it93e49da9e08ffd250d93b0a55bf543d21fb3a15a
Broken version dated2026-06-28
Moduledynaconf.utils.parse_conf
Units changed_parse_conf_data
Fingerprint3bc3707607b91ae9
Checked2026-08-18 by goldset/0.1

Every field above is generated by our program. None of it is written by hand.

Other bugs found in dynaconf/dynaconf