mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
[3.12] gh-116608: undeprecate functional importlib.resources API (#132206)
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
This commit is contained in:
parent
4c5e84dbbe
commit
3fc57f86b1
3 changed files with 18 additions and 56 deletions
|
|
@ -99,11 +99,10 @@ for example, a package and its resources can be imported from a zip file using
|
|||
Added support for *traversable* representing a directory.
|
||||
|
||||
|
||||
Deprecated functions
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
Functional API
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
An older, deprecated set of functions is still available, but is
|
||||
scheduled for removal in a future version of Python.
|
||||
An older, previously deprecated set of functions is still available.
|
||||
The main drawback of these functions is that they do not support
|
||||
directories: they assume all resources are located directly within a *package*.
|
||||
|
||||
|
|
@ -116,8 +115,6 @@ directories: they assume all resources are located directly within a *package*.
|
|||
|
||||
The ``Package`` type is defined as ``Union[str, ModuleType]``.
|
||||
|
||||
.. deprecated:: 3.12
|
||||
|
||||
|
||||
.. data:: Resource
|
||||
|
||||
|
|
@ -138,11 +135,9 @@ directories: they assume all resources are located directly within a *package*.
|
|||
sub-resources (i.e. it cannot be a directory). This function returns a
|
||||
``typing.BinaryIO`` instance, a binary I/O stream open for reading.
|
||||
|
||||
.. deprecated:: 3.11
|
||||
This function is roughly equivalent to::
|
||||
|
||||
Calls to this function can be replaced by::
|
||||
|
||||
files(package).joinpath(resource).open('rb')
|
||||
files(package).joinpath(resource).open('rb')
|
||||
|
||||
|
||||
.. function:: open_text(package, resource, encoding='utf-8', errors='strict')
|
||||
|
|
@ -159,11 +154,9 @@ directories: they assume all resources are located directly within a *package*.
|
|||
This function returns a ``typing.TextIO`` instance, a text I/O stream open
|
||||
for reading.
|
||||
|
||||
.. deprecated:: 3.11
|
||||
This function is roughly equivalent to::
|
||||
|
||||
Calls to this function can be replaced by::
|
||||
|
||||
files(package).joinpath(resource).open('r', encoding=encoding)
|
||||
files(package).joinpath(resource).open('r', encoding=encoding)
|
||||
|
||||
|
||||
.. function:: read_binary(package, resource)
|
||||
|
|
@ -177,11 +170,9 @@ directories: they assume all resources are located directly within a *package*.
|
|||
sub-resources (i.e. it cannot be a directory). This function returns the
|
||||
contents of the resource as :class:`bytes`.
|
||||
|
||||
.. deprecated:: 3.11
|
||||
This function is roughly equivalent to::
|
||||
|
||||
Calls to this function can be replaced by::
|
||||
|
||||
files(package).joinpath(resource).read_bytes()
|
||||
files(package).joinpath(resource).read_bytes()
|
||||
|
||||
|
||||
.. function:: read_text(package, resource, encoding='utf-8', errors='strict')
|
||||
|
|
@ -196,11 +187,9 @@ directories: they assume all resources are located directly within a *package*.
|
|||
have the same meaning as with built-in :func:`open`. This function
|
||||
returns the contents of the resource as :class:`str`.
|
||||
|
||||
.. deprecated:: 3.11
|
||||
This function is roughly equivalent to::
|
||||
|
||||
Calls to this function can be replaced by::
|
||||
|
||||
files(package).joinpath(resource).read_text(encoding=encoding)
|
||||
files(package).joinpath(resource).read_text(encoding=encoding)
|
||||
|
||||
|
||||
.. function:: path(package, resource)
|
||||
|
|
@ -217,11 +206,9 @@ directories: they assume all resources are located directly within a *package*.
|
|||
within *package*; it may not contain path separators and it may not have
|
||||
sub-resources (i.e. it cannot be a directory).
|
||||
|
||||
.. deprecated:: 3.11
|
||||
This function is roughly equivalent to ::
|
||||
|
||||
Calls to this function can be replaced using :func:`as_file`::
|
||||
|
||||
as_file(files(package).joinpath(resource))
|
||||
as_file(files(package).joinpath(resource))
|
||||
|
||||
|
||||
.. function:: is_resource(package, name)
|
||||
|
|
@ -232,11 +219,9 @@ directories: they assume all resources are located directly within a *package*.
|
|||
*package* is either a name or a module object which conforms to the
|
||||
``Package`` requirements.
|
||||
|
||||
.. deprecated:: 3.11
|
||||
This function is roughly equivalent to::
|
||||
|
||||
Calls to this function can be replaced by::
|
||||
|
||||
files(package).joinpath(resource).is_file()
|
||||
files(package).joinpath(resource).is_file()
|
||||
|
||||
|
||||
.. function:: contents(package)
|
||||
|
|
@ -248,8 +233,6 @@ directories: they assume all resources are located directly within a *package*.
|
|||
*package* is either a name or a module object which conforms to the
|
||||
``Package`` requirements.
|
||||
|
||||
.. deprecated:: 3.11
|
||||
This function is roughly equivalent to::
|
||||
|
||||
Calls to this function can be replaced by::
|
||||
|
||||
(resource.name for resource in files(package).iterdir() if resource.is_file())
|
||||
(resource.name for resource in files(package).iterdir() if resource.is_file())
|
||||
|
|
|
|||
|
|
@ -12,21 +12,6 @@
|
|||
Resource = str
|
||||
|
||||
|
||||
def deprecated(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
warnings.warn(
|
||||
f"{func.__name__} is deprecated. Use files() instead. "
|
||||
"Refer to https://importlib-resources.readthedocs.io"
|
||||
"/en/latest/using.html#migrating-from-legacy for migration advice.",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return func(*args, **kwargs)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
def normalize_path(path: Any) -> str:
|
||||
"""Normalize a path by ensuring it is a string.
|
||||
|
||||
|
|
@ -39,19 +24,16 @@ def normalize_path(path: Any) -> str:
|
|||
return file_name
|
||||
|
||||
|
||||
@deprecated
|
||||
def open_binary(package: Package, resource: Resource) -> BinaryIO:
|
||||
"""Return a file-like object opened for binary reading of the resource."""
|
||||
return (_common.files(package) / normalize_path(resource)).open('rb')
|
||||
|
||||
|
||||
@deprecated
|
||||
def read_binary(package: Package, resource: Resource) -> bytes:
|
||||
"""Return the binary contents of the resource."""
|
||||
return (_common.files(package) / normalize_path(resource)).read_bytes()
|
||||
|
||||
|
||||
@deprecated
|
||||
def open_text(
|
||||
package: Package,
|
||||
resource: Resource,
|
||||
|
|
@ -64,7 +46,6 @@ def open_text(
|
|||
)
|
||||
|
||||
|
||||
@deprecated
|
||||
def read_text(
|
||||
package: Package,
|
||||
resource: Resource,
|
||||
|
|
@ -80,7 +61,6 @@ def read_text(
|
|||
return fp.read()
|
||||
|
||||
|
||||
@deprecated
|
||||
def contents(package: Package) -> Iterable[str]:
|
||||
"""Return an iterable of entries in `package`.
|
||||
|
||||
|
|
@ -91,7 +71,6 @@ def contents(package: Package) -> Iterable[str]:
|
|||
return [path.name for path in _common.files(package).iterdir()]
|
||||
|
||||
|
||||
@deprecated
|
||||
def is_resource(package: Package, name: str) -> bool:
|
||||
"""True if `name` is a resource inside `package`.
|
||||
|
||||
|
|
@ -104,7 +83,6 @@ def is_resource(package: Package, name: str) -> bool:
|
|||
)
|
||||
|
||||
|
||||
@deprecated
|
||||
def path(
|
||||
package: Package,
|
||||
resource: Resource,
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
undeprecate functional API for ``importlib.resources``
|
||||
Loading…
Add table
Add a link
Reference in a new issue