Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-1635741: In pickle module, inject module state from class methods #23304

Closed
wants to merge 2 commits into from

Conversation

koubaa
Copy link
Contributor

@koubaa koubaa commented Nov 15, 2020

This PR prepares for changing to heap types.
When switching to heap types, the clinic can be used to get the module state.

https://bugs.python.org/issue1635741

@koubaa koubaa changed the title bpo-1635741 - inject module state from class methods bpo-1635741: In pickle module, inject module state from class methods Nov 15, 2020
@koubaa
Copy link
Contributor Author

koubaa commented Nov 15, 2020

@vstinner @corona10 @shihai1991 please review

self->stack->mark_set = self->num_marks != 0;
self->stack->fence = self->num_marks ?
self->marks[self->num_marks - 1] : 0;
return mark;
}

static int
load_none(UnpicklerObject *self)
load_none(UnpicklerObject *self, PickleState *st)
Copy link
Contributor Author

@koubaa koubaa Nov 15, 2020

Choose a reason for hiding this comment

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

PickleState is not used here, but is added as an argument to avoid complicating the macro/switch case in

static PyObject *
load(UnpicklerObject *self, PickleState *st)

@tiran
Copy link
Member

tiran commented Nov 18, 2020

Most modules are using state for the state variable. Could you please replace st with state so we have a consistent naming scheme across the code base?

@koubaa
Copy link
Contributor Author

koubaa commented Nov 20, 2020

Most modules are using state for the state variable. Could you please replace st with state so we have a consistent naming scheme across the code base?

@tiran I did that in my initial draft here. The reason I didn't do it here is because there are local variables named state in some functions (see for example line 3949 in save_reduce. Do you have a suggestion on what to change those names to? I don't understand exactly what those variables represent

@github-actions
Copy link

This PR is stale because it has been open for 30 days with no activity.

@github-actions github-actions bot added the stale Stale PR or inactive for long period of time. label Dec 21, 2020
Copy link
Member

@shihai1991 shihai1991 left a comment

Choose a reason for hiding this comment

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

The reason I didn't do it here is because there are local variables named state in some functions (see for example line 3949 in save_reduce.

the state would be more exact. If there have other arguments have own this name, keep st unchanged is not a big probleam.

koubaa added 2 commits March 4, 2021 20:49
when switching to heap types, the clinic can be used to get the module state therte
@koubaa koubaa force-pushed the bpo-1635741-picklestate-inject branch from d7cad26 to eea5c35 Compare March 7, 2021 17:21
@koubaa
Copy link
Contributor Author

koubaa commented Mar 7, 2021

@shihai1991 @vstinner I addressed these comments

Copy link
Member

@shihai1991 shihai1991 left a comment

Choose a reason for hiding this comment

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

This PR is huge :) . About adding parenthesis, I will update it when those code have relation with the bpo.

@iritkatriel
Copy link
Member

https://bugs.python.org/issue1635741 is closed. What is the status of this PR?

@vstinner
Copy link
Member

The change is still relevant, but should use a new issue number.

Moreover, the SC asked to put the conversion of static types to heap types on hold. @encukou and @erlend-aasland wrote https://peps.python.org/pep-0687/ which may unblock the situation but it's still a draft.

@erlend-aasland
Copy link
Contributor

The change is still relevant, but should use a new issue number.

Moreover, the SC asked to put the conversion of static types to heap types on hold. @encukou and @erlend-aasland wrote https://peps.python.org/pep-0687/ which may unblock the situation but it's still a draft.

FYI, PEP 687 was accepted.

@github-actions github-actions bot removed the stale Stale PR or inactive for long period of time. label Jul 31, 2022
@encukou
Copy link
Member

encukou commented Mar 28, 2024

Pickle module state was isolated in #102982. koubaa is listed as co-author, so I hope some of this work made it in at the end.

@encukou encukou closed this Mar 28, 2024
@erlend-aasland
Copy link
Contributor

erlend-aasland commented Mar 28, 2024

Pickle module state was isolated in #102982. koubaa is listed as co-author, so I hope some of this work made it in at the end.

It did; PR #102982 was based off of Mohamed's work in #23188 (IIRC, I cherry-picked the commits from this that PR onto my new branch). See also #23188 (comment).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants