[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2022-01-31 Thread STINNER Victor


STINNER Victor  added the comment:

Python 3.10 is released. It's too late, I close the issue.

--
resolution:  -> out of date
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2021-04-08 Thread Brett Cannon

Brett Cannon  added the comment:

Much like the question about load_module(), replacing find_module() with 
find_spec() can be helped with things like 
importlib.util.spec_from_file_location() and .spec_from_loader() 
(https://docs.python.org/3/library/importlib.html#importlib.util.spec_from_file_location
 and 
https://docs.python.org/3/library/importlib.html#importlib.util.spec_from_loader),
 but there isn't a 1:1 swap, so it will take some thought.

And the docs in importlib for things like find_module() say to implement 
find_spec() which then mentions spec_from_loader() may be useful.

As for replicating the subprocess docs approach, that's a little different 
since those alternatives in the stdlib are not going anywhere while the stuff 
in importlib is going to be gone in 3.12 so it will only last for two years.

And BTW I took care of six for you knowing you were going to ask about it if I 
didn't. 

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2021-04-08 Thread Sviatoslav Sydorenko

Sviatoslav Sydorenko  added the comment:

@vstinner: I think I figure out the solution — 
https://github.com/pypa/setuptools/pull/2633

--
nosy: +webknjaz

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2021-04-08 Thread Florian Bruhin


Change by Florian Bruhin :


--
nosy: +The Compiler

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2021-04-08 Thread STINNER Victor


STINNER Victor  added the comment:

Concrete issue: setuptools defines a VendorImporter class with find_module() 
method, but no find_spec() method. How can it be ported to Python 3.10?

https://github.com/pypa/setuptools/issues/2632

--
nosy: +hroncok

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2021-04-08 Thread STINNER Victor


STINNER Victor  added the comment:

find_module() and find_loader() are now also deprecated (bpo-42134). Currently, 
What's New in Python 3.10 says: "(superseded by exec_module())".

It would be great to have a documentation like the good subprocess 
"replacement" documentation:
https://docs.python.org/dev/library/subprocess.html#subprocess-replacements

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2021-03-18 Thread Brett Cannon


Brett Cannon  added the comment:

The documentation states in the deprecation notice for 
https://docs.python.org/3/library/importlib.html#importlib.abc.Loader.load_module
 that create_module() and exec_module() are what are necessary. But the it 
isn't a direct 1:1 replacement and people are expected to use all of the helper 
code so it's going to be very specific to the need of the code.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43540] importlib: Document how to replace load_module() in What's New in Python 3.10

2021-03-18 Thread STINNER Victor


New submission from STINNER Victor :

The load_module() method of importlib loaders is deprecated which cause test 
failures in multiple projects.

It is not easy to guess how to replace it. Examples:

* pkg_resources fix adding create_module() and exec_module() methods: 
https://github.com/pypa/setuptools/commit/6ad2fb0b78d11e22672f56ef9d65d13ebd3475a9
* pkg_resources fix replacing importlib.load_module() function call (not loader 
methods) with importlib.import_module(): 
https://github.com/pypa/setuptools/commit/a54d9e6b30c6da0542698144d2ff149ae7cadc9a

Cython uses this code:

if sys.version_info[:2] < (3, 3):
import imp
def load_dynamic(name, module_path):
return imp.load_dynamic(name, module_path)
else:
from importlib.machinery import ExtensionFileLoader
def load_dynamic(name, module_path):
return ExtensionFileLoader(name, module_path).load_module()

Fixed Cython code:

if sys.version_info < (3, 5):
import imp
def load_dynamic(name, module_path):
return imp.load_dynamic(name, module_path)
else:
import importlib.util as _importlib_util
def load_dynamic(name, module_path):
spec = _importlib_util.spec_from_file_location(name, module_path)
module = _importlib_util.module_from_spec(spec)
# sys.modules[name] = module
spec.loader.exec_module(module)
return module

--
assignee: docs@python
components: Documentation, Library (Lib)
messages: 389007
nosy: brett.cannon, docs@python, vstinner
priority: normal
severity: normal
status: open
title: importlib: Document how to replace load_module() in What's New in Python 
3.10
versions: Python 3.10

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com