Support for Python 3.13
I imagine this may be on your radar, but just in case it is not, I am having some issues installing with Python 3.13. Thanks for the work on all your awesome tools!
~/tmp
❯ mkdir srsly-test
~/tmp
❯ cd srsly-test
~/tmp/srsly-test
❯ uv venv --python 3.13
Using CPython 3.13.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
~/tmp/srsly-test
❯ uv pip install srsly
Resolved 2 packages in 1ms
error: Failed to prepare distributions
Caused by: Failed to fetch wheel: srsly==2.4.8
Caused by: Build backend failed to build wheel through `build_wheel` (exit status: 1)
[stdout]
Cythonizing sources
running bdist_wheel
running build
running build_py
copying srsly/util.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly
copying srsly/_yaml_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly
copying srsly/_msgpack_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly
copying srsly/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly
copying srsly/about.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly
copying srsly/_json_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly
copying srsly/_pickle_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly
copying srsly/ujson/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson
copying srsly/msgpack/_version.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/util.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/_msgpack_numpy.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/exceptions.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/_ext_type.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/cloudpickle/cloudpickle.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/cloudpickle
copying srsly/cloudpickle/compat.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/cloudpickle
copying srsly/cloudpickle/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/cloudpickle
copying srsly/cloudpickle/cloudpickle_fast.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/cloudpickle
copying srsly/tests/test_msgpack_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests
copying srsly/tests/test_json_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests
copying srsly/tests/test_pickle_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests
copying srsly/tests/test_yaml_api.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests
copying srsly/tests/util.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests
copying srsly/tests/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests
copying srsly/ruamel_yaml/scalarfloat.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/scanner.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/compat.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/error.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/anchor.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/constructor.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/composer.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/util.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/events.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/scalarint.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/scalarbool.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/configobjwalker.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/representer.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/tokens.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/dumper.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/cyaml.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/parser.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/reader.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/scalarstring.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/loader.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/resolver.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/serializer.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/nodes.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/timestamp.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/main.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/emitter.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/ruamel_yaml/comments.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ruamel_yaml
copying srsly/tests/ujson/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ujson
copying srsly/tests/ujson/test_ujson.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ujson
copying srsly/tests/msgpack/test_extension.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_subtype.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_buffer.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_unpack.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_pack.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_except.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_case.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_read_size.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_memoryview.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_seq.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_limits.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_newspec.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_numpy.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_format.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_stricttype.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/msgpack/test_sequnpack.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/msgpack
copying srsly/tests/cloudpickle/testutils.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/cloudpickle
copying srsly/tests/cloudpickle/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/cloudpickle
copying srsly/tests/cloudpickle/cloudpickle_test.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/cloudpickle
copying srsly/tests/cloudpickle/cloudpickle_file_test.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/cloudpickle
copying srsly/tests/ruamel_yaml/test_deprecation.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_appliance.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_version.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_line_col.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_literal.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_none.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_class_register.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_indentation.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_json_numbers.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_string.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_copy.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_z_check_debug_leftovers.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_yamlobject.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/__init__.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_program_config.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_flowsequencekey.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_issues.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_datetime.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_int.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_add_xxx.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_tag.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_comments.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_api_change.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_anchor.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_fail.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/roundtrip.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_float.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_spec_examples.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_comment_manipulation.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_collections.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_a_dedent.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_numpy.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_documents.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_yamlfile.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_z_data.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
copying srsly/tests/ruamel_yaml/test_contextmanager.py -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ruamel_yaml
running egg_info
writing srsly.egg-info/PKG-INFO
writing dependency_links to srsly.egg-info/dependency_links.txt
writing entry points to srsly.egg-info/entry_points.txt
writing requirements to srsly.egg-info/requires.txt
writing top-level names to srsly.egg-info/top_level.txt
dependency /Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/Python.h won't be automatically included in the manifest: the path must be relative
dependency /Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/pythread.h won't be automatically included in the manifest: the path must be relative
dependency /Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/Python.h won't be automatically included in the manifest: the path must be relative
dependency /Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/pythread.h won't be automatically included in the manifest: the path must be relative
reading manifest file 'srsly.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE'
writing manifest file 'srsly.egg-info/SOURCES.txt'
copying srsly/ujson/JSONtoObj.c -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson
copying srsly/ujson/objToJSON.c -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson
copying srsly/ujson/py_defines.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson
copying srsly/ujson/ujson.c -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson
copying srsly/ujson/version.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson
copying srsly/ujson/lib/dconv_wrapper.cc -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson/lib
copying srsly/ujson/lib/ultrajson.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson/lib
copying srsly/ujson/lib/ultrajsondec.c -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson/lib
copying srsly/ujson/lib/ultrajsonenc.c -> build/lib.macosx-11.0-arm64-cpython-313/srsly/ujson/lib
copying srsly/msgpack/_packer.cpp -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/_packer.pyx -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/_unpacker.cpp -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/_unpacker.pyx -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/buff_converter.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/pack.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/pack_template.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/sysdep.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/unpack.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/unpack_define.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/msgpack/unpack_template.h -> build/lib.macosx-11.0-arm64-cpython-313/srsly/msgpack
copying srsly/tests/ujson/334-reproducer.json -> build/lib.macosx-11.0-arm64-cpython-313/srsly/tests/ujson
running build_ext
building 'srsly.msgpack._unpacker' extension
clang++ -fno-strict-overflow -Wsign-compare -Wunreachable-code -DNDEBUG -g -O3 -Wall -arch arm64 -mmacosx-version-min=11.0 -Wno-nullability-completeness -Wno-expansion-to-defined -Wno-undef-prefix -fPIC -Werror=unguarded-availability-new -D__LITTLE_ENDIAN__=1 -Isrsly/msgpack "-I/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13" -I. -I/Users/samedwardes/.cache/uv/builds-v0/.tmp4C8EL7/include "-I/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13" -c srsly/msgpack/_unpacker.cpp -o build/temp.macosx-11.0-arm64-cpython-313/srsly/msgpack/_unpacker.o -O2 -Wno-strict-prototypes -Wno-unused-function
[stderr]
warning: no files found matching '*.pxd' under directory 'srsly'
/Users/samedwardes/.cache/uv/builds-v0/.tmp4C8EL7/lib/python3.13/site-packages/setuptools/command/build_py.py:218: _Warning: Package 'srsly.ujson.lib' is absent from the `packages` configuration.
!!
********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'srsly.ujson.lib' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.
This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'srsly.ujson.lib' is explicitly added
to the `packages` configuration field.
Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).
You can read more about "package discovery" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
If you don't want 'srsly.ujson.lib' to be distributed and are
already explicitly excluding 'srsly.ujson.lib' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.
You can read more about "package data files" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/datafiles.html
[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************
!!
check.warn(importable)
srsly/msgpack/_unpacker.cpp:877:59: warning: 'Py_UNICODE' is deprecated [-Wdeprecated-declarations]
877 | static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
| ^
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/cpython/unicodeobject.h:10:1: note: 'Py_UNICODE' has been explicitly marked deprecated here
10 | Py_DEPRECATED(3.13) typedef wchar_t Py_UNICODE;
| ^
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/pyport.h:251:54: note: expanded from macro 'Py_DEPRECATED'
251 | #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
| ^
srsly/msgpack/_unpacker.cpp:878:11: warning: 'Py_UNICODE' is deprecated [-Wdeprecated-declarations]
878 | const Py_UNICODE *u_end = u;
| ^
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/cpython/unicodeobject.h:10:1: note: 'Py_UNICODE' has been explicitly marked deprecated here
10 | Py_DEPRECATED(3.13) typedef wchar_t Py_UNICODE;
| ^
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/pyport.h:251:54: note: expanded from macro 'Py_DEPRECATED'
251 | #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
| ^
srsly/msgpack/_unpacker.cpp:2605:17: error: use of undeclared identifier 'PyObject_AsReadBuffer'; did you mean 'PyObject_GetBuffer'?
2605 | __pyx_t_2 = PyObject_AsReadBuffer(__pyx_v_obj, ((void const **)__pyx_v_buf), __pyx_v_buffer_len); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 136, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~
| PyObject_GetBuffer
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/pybuffer.h:46:17: note: 'PyObject_GetBuffer' declared here
46 | PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view,
| ^
srsly/msgpack/_unpacker.cpp:2605:52: error: cannot initialize a parameter of type 'Py_buffer *' with an rvalue of type 'const void **'
2605 | __pyx_t_2 = PyObject_AsReadBuffer(__pyx_v_obj, ((void const **)__pyx_v_buf), __pyx_v_buffer_len); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 136, __pyx_L1_error)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/pybuffer.h:46:62: note: passing argument to parameter 'view' here
46 | PyAPI_FUNC(int) PyObject_GetBuffer(PyObject *obj, Py_buffer *view,
| ^
srsly/msgpack/_unpacker.cpp:9638:27: error: no matching function for call to '_PyLong_AsByteArray'
9638 | int ret = _PyLong_AsByteArray((PyLongObject *)v,
| ^~~~~~~~~~~~~~~~~~~
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/cpython/longobject.h:111:17: note: candidate function not viable: requires 6 arguments, but 5 were provided
111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
| ^ ~~~~~~~~~~~~~~~~
112 | unsigned char* bytes, size_t n,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
113 | int little_endian, int is_signed, int with_exceptions);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
srsly/msgpack/_unpacker.cpp:9834:27: error: no matching function for call to '_PyLong_AsByteArray'
9834 | int ret = _PyLong_AsByteArray((PyLongObject *)v,
| ^~~~~~~~~~~~~~~~~~~
/Users/samedwardes/Library/Application Support/uv/python/cpython-3.13.0-macos-aarch64-none/include/python3.13/cpython/longobject.h:111:17: note: candidate function not viable: requires 6 arguments, but 5 were provided
111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
| ^ ~~~~~~~~~~~~~~~~
112 | unsigned char* bytes, size_t n,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
113 | int little_endian, int is_signed, int with_exceptions);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings and 4 errors generated.
error: command '/usr/bin/clang++' failed with exit code 1
Besides the required code changes to use the buffer protocol, this will probably require upgrading cython, which is blocked by the issue mentioned in #97
Thank you! I figured this was on your radar. Just wanted to share in case.
I'm not related to the project. Just came here because I had the same issue :)
Porting over at least https://github.com/msgpack/msgpack-python/pull/383 and https://github.com/msgpack/msgpack-python/pull/468 would probably be a start, but I wouldn't be surprised if there were more.
Is srsly.msgpack regarded as a permanent fork of msgpack, or is it intended to be possible to sync it up with current versions? It seems to be several years behind.
Separately from Python 3.13, it would also be nice to add support for free-threaded Python too. I'm guessing that will require tracking support in the forked projects, or working out support separately here.
See https://py-free-threading.github.io for more documentation and help for supporting free-threading Python in native code.
As of today, srsly builds with 3.13 without any issue, except a failing test that would require porting https://github.com/cloudpipe/cloudpickle/pull/534. It leads to an annoying behaviour where some serialisations are different for 3.13, but apart from that, pretty straightforward. I'd send a PR but honestly looking at it and porting it is probably faster for a team member than reviewing and merging someone else's change.
This should be marked as closed with the release of v2.5.1 which installs and works on Python 3.13.
Confirmed, 2.5.1 works for me now. I will close this issue.
~/tmp
❯ mkcd srsly-test-2
~/tmp/srsly-test-2
❯ uv venv --python 3.13
Using CPython 3.13.0
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
~/tmp/srsly-test-2
❯ uv pip install srsly
Resolved 2 packages in 78ms
Prepared 2 packages in 40ms
Installed 2 packages in 3ms
+ catalogue==2.0.10
+ srsly==2.5.1