
This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.
Created on2019-02-06 10:55 bypierreglaser, last changed2022-04-11 14:59 byadmin. This issue is nowclosed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| cell.patch | pierreglaser,2019-02-06 10:55 | |||
| test_cell.py | pierreglaser,2019-02-06 10:57 | |||
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 11771 | merged | pierreglaser,2019-02-06 16:37 | |
| PR 11771 | merged | pierreglaser,2019-02-06 16:37 | |
| Messages (3) | |||
|---|---|---|---|
| msg334924 -(view) | Author: Pierre Glaser (pierreglaser)* | Date: 2019-02-06 10:55 | |
cell objects are containers for the free variables of functions defined in alocal scope. They are located in a function's __closure__ attribute (whenit is not None). A cell is a very simple object, with a single (optional, e.gthe cell can be empty) attribute: cell_contents.The C/Python API provides a constructor to create such objects (PyCell_New).However no cell.__new__ method is exposed to the pure python user. Workaroundsexist, but are hacky, and involve the creation of intermediate, unusedfunctions.Why would cell-creation be useful? because creating cells happens in pickleextensions modules designed to save user-defined functions and classes(https://github.com/cloudpipe/cloudpickle) (*). These moudules are dependencies ofmany widely-used data science frameworks (pyspark, ray, dask). Exposing a cellconstructor will simplify theses extensions code base, and alleviate theirmaintenance cost.I propose to add and expose a simple cell constructor, that accepts 0 (emptycells) or 1 arguments. I also propose to expose the cell type inLib/types.py(as types.CellType)(*): see related issues:https://bugs.python.org/issue35900 | |||
| msg334931 -(view) | Author: Antoine Pitrou (pitrou)*![]() | Date: 2019-02-06 11:53 | |
Hi Pierre,You'll want to submit your patch as a GitHub pull request.Also your PR will have to contain:- tests for the new Python-facing API- documentation for the new APIYou may want to read more in the developer's guide:https://devguide.python.org/ | |||
| msg335037 -(view) | Author: Antoine Pitrou (pitrou)*![]() | Date: 2019-02-07 19:36 | |
New changesetdf8d2cde63c865446468351f8f648e1c7bd45109 by Antoine Pitrou (Pierre Glaser) in branch 'master':bpo-35911: add cell constructor (GH-11771)https://github.com/python/cpython/commit/df8d2cde63c865446468351f8f648e1c7bd45109 | |||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:59:10 | admin | set | github: 80092 |
| 2019-02-07 19:37:16 | pitrou | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2019-02-07 19:36:58 | pitrou | set | messages: +msg335037 |
| 2019-02-06 16:37:43 | pierreglaser | set | stage: patch review pull_requests: +pull_request11739 |
| 2019-02-06 16:37:33 | pierreglaser | set | stage: (no value) pull_requests: +pull_request11738 |
| 2019-02-06 11:53:28 | pitrou | set | messages: +msg334931 |
| 2019-02-06 11:50:52 | pitrou | set | nosy: +serhiy.storchaka |
| 2019-02-06 10:57:14 | pierreglaser | set | files: +test_cell.py |
| 2019-02-06 10:55:47 | pierreglaser | create | |