Skip to content

ENH: Add support for 3.11#1199

Merged
prabhuramachandran merged 15 commits into
enthought:masterfrom
larsoner:3.11
May 7, 2023
Merged

ENH: Add support for 3.11#1199
prabhuramachandran merged 15 commits into
enthought:masterfrom
larsoner:3.11

Conversation

@larsoner
Copy link
Copy Markdown
Collaborator

Closes #1188

First step, show the failure from conda-forge/mayavi-feedstock#70

@larsoner
Copy link
Copy Markdown
Collaborator Author

No VTK wheels on PyPI yet so this can't move forward without using conda-forge or similar.

Also I'm not sure any changes are actually needed at the Mayavi end to support Python 3.11 -- perhaps just a newer version of Cython (with 3.11 compat) that generates 3.11-compatible code will fix things. I'll close for now...

@larsoner larsoner closed this Dec 21, 2022
@larsoner larsoner reopened this Dec 21, 2022
@larsoner
Copy link
Copy Markdown
Collaborator Author

Okay from working on conda-forge/mayavi-feedstock#70 it's clear that tvtk/src/array_ext.c needs to be regenerated with a newer Cython version. I've done that using 0.29.32

@larsoner larsoner changed the title WIP: Add support for 3.11 ENH: Add support for 3.11 Dec 21, 2022
@larsoner
Copy link
Copy Markdown
Collaborator Author

Okay this looks good to go now! Using the array_ext.c in conda-forge/mayavi-feedstock#70 everything seems to pass on 3.11

@larsoner
Copy link
Copy Markdown
Collaborator Author

Things fail with the latest PyPI 9.2.5, I'll push a commit here to test it which should fail, then I'll fix it

@larsoner
Copy link
Copy Markdown
Collaborator Author

Task failed successfully:

Instantiating <class 'vtkmodules.vtkFiltersFlowPaths.vtkLagrangianParticleTracker'>
    Calling vtkLagrangianParticleTracker.GetCellLengthComputationMode()
  Fatal Python error: Segmentation fault

time to push the fix

@larsoner
Copy link
Copy Markdown
Collaborator Author

There appears to be a 3.11 bug with traits now somewhere:

_________________________ TestArraySource.test_pickle __________________________
mayavi/tests/test_array_source.py:158: in test_pickle
    data = pickle.dumps(d)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/traits/has_traits.py:1380: in __reduce_ex__
    return (__newobj__, (self.__class__,), self.__getstate__())
mayavi/core/base.py:174: in __getstate__
    return state_pickler.dumps(self)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:968: in dumps
    return StatePickler().dumps(value)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:308: in dumps
    return pickle.dumps(self._do(value))
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:358: in _do
    return self._do_instance(obj)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:410: in _do_instance
    data = self._do(state)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:347: in _do
    return self.type_map[obj_type](obj)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:461: in _do_dict
    vals = [self._do(x) for x in value.values()]
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:461: in <listcomp>
    vals = [self._do(x) for x in value.values()]
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:347: in _do
    return self.type_map[obj_type](obj)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:461: in _do_dict
    vals = [self._do(x) for x in value.values()]
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:461: in <listcomp>
    vals = [self._do(x) for x in value.values()]
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:358: in _do
    return self._do_instance(obj)
/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/apptools/persistence/state_pickler.py:403: in _do_instance
    state.pop("__traits_version__", None)
E   AttributeError: 'NoneType' object has no attribute 'pop'

I'll revert the CIs testing 3.11 for now...

@larsoner
Copy link
Copy Markdown
Collaborator Author

Okay, this is once again ready for review/merge from my end, and you can see the conda-forge build succeed in conda-forge/mayavi-feedstock#71

Copy link
Copy Markdown
Member

@prabhuramachandran prabhuramachandran left a comment

Choose a reason for hiding this comment

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

I am so sorry, I completely missed this and made the same darned fixes in my PR here: #1233. :( I will drop that PR and instead merge this since everything passed at this point.

@prabhuramachandran prabhuramachandran merged commit a448ba4 into enthought:master May 7, 2023
@pmav99
Copy link
Copy Markdown

pmav99 commented May 7, 2023

Great! Any ideas about when a release is going to be made?

@prabhuramachandran
Copy link
Copy Markdown
Member

I would want to spend a bit more time fixing any other breakages and resolve #1228 before a release.

@pmav99
Copy link
Copy Markdown

pmav99 commented May 7, 2023

Thanks for the heads up.

@larsoner larsoner deleted the 3.11 branch May 8, 2023 15:05
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.

BUG: Not 3.11 compatible

3 participants