Skip to content

add a cell construtor, and expose the cell type in Lib/types.py #80092

Closed

Description

@pierreglaser
BPO 35911
Nosy @pitrou, @serhiy-storchaka, @1st1, @pierreglaser
PRs
  • bpo-35911: add cell constructor #11771
  • bpo-35911: add cell constructor #11771
  • Files
  • cell.patch
  • test_cell.py
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = <Date 2019-02-07.19:37:16.139>
    created_at = <Date 2019-02-06.10:55:47.309>
    labels = ['type-feature', '3.8']
    title = 'add a cell construtor, and expose the cell type in Lib/types.py'
    updated_at = <Date 2019-02-07.19:37:16.138>
    user = 'https://github.com/pierreglaser'

    bugs.python.org fields:

    activity = <Date 2019-02-07.19:37:16.138>
    actor = 'pitrou'
    assignee = 'none'
    closed = True
    closed_date = <Date 2019-02-07.19:37:16.139>
    closer = 'pitrou'
    components = []
    creation = <Date 2019-02-06.10:55:47.309>
    creator = 'pierreglaser'
    dependencies = []
    files = ['48105', '48106']
    hgrepos = []
    issue_num = 35911
    keywords = ['patch']
    message_count = 3.0
    messages = ['334924', '334931', '335037']
    nosy_count = 4.0
    nosy_names = ['pitrou', 'serhiy.storchaka', 'yselivanov', 'pierreglaser']
    pr_nums = ['11771', '11771']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue35911'
    versions = ['Python 3.8']

    Activity

    1. pierreglaser commented on Feb 6, 2019

      pierreglasermannequin
      MannequinAuthor

      cell objects are containers for the free variables of functions defined in a
      local scope. They are located in a function's __closure__ attribute (when
      it is not None). A cell is a very simple object, with a single (optional, e.g
      the 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. Workarounds
      exist, but are hacky, and involve the creation of intermediate, unused
      functions.

      Why would cell-creation be useful? because creating cells happens in pickle
      extensions modules designed to save user-defined functions and classes
      (https://github.com/cloudpipe/cloudpickle) (*). These moudules are dependencies of
      many widely-used data science frameworks (pyspark, ray, dask). Exposing a cell
      constructor will simplify theses extensions code base, and alleviate their
      maintenance cost.

      I propose to add and expose a simple cell constructor, that accepts 0 (empty
      cells) or 1 arguments. I also propose to expose the cell type in Lib/types.py
      (as types.CellType)

      (*): see related issues: https://bugs.python.org/issue35900

    2. pitrou commented on Feb 6, 2019

      @pitrou
      Member

      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 API

      You may want to read more in the developer's guide:
      https://devguide.python.org/

    3. pitrou commented on Feb 7, 2019

      @pitrou
      Member

      New changeset df8d2cd by Antoine Pitrou (Pierre Glaser) in branch 'master':
      bpo-35911: add cell constructor (GH-11771)
      df8d2cd

    4. transferred this issue fromon Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      3.8 (EOL)end of lifetype-featureA feature request or enhancement

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions