Repository navigation
[SYNPY-1926] Added support for python 3.15 - #1470
andrewelamb wants to merge 18 commits into
Conversation
ac5eab2 to
7b2c442
Compare
linglp
left a comment
There was a problem hiding this comment.
The docker file is currently FROM python:3.14-slim, but that would need to be updated if we want to support 3.15? Also, in the pyproject.toml should also be updated? Currently, there's target-version = ['py311']
Yep, looks like I had a commit that didn't get pushed!
|
There was a problem hiding this comment.
This LGTM. But I noticed some integration tests failure:
=========================== short test summary info ===========================
FAILED tests/integration/synapseclient/models/async/test_table_async.py::TestRowStorage::test_store_rows_from_df_with_datetime_columns - synapseclient.core.exceptions.SynapseHTTPError: 400 Client Error: Value at [0,1] was not a valid DATE. Invalid format: "1609502400000.0" is malformed at "0000.0"
FAILED tests/integration/synapseclient/models/async/test_table_async.py::TestRowStorage::test_store_rows_with_quotes_and_apostrophes_ellipses - synapseclient.core.exceptions.SynapseHTTPError: 400 Client Error: Value at [0,5] was not a valid INTEGER. For input string: "10.0"
FAILED tests/integration/synapseclient/models/async/test_entityview_async.py::TestEntityView::test_update_rows_and_annotations - AssertionError: Series are different
Series values are different (75.0 %)
[index]: [0, 1, 2, 3]
[left]: [None, None, None, value4]
[right]: <StringArray>
['value1', 'value2', 'value3', 'value4']
Length: 4, dtype: str
At positional index 0, first diff: None != 'value1'
FAILED tests/integration/synapseclient/models/async/test_table_async.py::TestUpsertRows::test_upsert_all_data_types_using_dataframe - synapseclient.core.exceptions.SynapseHTTPError: 400 Client Error: Value at [0,2] was not a valid INTEGER. For input string: "1.0"
FAILED tests/integration/synapseclient/models/async/test_table_async.py::TestUpsertRows::test_upsert_all_data_types_using_csv - synapseclient.core.exceptions.SynapseHTTPError: 400 Client Error: Value at [0,2] was not a valid INTEGER. For input string: "11.0"
ERROR tests/integration/synapseclient/models/async/test_table_async.py::TestQuerying::test_query_to_csv - synapseclient.core.exceptions.SynapseHTTPError: 400 Client Error: Value at [0,1] was not a valid INTEGER. For input string: "1.0"
ERROR tests/integration/synapseclient/models/async/test_table_async.py::TestQuerying::test_part_mask_query_everything - synapseclient.core.exceptions.SynapseHTTPError: 400 Client Error: Value at [0,1] was not a valid INTEGER. For input string: "1.0"
ERROR tests/integration/synapseclient/models/async/test_table_async.py::TestQuerying::test_part_mask_query_results_only - synapseclient.core.exceptions.SynapseHTTPError: 400 Client Error: Value at [0,1] was not a valid INTEGER. For input string: "1.0"
=
Could you help look into the failures and make sure the integration tests all pass before merging?
Problem:
python_requires = >=3.11, <3.15. Users cannot installsynapseclienton Python 3.15 with pip.Solution:
This PR follows the "Adding a new Python version" checklist in
CONTRIBUTING.md.Package metadata (
setup.cfg)Programming Language :: Python :: 3.15classifier.python_requiresto>=3.11, <3.16.CI (
.github/workflows/build.yml,.github/workflows/validate-release.yml)3.15to theunit-testsmatrix and to thecheck-deploymatrix.Test{Ubuntu,Windows,Macos}MaximumPythonSynapse profiles. Python 3.14 still gets unit tests on all platforms.validate-releasenow uses Python 3.15.Docs
README.md,CONTRIBUTING.md,docs/tutorials/installation.mdandCLAUDE.mdnow show 3.15 as the newest supported version. The examples in the CONTRIBUTING version checklist now use 3.16.Download code (
synapseclient/core/download/download_functions.py)filenameparameter ofos.path.getsizeis positional-only. Two calls usedos.path.getsize(filename=temp_destination), which raisedTypeError: getsize() got some positional-only arguments passed as keyword arguments: 'filename'. This madetests/unit/synapseclient/core/unit_test_download.py::test_mock_downloadfail on 3.15. Both calls now pass the argument by position.