Skip to content

Conversation

@paultiq
Copy link

@paultiq paultiq commented Aug 20, 2025

Thank you for this project!

I took a moment to update the project to support 3.14:

  • Fixed a PEP649 breaking issue with 3.14... this could use a good review.
  • Updated the project to test all current (and upcoming) versions: 3.9 through 3.14, plus 3.14t and pypy3.11.

Housekeeping - optional:

  • Dropped 3.7 and 3.8, since they're long EOL.
  • Left support for 3.9, although it's EOL in a few weeks.
  • Moved project to uv & uv-build
  • Updated lock file to latests
  • Updated gh actions
  • Added pre-commits, although more could be added - ruff formatter has a lot of opinions.
  • Added PYPI version classifiers
  • Provided a placeholder for switching to pypi trusted publishers, if you want.
  • Added badgers to readme for: pypi version, python versions, and a coverage report (also hooked into the action)

The first part w/ 3.14 support is really the purpose here, and I'm happy to roll back the housekeeping stuff if you want just the first part but not second part.

Thank you!

]
dependencies = [
"typing-inspect>=0.4.0, <1",
"marshmallow>=3.18.0,<4.0.0",
Copy link

@skupr-anaconda skupr-anaconda Dec 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will it support marshmallow 4.0.0+? Because marshmallow 4.1.0 tested against Python 3.14 https://github.com/marshmallow-code/marshmallow/blob/4.1.0/CHANGELOG.rst#410-2025-11-01.

I think conda won't have py314 support for marshmallow <4.0.1:

conda search marshmallow

Loading channels: done
# Name                       Version           Build  Channel
marshmallow                   2.16.3            py_0  pkgs/main
marshmallow                    3.2.0            py_0  pkgs/main
marshmallow                    3.2.2            py_0  pkgs/main
marshmallow                    3.5.1            py_0  pkgs/main
marshmallow                    3.5.2            py_0  pkgs/main
marshmallow                    3.6.1            py_0  pkgs/main
marshmallow                    3.7.0            py_0  pkgs/main
marshmallow                    3.7.1            py_0  pkgs/main
marshmallow                    3.8.0            py_0  pkgs/main
marshmallow                    3.9.1    pyhd3eb1b0_0  pkgs/main
marshmallow                   3.10.0    pyhd3eb1b0_0  pkgs/main
marshmallow                   3.11.1    pyhd3eb1b0_0  pkgs/main
marshmallow                   3.12.0    pyhd3eb1b0_0  pkgs/main
marshmallow                   3.12.1    pyhd3eb1b0_0  pkgs/main
marshmallow                   3.12.2    pyhd3eb1b0_0  pkgs/main
marshmallow                   3.19.0 py310hca03da5_0  pkgs/main
marshmallow                   3.19.0 py311hca03da5_0  pkgs/main
marshmallow                   3.19.0 py312hca03da5_0  pkgs/main
marshmallow                   3.19.0 py313hca03da5_0  pkgs/main
marshmallow                   3.19.0  py38hca03da5_0  pkgs/main
marshmallow                   3.19.0  py39hca03da5_0  pkgs/main
marshmallow                    4.0.0 py310hca03da5_0  pkgs/main
marshmallow                    4.0.0 py311hca03da5_0  pkgs/main
marshmallow                    4.0.0 py312hca03da5_0  pkgs/main
marshmallow                    4.0.0 py313hca03da5_0  pkgs/main
marshmallow                    4.0.0  py39hca03da5_0  pkgs/main
marshmallow                    4.0.1 py310hca03da5_0  pkgs/main
marshmallow                    4.0.1 py310hca03da5_1  pkgs/main
marshmallow                    4.0.1 py311hca03da5_0  pkgs/main
marshmallow                    4.0.1 py311hca03da5_1  pkgs/main
marshmallow                    4.0.1 py312hca03da5_0  pkgs/main
marshmallow                    4.0.1 py312hca03da5_1  pkgs/main
marshmallow                    4.0.1 py313hca03da5_0  pkgs/main
marshmallow                    4.0.1 py313hca03da5_1  pkgs/main
marshmallow                    4.0.1 py314hca03da5_1  pkgs/main
marshmallow                    4.0.1  py39hca03da5_0  pkgs/main

This can affect the downstream packages langsmith -> langchain-core

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I try to build dataclasses-json 0.6.7 with marshmallow 4.0.1 for py314 on osx-arm64, then I get this error in the test environment:

## Package Plan ##

  environment location: /Users/sss/opt/miniconda3/conda-bld/dataclasses-json_1766484508581/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac


The following NEW packages will be INSTALLED:

    attrs:             25.4.0-py314hca03da5_2
    bzip2:             1.0.8-h80987f9_6
    ca-certificates:   2025.12.2-hca03da5_0
    dataclasses-json:  0.6.7-py314hca03da5_1     local
    hypothesis:        6.142.3-py314hca03da5_2
    iniconfig:         2.1.0-py314hca03da5_0
    libcxx:            20.1.8-hd7fd590_1
    libexpat:          2.7.3-h50f4ffc_4
    libffi:            3.4.4-hca03da5_1
    libmpdec:          4.0.0-h80987f9_0
    libzlib:           1.3.1-h5f15de7_0
    lz4-c:             1.9.4-h313beb8_1
    marshmallow:       4.0.1-py314hca03da5_1
    mypy_extensions:   1.0.0-py314hca03da5_0
    ncurses:           6.5-hee39554_0
    openssl:           3.0.18-h9b4081a_0
    packaging:         25.0-py314hca03da5_1
    pip:               25.3-pyh0d26453_0
    pluggy:            1.5.0-py314hca03da5_0
    pytest:            7.4.4-py314hca03da5_0
    python:            3.14.2-h1858270_101_cp314
    python_abi:        3.14-2_cp314
    readline:          8.3-h0b18652_0
    simplejson:        3.20.2-py314haa24f5a_0
    sortedcontainers:  2.4.0-pyhd3eb1b0_0
    sqlite:            3.51.0-hab6afd1_0
    tk:                8.6.15-hcd8a7d5_0
    typing_extensions: 4.15.0-py314hca03da5_0
    typing_inspect:    0.9.0-py314hca03da5_0
    tzdata:            2025b-h04d1e81_0
    xz:                5.6.4-h80987f9_1
    zlib:              1.3.1-h5f15de7_0
    zstd:              1.5.7-h817c040_0

Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
export PREFIX=/Users/sss/opt/miniconda3/conda-bld/dataclasses-json_1766484508581/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac
export SRC_DIR=/Users/sss/opt/miniconda3/conda-bld/dataclasses-json_1766484508581/test_tmp
import: 'dataclasses_json'
import: 'dataclasses_json'
+ python -c 'from importlib.metadata import version; assert(version('\''dataclasses-json'\'')=='\''0.6.7'\'')'
+ pytest -v --ignore=gh_src/tests/test_annotations.py gh_src/tests
============================= test session starts ==============================
platform darwin -- Python 3.14.2, pytest-7.4.4, pluggy-1.5.0 -- $PREFIX/bin/python
cachedir: .pytest_cache
hypothesis profile 'default'
rootdir: $SRC_DIR
plugins: hypothesis-6.142.3
collecting ... collected 324 items / 1 error

==================================== ERRORS ====================================
________________ ERROR collecting gh_src/tests/test_metadata.py ________________
gh_src/tests/test_metadata.py:39: in <module>
    car_schema = Car.schema()
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.14/site-packages/dataclasses_json/api.py:95: in schema
    return Schema(only=only,
E   TypeError: Schema.__init__() got an unexpected keyword argument 'context'
=============================== warnings summary ===============================
gh_src/tests/test_collection_of_unions.py:8
  $SRC_DIR/gh_src/tests/test_collection_of_unions.py:8: PytestCollectionWarning: cannot collect test class 'TestChild' because it has a __init__ constructor (from: gh_src/tests/test_collection_of_unions.py)
    @dataclass_json

gh_src/tests/test_collection_of_unions.py:14
  $SRC_DIR/gh_src/tests/test_collection_of_unions.py:14: PytestCollectionWarning: cannot collect test class 'TestOtherChild' because it has a __init__ constructor (from: gh_src/tests/test_collection_of_unions.py)
    @dataclass_json

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
ERROR gh_src/tests/test_metadata.py - TypeError: Schema.__init__() got an une...
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
========================= 2 warnings, 1 error in 0.84s =========================
WARNING: Tests failed for dataclasses-json-0.6.7-py314hca03da5_1.conda - moving package to /Users/sss/opt/miniconda3/conda-bld/broken

CondaBuildUserError: TESTS FAILED: dataclasses-json-0.6.7-py314hca03da5_1.conda

pyproject.toml Outdated
maintainers = ['Charles Li <[email protected]>', 'Georgiy Zubrienko <[email protected]>', 'Vitaliy Savitskiy <[email protected]>', 'Matthias Als <[email protected]>']
license = 'MIT'
authors = [{ name = "Charles Li", email = "[email protected]" }]
requires-python = ">=3.9"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@paultiq
Copy link
Author

paultiq commented Dec 23, 2025

See #568, it seems like there's noone left to approve PRs.

That's too bad.

* Nonetheless, I updated the project to drop 3.9. The marshmallow change should be another PR, if there's anyone left to approve anything here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants