[Python-ideas] PEP 550 v2

Stefan Krah stefan at bytereef.org
Wed Aug 16 12:08:56 EDT 2017


On Wed, Aug 16, 2017 at 11:00:43AM -0400, Yury Selivanov wrote:
> "Context" is an established term for what PEP 550 tries to accomplish.
> It's used in multiple languages and runtimes, and while researching
> this topic I didn't see anybody confused with the concept on
> StackOverflow/etc.

For me a context is a "single thing" that is usually used to thread state
through functions.

I guess I'd call "environment" what you call "context".


> In C:
> 
>    PyContextItem * _current_ctx = PyContext_NewItem("decimal context");
>    if (_current_ctx == NULL) { /* error */ }
> 
>    # later when you set decimal context
>    PyDecContextObject *ctx;
>    ...
>    if (PyContext_SetItem(_current_ctx, (PyObject*)ctx)) { /* error */ }
> 
>    # whenever you need to get the current context
>    PyDecContextObject *ctx = PyContext_GetItem(_current_ctx);
>    if (ctx == NULL) { /* error */ }
>    if (ctx == Py_None) { /* not initialized, nothing is there */ }

Thanks! This makes it a lot clearer.


I'd probably use (stealing Nick's key suggestion):

PyEnvKey *_current_context_key = PyEnv_NewKey("___DECIMAL_CONTEXT__");

...

PyDecContextObject *ctx = PyEnv_GetItem(_current_ctx_key);



Stefan Krah





More information about the Python-ideas mailing list