aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-12-24 22:01:20 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-12-24 22:01:20 +0000
commitbd0e2de0b1035962a4d5b9e847eaa6508fad7fcf (patch)
tree79878ca309f9f7fada064f9b78b4223af4635f28 /contrib/python
parentbe43a4691ebdd4dbe260a8d77df4cd8423b14c05 (diff)
parente6bd80ded127cd064560f7ea471974b602770cb1 (diff)
downloadydb-bd0e2de0b1035962a4d5b9e847eaa6508fad7fcf.tar.gz
Merge branch 'PR'
Diffstat (limited to 'contrib/python')
-rw-r--r--contrib/python/Pillow/py3/.yandex_meta/__init__.py4
-rw-r--r--contrib/python/anyio/.dist-info/METADATA44
-rw-r--r--contrib/python/anyio/anyio/__init__.py2
-rw-r--r--contrib/python/anyio/anyio/_backends/_asyncio.py282
-rw-r--r--contrib/python/anyio/anyio/_backends/_trio.py12
-rw-r--r--contrib/python/anyio/anyio/_core/_asyncio_selector_thread.py150
-rw-r--r--contrib/python/anyio/anyio/_core/_exceptions.py2
-rw-r--r--contrib/python/anyio/anyio/_core/_fileio.py4
-rw-r--r--contrib/python/anyio/anyio/_core/_sockets.py93
-rw-r--r--contrib/python/anyio/anyio/_core/_synchronization.py13
-rw-r--r--contrib/python/anyio/anyio/abc/__init__.py12
-rw-r--r--contrib/python/anyio/anyio/abc/_eventloop.py6
-rw-r--r--contrib/python/anyio/anyio/abc/_tasks.py6
-rw-r--r--contrib/python/anyio/ya.make4
-rw-r--r--contrib/python/fonttools/.dist-info/METADATA9
-rw-r--r--contrib/python/fonttools/fontTools/__init__.py2
-rw-r--r--contrib/python/fonttools/fontTools/designspaceLib/__init__.py2
-rw-r--r--contrib/python/fonttools/fontTools/feaLib/builder.py39
-rw-r--r--contrib/python/fonttools/ya.make2
-rw-r--r--contrib/python/grpcio/py3/.yandex_meta/__init__.py2
-rw-r--r--contrib/python/scipy/py3/tests/_build_utils/ya.make26
-rw-r--r--contrib/python/scipy/py3/tests/_lib/ya.make38
-rw-r--r--contrib/python/scipy/py3/tests/cluster/ya.make29
-rw-r--r--contrib/python/scipy/py3/tests/constants/ya.make27
-rw-r--r--contrib/python/scipy/py3/tests/fft/ya.make42
-rw-r--r--contrib/python/scipy/py3/tests/fftpack/ya.make34
-rw-r--r--contrib/python/scipy/py3/tests/integrate/ya.make32
-rw-r--r--contrib/python/scipy/py3/tests/interpolate/ya.make41
-rw-r--r--contrib/python/scipy/py3/tests/io/ya.make48
-rw-r--r--contrib/python/scipy/py3/tests/linalg/ya.make54
-rw-r--r--contrib/python/scipy/py3/tests/misc/ya.make28
-rw-r--r--contrib/python/scipy/py3/tests/ndimage/ya.make36
-rw-r--r--contrib/python/scipy/py3/tests/odr/ya.make26
-rw-r--r--contrib/python/scipy/py3/tests/optimize/ya.make69
-rw-r--r--contrib/python/scipy/py3/tests/signal/ya.make46
-rw-r--r--contrib/python/scipy/py3/tests/sparse/ya.make75
-rw-r--r--contrib/python/scipy/py3/tests/spatial/ya.make43
-rw-r--r--contrib/python/scipy/py3/tests/special/ya.make73
-rw-r--r--contrib/python/scipy/py3/tests/stats/ya.make61
-rw-r--r--contrib/python/scipy/py3/tests/ya.make351
-rw-r--r--contrib/python/six/py2/.dist-info/METADATA10
-rw-r--r--contrib/python/six/py2/LICENSE2
-rw-r--r--contrib/python/six/py2/README.rst4
-rw-r--r--contrib/python/six/py2/six.py15
-rw-r--r--contrib/python/six/py2/ya.make2
-rw-r--r--contrib/python/six/py3/.dist-info/METADATA10
-rw-r--r--contrib/python/six/py3/LICENSE2
-rw-r--r--contrib/python/six/py3/README.rst4
-rw-r--r--contrib/python/six/py3/six.py15
-rw-r--r--contrib/python/six/py3/ya.make2
-rw-r--r--contrib/python/types-protobuf/.dist-info/METADATA8
-rw-r--r--contrib/python/types-protobuf/README.md6
-rw-r--r--contrib/python/types-protobuf/google-stubs/METADATA.toml4
-rw-r--r--contrib/python/types-protobuf/ya.make2
-rw-r--r--contrib/python/ydb/py3/.dist-info/METADATA2
-rw-r--r--contrib/python/ydb/py3/ya.make2
-rw-r--r--contrib/python/ydb/py3/ydb/_topic_writer/topic_writer_asyncio.py2
-rw-r--r--contrib/python/ydb/py3/ydb/ydb_version.py2
58 files changed, 1400 insertions, 563 deletions
diff --git a/contrib/python/Pillow/py3/.yandex_meta/__init__.py b/contrib/python/Pillow/py3/.yandex_meta/__init__.py
index 248ce1165e..63d5c8ea50 100644
--- a/contrib/python/Pillow/py3/.yandex_meta/__init__.py
+++ b/contrib/python/Pillow/py3/.yandex_meta/__init__.py
@@ -47,8 +47,8 @@ def post_install(self):
{
"NOT OPENSOURCE": Linkable(
CFLAGS=["-DHAVE_LIBIMAGEQUANT"],
- PEERDIR=['contrib/libs/libimagequant'],
- ADDINCL=['contrib/libs/libimagequant'],
+ PEERDIR=["contrib/libs/libimagequant"],
+ ADDINCL=["contrib/libs/libimagequant"],
),
}
),
diff --git a/contrib/python/anyio/.dist-info/METADATA b/contrib/python/anyio/.dist-info/METADATA
index 10d7aafc77..5d0f7c9130 100644
--- a/contrib/python/anyio/.dist-info/METADATA
+++ b/contrib/python/anyio/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: anyio
-Version: 4.6.2.post1
+Version: 4.7.0
Summary: High level compatibility layer for multiple asynchronous event loop implementations
Author-email: Alex Grönholm <alex.gronholm@nextday.fi>
License: MIT
@@ -23,28 +23,28 @@ Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
-Requires-Dist: idna >=2.8
-Requires-Dist: sniffio >=1.1
-Requires-Dist: exceptiongroup >=1.0.2 ; python_version < "3.11"
-Requires-Dist: typing-extensions >=4.1 ; python_version < "3.11"
-Provides-Extra: doc
-Requires-Dist: packaging ; extra == 'doc'
-Requires-Dist: Sphinx ~=7.4 ; extra == 'doc'
-Requires-Dist: sphinx-rtd-theme ; extra == 'doc'
-Requires-Dist: sphinx-autodoc-typehints >=1.2.0 ; extra == 'doc'
-Provides-Extra: test
-Requires-Dist: anyio[trio] ; extra == 'test'
-Requires-Dist: coverage[toml] >=7 ; extra == 'test'
-Requires-Dist: exceptiongroup >=1.2.0 ; extra == 'test'
-Requires-Dist: hypothesis >=4.0 ; extra == 'test'
-Requires-Dist: psutil >=5.9 ; extra == 'test'
-Requires-Dist: pytest >=7.0 ; extra == 'test'
-Requires-Dist: pytest-mock >=3.6.1 ; extra == 'test'
-Requires-Dist: trustme ; extra == 'test'
-Requires-Dist: uvloop >=0.21.0b1 ; (platform_python_implementation == "CPython" and platform_system != "Windows") and extra == 'test'
-Requires-Dist: truststore >=0.9.1 ; (python_version >= "3.10") and extra == 'test'
+Requires-Dist: exceptiongroup>=1.0.2; python_version < "3.11"
+Requires-Dist: idna>=2.8
+Requires-Dist: sniffio>=1.1
+Requires-Dist: typing_extensions>=4.5; python_version < "3.13"
Provides-Extra: trio
-Requires-Dist: trio >=0.26.1 ; extra == 'trio'
+Requires-Dist: trio>=0.26.1; extra == "trio"
+Provides-Extra: test
+Requires-Dist: anyio[trio]; extra == "test"
+Requires-Dist: coverage[toml]>=7; extra == "test"
+Requires-Dist: exceptiongroup>=1.2.0; extra == "test"
+Requires-Dist: hypothesis>=4.0; extra == "test"
+Requires-Dist: psutil>=5.9; extra == "test"
+Requires-Dist: pytest>=7.0; extra == "test"
+Requires-Dist: pytest-mock>=3.6.1; extra == "test"
+Requires-Dist: trustme; extra == "test"
+Requires-Dist: truststore>=0.9.1; python_version >= "3.10" and extra == "test"
+Requires-Dist: uvloop>=0.21; (platform_python_implementation == "CPython" and platform_system != "Windows") and extra == "test"
+Provides-Extra: doc
+Requires-Dist: packaging; extra == "doc"
+Requires-Dist: Sphinx~=7.4; extra == "doc"
+Requires-Dist: sphinx_rtd_theme; extra == "doc"
+Requires-Dist: sphinx-autodoc-typehints>=1.2.0; extra == "doc"
.. image:: https://github.com/agronholm/anyio/actions/workflows/test.yml/badge.svg
:target: https://github.com/agronholm/anyio/actions/workflows/test.yml
diff --git a/contrib/python/anyio/anyio/__init__.py b/contrib/python/anyio/anyio/__init__.py
index fd9fe06bcf..0738e59583 100644
--- a/contrib/python/anyio/anyio/__init__.py
+++ b/contrib/python/anyio/anyio/__init__.py
@@ -34,8 +34,10 @@ from ._core._sockets import create_unix_datagram_socket as create_unix_datagram_
from ._core._sockets import create_unix_listener as create_unix_listener
from ._core._sockets import getaddrinfo as getaddrinfo
from ._core._sockets import getnameinfo as getnameinfo
+from ._core._sockets import wait_readable as wait_readable
from ._core._sockets import wait_socket_readable as wait_socket_readable
from ._core._sockets import wait_socket_writable as wait_socket_writable
+from ._core._sockets import wait_writable as wait_writable
from ._core._streams import create_memory_object_stream as create_memory_object_stream
from ._core._subprocesses import open_process as open_process
from ._core._subprocesses import run_process as run_process
diff --git a/contrib/python/anyio/anyio/_backends/_asyncio.py b/contrib/python/anyio/anyio/_backends/_asyncio.py
index 0a69e7ac61..0b7479d264 100644
--- a/contrib/python/anyio/anyio/_backends/_asyncio.py
+++ b/contrib/python/anyio/anyio/_backends/_asyncio.py
@@ -28,6 +28,8 @@ from collections.abc import (
Collection,
Coroutine,
Iterable,
+ Iterator,
+ MutableMapping,
Sequence,
)
from concurrent.futures import Future
@@ -50,6 +52,7 @@ from threading import Thread
from types import TracebackType
from typing import (
IO,
+ TYPE_CHECKING,
Any,
Optional,
TypeVar,
@@ -99,6 +102,11 @@ from ..abc._eventloop import StrOrBytesPath
from ..lowlevel import RunVar
from ..streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream
+if TYPE_CHECKING:
+ from _typeshed import FileDescriptorLike
+else:
+ FileDescriptorLike = object
+
if sys.version_info >= (3, 10):
from typing import ParamSpec
else:
@@ -347,8 +355,12 @@ _run_vars: WeakKeyDictionary[asyncio.AbstractEventLoop, Any] = WeakKeyDictionary
def _task_started(task: asyncio.Task) -> bool:
"""Return ``True`` if the task has been started and has not finished."""
+ # The task coro should never be None here, as we never add finished tasks to the
+ # task list
+ coro = task.get_coro()
+ assert coro is not None
try:
- return getcoroutinestate(task.get_coro()) in (CORO_RUNNING, CORO_SUSPENDED)
+ return getcoroutinestate(coro) in (CORO_RUNNING, CORO_SUSPENDED)
except AttributeError:
# task coro is async_genenerator_asend https://bugs.python.org/issue37771
raise Exception(f"Cannot determine if task {task} has started or not") from None
@@ -360,11 +372,22 @@ def _task_started(task: asyncio.Task) -> bool:
def is_anyio_cancellation(exc: CancelledError) -> bool:
- return (
- bool(exc.args)
- and isinstance(exc.args[0], str)
- and exc.args[0].startswith("Cancelled by cancel scope ")
- )
+ # Sometimes third party frameworks catch a CancelledError and raise a new one, so as
+ # a workaround we have to look at the previous ones in __context__ too for a
+ # matching cancel message
+ while True:
+ if (
+ exc.args
+ and isinstance(exc.args[0], str)
+ and exc.args[0].startswith("Cancelled by cancel scope ")
+ ):
+ return True
+
+ if isinstance(exc.__context__, CancelledError):
+ exc = exc.__context__
+ continue
+
+ return False
class CancelScope(BaseCancelScope):
@@ -385,8 +408,10 @@ class CancelScope(BaseCancelScope):
self._cancel_handle: asyncio.Handle | None = None
self._tasks: set[asyncio.Task] = set()
self._host_task: asyncio.Task | None = None
- self._cancel_calls: int = 0
- self._cancelling: int | None = None
+ if sys.version_info >= (3, 11):
+ self._pending_uncancellations: int | None = 0
+ else:
+ self._pending_uncancellations = None
def __enter__(self) -> CancelScope:
if self._active:
@@ -405,13 +430,13 @@ class CancelScope(BaseCancelScope):
self._parent_scope = task_state.cancel_scope
task_state.cancel_scope = self
if self._parent_scope is not None:
+ # If using an eager task factory, the parent scope may not even contain
+ # the host task
self._parent_scope._child_scopes.add(self)
- self._parent_scope._tasks.remove(host_task)
+ self._parent_scope._tasks.discard(host_task)
self._timeout()
self._active = True
- if sys.version_info >= (3, 11):
- self._cancelling = self._host_task.cancelling()
# Start cancelling the host task if the scope was cancelled before entering
if self._cancel_called:
@@ -456,30 +481,41 @@ class CancelScope(BaseCancelScope):
host_task_state.cancel_scope = self._parent_scope
- # Undo all cancellations done by this scope
- if self._cancelling is not None:
- while self._cancel_calls:
- self._cancel_calls -= 1
- if self._host_task.uncancel() <= self._cancelling:
- break
+ # Restart the cancellation effort in the closest visible, cancelled parent
+ # scope if necessary
+ self._restart_cancellation_in_parent()
# We only swallow the exception iff it was an AnyIO CancelledError, either
# directly as exc_val or inside an exception group and there are no cancelled
# parent cancel scopes visible to us here
- not_swallowed_exceptions = 0
- swallow_exception = False
- if exc_val is not None:
- for exc in iterate_exceptions(exc_val):
- if self._cancel_called and isinstance(exc, CancelledError):
- if not (swallow_exception := self._uncancel(exc)):
- not_swallowed_exceptions += 1
- else:
- not_swallowed_exceptions += 1
+ if self._cancel_called and not self._parent_cancellation_is_visible_to_us:
+ # For each level-cancel() call made on the host task, call uncancel()
+ while self._pending_uncancellations:
+ self._host_task.uncancel()
+ self._pending_uncancellations -= 1
+
+ # Update cancelled_caught and check for exceptions we must not swallow
+ cannot_swallow_exc_val = False
+ if exc_val is not None:
+ for exc in iterate_exceptions(exc_val):
+ if isinstance(exc, CancelledError) and is_anyio_cancellation(
+ exc
+ ):
+ self._cancelled_caught = True
+ else:
+ cannot_swallow_exc_val = True
- # Restart the cancellation effort in the closest visible, cancelled parent
- # scope if necessary
- self._restart_cancellation_in_parent()
- return swallow_exception and not not_swallowed_exceptions
+ return self._cancelled_caught and not cannot_swallow_exc_val
+ else:
+ if self._pending_uncancellations:
+ assert self._parent_scope is not None
+ assert self._parent_scope._pending_uncancellations is not None
+ self._parent_scope._pending_uncancellations += (
+ self._pending_uncancellations
+ )
+ self._pending_uncancellations = 0
+
+ return False
finally:
self._host_task = None
del exc_val
@@ -506,31 +542,6 @@ class CancelScope(BaseCancelScope):
and self._parent_scope._effectively_cancelled
)
- def _uncancel(self, cancelled_exc: CancelledError) -> bool:
- if self._host_task is None:
- self._cancel_calls = 0
- return True
-
- while True:
- if is_anyio_cancellation(cancelled_exc):
- # Only swallow the cancellation exception if it's an AnyIO cancel
- # exception and there are no other cancel scopes down the line pending
- # cancellation
- self._cancelled_caught = (
- self._effectively_cancelled
- and not self._parent_cancellation_is_visible_to_us
- )
- return self._cancelled_caught
-
- # Sometimes third party frameworks catch a CancelledError and raise a new
- # one, so as a workaround we have to look at the previous ones in
- # __context__ too for a matching cancel message
- if isinstance(cancelled_exc.__context__, CancelledError):
- cancelled_exc = cancelled_exc.__context__
- continue
-
- return False
-
def _timeout(self) -> None:
if self._deadline != math.inf:
loop = get_running_loop()
@@ -562,8 +573,11 @@ class CancelScope(BaseCancelScope):
waiter = task._fut_waiter # type: ignore[attr-defined]
if not isinstance(waiter, asyncio.Future) or not waiter.done():
task.cancel(f"Cancelled by cancel scope {id(origin):x}")
- if task is origin._host_task:
- origin._cancel_calls += 1
+ if (
+ task is origin._host_task
+ and origin._pending_uncancellations is not None
+ ):
+ origin._pending_uncancellations += 1
# Deliver cancellation to child scopes that aren't shielded or running their own
# cancellation callbacks
@@ -663,7 +677,45 @@ class TaskState:
self.cancel_scope = cancel_scope
-_task_states: WeakKeyDictionary[asyncio.Task, TaskState] = WeakKeyDictionary()
+class TaskStateStore(MutableMapping["Awaitable[Any] | asyncio.Task", TaskState]):
+ def __init__(self) -> None:
+ self._task_states = WeakKeyDictionary[asyncio.Task, TaskState]()
+ self._preliminary_task_states: dict[Awaitable[Any], TaskState] = {}
+
+ def __getitem__(self, key: Awaitable[Any] | asyncio.Task, /) -> TaskState:
+ assert isinstance(key, asyncio.Task)
+ try:
+ return self._task_states[key]
+ except KeyError:
+ if coro := key.get_coro():
+ if state := self._preliminary_task_states.get(coro):
+ return state
+
+ raise KeyError(key)
+
+ def __setitem__(
+ self, key: asyncio.Task | Awaitable[Any], value: TaskState, /
+ ) -> None:
+ if isinstance(key, asyncio.Task):
+ self._task_states[key] = value
+ else:
+ self._preliminary_task_states[key] = value
+
+ def __delitem__(self, key: asyncio.Task | Awaitable[Any], /) -> None:
+ if isinstance(key, asyncio.Task):
+ del self._task_states[key]
+ else:
+ del self._preliminary_task_states[key]
+
+ def __len__(self) -> int:
+ return len(self._task_states) + len(self._preliminary_task_states)
+
+ def __iter__(self) -> Iterator[Awaitable[Any] | asyncio.Task]:
+ yield from self._task_states
+ yield from self._preliminary_task_states
+
+
+_task_states = TaskStateStore()
#
@@ -783,7 +835,7 @@ class TaskGroup(abc.TaskGroup):
task_status_future: asyncio.Future | None = None,
) -> asyncio.Task:
def task_done(_task: asyncio.Task) -> None:
- task_state = _task_states[_task]
+ # task_state = _task_states[_task]
assert task_state.cancel_scope is not None
assert _task in task_state.cancel_scope._tasks
task_state.cancel_scope._tasks.remove(_task)
@@ -840,16 +892,26 @@ class TaskGroup(abc.TaskGroup):
f"the return value ({coro!r}) is not a coroutine object"
)
- name = get_callable_name(func) if name is None else str(name)
- task = create_task(coro, name=name)
- task.add_done_callback(task_done)
-
# Make the spawned task inherit the task group's cancel scope
- _task_states[task] = TaskState(
+ _task_states[coro] = task_state = TaskState(
parent_id=parent_id, cancel_scope=self.cancel_scope
)
+ name = get_callable_name(func) if name is None else str(name)
+ try:
+ task = create_task(coro, name=name)
+ finally:
+ del _task_states[coro]
+
+ _task_states[task] = task_state
self.cancel_scope._tasks.add(task)
self._tasks.add(task)
+
+ if task.done():
+ # This can happen with eager task factories
+ task_done(task)
+ else:
+ task.add_done_callback(task_done)
+
return task
def start_soon(
@@ -1718,8 +1780,8 @@ class ConnectedUNIXDatagramSocket(_RawSocketMixin, abc.ConnectedUNIXDatagramSock
return
-_read_events: RunVar[dict[Any, asyncio.Event]] = RunVar("read_events")
-_write_events: RunVar[dict[Any, asyncio.Event]] = RunVar("write_events")
+_read_events: RunVar[dict[int, asyncio.Event]] = RunVar("read_events")
+_write_events: RunVar[dict[int, asyncio.Event]] = RunVar("write_events")
#
@@ -2082,7 +2144,9 @@ class AsyncIOTaskInfo(TaskInfo):
else:
parent_id = task_state.parent_id
- super().__init__(id(task), parent_id, task.get_name(), task.get_coro())
+ coro = task.get_coro()
+ assert coro is not None, "created TaskInfo from a completed Task"
+ super().__init__(id(task), parent_id, task.get_name(), coro)
self._task = weakref.ref(task)
def has_pending_cancellation(self) -> bool:
@@ -2090,12 +2154,11 @@ class AsyncIOTaskInfo(TaskInfo):
# If the task isn't around anymore, it won't have a pending cancellation
return False
- if sys.version_info >= (3, 11):
- if task.cancelling():
- return True
+ if task._must_cancel: # type: ignore[attr-defined]
+ return True
elif (
- isinstance(task._fut_waiter, asyncio.Future)
- and task._fut_waiter.cancelled()
+ isinstance(task._fut_waiter, asyncio.Future) # type: ignore[attr-defined]
+ and task._fut_waiter.cancelled() # type: ignore[attr-defined]
):
return True
@@ -2335,10 +2398,11 @@ class AsyncIOBackend(AsyncBackend):
@classmethod
def current_effective_deadline(cls) -> float:
+ if (task := current_task()) is None:
+ return math.inf
+
try:
- cancel_scope = _task_states[
- current_task() # type: ignore[index]
- ].cancel_scope
+ cancel_scope = _task_states[task].cancel_scope
except KeyError:
return math.inf
@@ -2671,7 +2735,7 @@ class AsyncIOBackend(AsyncBackend):
return await get_running_loop().getnameinfo(sockaddr, flags)
@classmethod
- async def wait_socket_readable(cls, sock: socket.socket) -> None:
+ async def wait_readable(cls, obj: FileDescriptorLike) -> None:
await cls.checkpoint()
try:
read_events = _read_events.get()
@@ -2679,26 +2743,34 @@ class AsyncIOBackend(AsyncBackend):
read_events = {}
_read_events.set(read_events)
- if read_events.get(sock):
- raise BusyResourceError("reading from") from None
+ if not isinstance(obj, int):
+ obj = obj.fileno()
+
+ if read_events.get(obj):
+ raise BusyResourceError("reading from")
loop = get_running_loop()
- event = read_events[sock] = asyncio.Event()
- loop.add_reader(sock, event.set)
+ event = asyncio.Event()
+ try:
+ loop.add_reader(obj, event.set)
+ except NotImplementedError:
+ from anyio._core._asyncio_selector_thread import get_selector
+
+ selector = get_selector()
+ selector.add_reader(obj, event.set)
+ remove_reader = selector.remove_reader
+ else:
+ remove_reader = loop.remove_reader
+
+ read_events[obj] = event
try:
await event.wait()
finally:
- if read_events.pop(sock, None) is not None:
- loop.remove_reader(sock)
- readable = True
- else:
- readable = False
-
- if not readable:
- raise ClosedResourceError
+ remove_reader(obj)
+ del read_events[obj]
@classmethod
- async def wait_socket_writable(cls, sock: socket.socket) -> None:
+ async def wait_writable(cls, obj: FileDescriptorLike) -> None:
await cls.checkpoint()
try:
write_events = _write_events.get()
@@ -2706,23 +2778,31 @@ class AsyncIOBackend(AsyncBackend):
write_events = {}
_write_events.set(write_events)
- if write_events.get(sock):
- raise BusyResourceError("writing to") from None
+ if not isinstance(obj, int):
+ obj = obj.fileno()
+
+ if write_events.get(obj):
+ raise BusyResourceError("writing to")
loop = get_running_loop()
- event = write_events[sock] = asyncio.Event()
- loop.add_writer(sock.fileno(), event.set)
+ event = asyncio.Event()
+ try:
+ loop.add_writer(obj, event.set)
+ except NotImplementedError:
+ from anyio._core._asyncio_selector_thread import get_selector
+
+ selector = get_selector()
+ selector.add_writer(obj, event.set)
+ remove_writer = selector.remove_writer
+ else:
+ remove_writer = loop.remove_writer
+
+ write_events[obj] = event
try:
await event.wait()
finally:
- if write_events.pop(sock, None) is not None:
- loop.remove_writer(sock)
- writable = True
- else:
- writable = False
-
- if not writable:
- raise ClosedResourceError
+ del write_events[obj]
+ remove_writer(obj)
@classmethod
def current_default_thread_limiter(cls) -> CapacityLimiter:
diff --git a/contrib/python/anyio/anyio/_backends/_trio.py b/contrib/python/anyio/anyio/_backends/_trio.py
index 24dcd74446..70a0a60578 100644
--- a/contrib/python/anyio/anyio/_backends/_trio.py
+++ b/contrib/python/anyio/anyio/_backends/_trio.py
@@ -28,6 +28,7 @@ from socket import AddressFamily, SocketKind
from types import TracebackType
from typing import (
IO,
+ TYPE_CHECKING,
Any,
Generic,
NoReturn,
@@ -80,6 +81,9 @@ from ..abc import IPSockAddrType, UDPPacketType, UNIXDatagramPacketType
from ..abc._eventloop import AsyncBackend, StrOrBytesPath
from ..streams.memory import MemoryObjectSendStream
+if TYPE_CHECKING:
+ from _typeshed import HasFileno
+
if sys.version_info >= (3, 10):
from typing import ParamSpec
else:
@@ -1260,18 +1264,18 @@ class TrioBackend(AsyncBackend):
return await trio.socket.getnameinfo(sockaddr, flags)
@classmethod
- async def wait_socket_readable(cls, sock: socket.socket) -> None:
+ async def wait_readable(cls, obj: HasFileno | int) -> None:
try:
- await wait_readable(sock)
+ await wait_readable(obj)
except trio.ClosedResourceError as exc:
raise ClosedResourceError().with_traceback(exc.__traceback__) from None
except trio.BusyResourceError:
raise BusyResourceError("reading from") from None
@classmethod
- async def wait_socket_writable(cls, sock: socket.socket) -> None:
+ async def wait_writable(cls, obj: HasFileno | int) -> None:
try:
- await wait_writable(sock)
+ await wait_writable(obj)
except trio.ClosedResourceError as exc:
raise ClosedResourceError().with_traceback(exc.__traceback__) from None
except trio.BusyResourceError:
diff --git a/contrib/python/anyio/anyio/_core/_asyncio_selector_thread.py b/contrib/python/anyio/anyio/_core/_asyncio_selector_thread.py
new file mode 100644
index 0000000000..d98c304072
--- /dev/null
+++ b/contrib/python/anyio/anyio/_core/_asyncio_selector_thread.py
@@ -0,0 +1,150 @@
+from __future__ import annotations
+
+import asyncio
+import socket
+import threading
+from collections.abc import Callable
+from selectors import EVENT_READ, EVENT_WRITE, DefaultSelector
+from typing import TYPE_CHECKING, Any
+
+if TYPE_CHECKING:
+ from _typeshed import FileDescriptorLike
+
+_selector_lock = threading.Lock()
+_selector: Selector | None = None
+
+
+class Selector:
+ def __init__(self) -> None:
+ self._thread = threading.Thread(target=self.run, name="AnyIO socket selector")
+ self._selector = DefaultSelector()
+ self._send, self._receive = socket.socketpair()
+ self._send.setblocking(False)
+ self._receive.setblocking(False)
+ self._selector.register(self._receive, EVENT_READ)
+ self._closed = False
+
+ def start(self) -> None:
+ self._thread.start()
+ threading._register_atexit(self._stop) # type: ignore[attr-defined]
+
+ def _stop(self) -> None:
+ global _selector
+ self._closed = True
+ self._notify_self()
+ self._send.close()
+ self._thread.join()
+ self._selector.unregister(self._receive)
+ self._receive.close()
+ self._selector.close()
+ _selector = None
+ assert (
+ not self._selector.get_map()
+ ), "selector still has registered file descriptors after shutdown"
+
+ def _notify_self(self) -> None:
+ try:
+ self._send.send(b"\x00")
+ except BlockingIOError:
+ pass
+
+ def add_reader(self, fd: FileDescriptorLike, callback: Callable[[], Any]) -> None:
+ loop = asyncio.get_running_loop()
+ try:
+ key = self._selector.get_key(fd)
+ except KeyError:
+ self._selector.register(fd, EVENT_READ, {EVENT_READ: (loop, callback)})
+ else:
+ if EVENT_READ in key.data:
+ raise ValueError(
+ "this file descriptor is already registered for reading"
+ )
+
+ key.data[EVENT_READ] = loop, callback
+ self._selector.modify(fd, key.events | EVENT_READ, key.data)
+
+ self._notify_self()
+
+ def add_writer(self, fd: FileDescriptorLike, callback: Callable[[], Any]) -> None:
+ loop = asyncio.get_running_loop()
+ try:
+ key = self._selector.get_key(fd)
+ except KeyError:
+ self._selector.register(fd, EVENT_WRITE, {EVENT_WRITE: (loop, callback)})
+ else:
+ if EVENT_WRITE in key.data:
+ raise ValueError(
+ "this file descriptor is already registered for writing"
+ )
+
+ key.data[EVENT_WRITE] = loop, callback
+ self._selector.modify(fd, key.events | EVENT_WRITE, key.data)
+
+ self._notify_self()
+
+ def remove_reader(self, fd: FileDescriptorLike) -> bool:
+ try:
+ key = self._selector.get_key(fd)
+ except KeyError:
+ return False
+
+ if new_events := key.events ^ EVENT_READ:
+ del key.data[EVENT_READ]
+ self._selector.modify(fd, new_events, key.data)
+ else:
+ self._selector.unregister(fd)
+
+ return True
+
+ def remove_writer(self, fd: FileDescriptorLike) -> bool:
+ try:
+ key = self._selector.get_key(fd)
+ except KeyError:
+ return False
+
+ if new_events := key.events ^ EVENT_WRITE:
+ del key.data[EVENT_WRITE]
+ self._selector.modify(fd, new_events, key.data)
+ else:
+ self._selector.unregister(fd)
+
+ return True
+
+ def run(self) -> None:
+ while not self._closed:
+ for key, events in self._selector.select():
+ if key.fileobj is self._receive:
+ try:
+ while self._receive.recv(4096):
+ pass
+ except BlockingIOError:
+ pass
+
+ continue
+
+ if events & EVENT_READ:
+ loop, callback = key.data[EVENT_READ]
+ self.remove_reader(key.fd)
+ try:
+ loop.call_soon_threadsafe(callback)
+ except RuntimeError:
+ pass # the loop was already closed
+
+ if events & EVENT_WRITE:
+ loop, callback = key.data[EVENT_WRITE]
+ self.remove_writer(key.fd)
+ try:
+ loop.call_soon_threadsafe(callback)
+ except RuntimeError:
+ pass # the loop was already closed
+
+
+def get_selector() -> Selector:
+ global _selector
+
+ with _selector_lock:
+ if _selector is None:
+ _selector = Selector()
+ _selector.start()
+
+ return _selector
diff --git a/contrib/python/anyio/anyio/_core/_exceptions.py b/contrib/python/anyio/anyio/_core/_exceptions.py
index 6e3f8ccc67..97ea313041 100644
--- a/contrib/python/anyio/anyio/_core/_exceptions.py
+++ b/contrib/python/anyio/anyio/_core/_exceptions.py
@@ -16,7 +16,7 @@ class BrokenResourceError(Exception):
class BrokenWorkerProcess(Exception):
"""
- Raised by :func:`run_sync_in_process` if the worker process terminates abruptly or
+ Raised by :meth:`~anyio.to_process.run_sync` if the worker process terminates abruptly or
otherwise misbehaves.
"""
diff --git a/contrib/python/anyio/anyio/_core/_fileio.py b/contrib/python/anyio/anyio/_core/_fileio.py
index 53d3288c29..ef2930e480 100644
--- a/contrib/python/anyio/anyio/_core/_fileio.py
+++ b/contrib/python/anyio/anyio/_core/_fileio.py
@@ -92,10 +92,10 @@ class AsyncFile(AsyncResource, Generic[AnyStr]):
async def readlines(self) -> list[AnyStr]:
return await to_thread.run_sync(self._fp.readlines)
- async def readinto(self: AsyncFile[bytes], b: WriteableBuffer) -> bytes:
+ async def readinto(self: AsyncFile[bytes], b: WriteableBuffer) -> int:
return await to_thread.run_sync(self._fp.readinto, b)
- async def readinto1(self: AsyncFile[bytes], b: WriteableBuffer) -> bytes:
+ async def readinto1(self: AsyncFile[bytes], b: WriteableBuffer) -> int:
return await to_thread.run_sync(self._fp.readinto1, b)
@overload
diff --git a/contrib/python/anyio/anyio/_core/_sockets.py b/contrib/python/anyio/anyio/_core/_sockets.py
index 6070c647fd..a822d060d7 100644
--- a/contrib/python/anyio/anyio/_core/_sockets.py
+++ b/contrib/python/anyio/anyio/_core/_sockets.py
@@ -10,7 +10,7 @@ from collections.abc import Awaitable
from ipaddress import IPv6Address, ip_address
from os import PathLike, chmod
from socket import AddressFamily, SocketKind
-from typing import Any, Literal, cast, overload
+from typing import TYPE_CHECKING, Any, Literal, cast, overload
from .. import to_thread
from ..abc import (
@@ -31,9 +31,19 @@ from ._resources import aclose_forcefully
from ._synchronization import Event
from ._tasks import create_task_group, move_on_after
+if TYPE_CHECKING:
+ from _typeshed import FileDescriptorLike
+else:
+ FileDescriptorLike = object
+
if sys.version_info < (3, 11):
from exceptiongroup import ExceptionGroup
+if sys.version_info < (3, 13):
+ from typing_extensions import deprecated
+else:
+ from warnings import deprecated
+
IPPROTO_IPV6 = getattr(socket, "IPPROTO_IPV6", 41) # https://bugs.python.org/issue29515
AnyIPAddressFamily = Literal[
@@ -186,6 +196,14 @@ async def connect_tcp(
try:
addr_obj = ip_address(remote_host)
except ValueError:
+ addr_obj = None
+
+ if addr_obj is not None:
+ if isinstance(addr_obj, IPv6Address):
+ target_addrs = [(socket.AF_INET6, addr_obj.compressed)]
+ else:
+ target_addrs = [(socket.AF_INET, addr_obj.compressed)]
+ else:
# getaddrinfo() will raise an exception if name resolution fails
gai_res = await getaddrinfo(
target_host, remote_port, family=family, type=socket.SOCK_STREAM
@@ -194,7 +212,7 @@ async def connect_tcp(
# Organize the list so that the first address is an IPv6 address (if available)
# and the second one is an IPv4 addresses. The rest can be in whatever order.
v6_found = v4_found = False
- target_addrs: list[tuple[socket.AddressFamily, str]] = []
+ target_addrs = []
for af, *rest, sa in gai_res:
if af == socket.AF_INET6 and not v6_found:
v6_found = True
@@ -204,11 +222,6 @@ async def connect_tcp(
target_addrs.insert(1, (af, sa[0]))
else:
target_addrs.append((af, sa[0]))
- else:
- if isinstance(addr_obj, IPv6Address):
- target_addrs = [(socket.AF_INET6, addr_obj.compressed)]
- else:
- target_addrs = [(socket.AF_INET, addr_obj.compressed)]
oserrors: list[OSError] = []
async with create_task_group() as tg:
@@ -588,12 +601,13 @@ def getnameinfo(sockaddr: IPSockAddrType, flags: int = 0) -> Awaitable[tuple[str
return get_async_backend().getnameinfo(sockaddr, flags)
+@deprecated("This function is deprecated; use `wait_readable` instead")
def wait_socket_readable(sock: socket.socket) -> Awaitable[None]:
"""
- Wait until the given socket has data to be read.
+ .. deprecated:: 4.7.0
+ Use :func:`wait_readable` instead.
- This does **NOT** work on Windows when using the asyncio backend with a proactor
- event loop (default on py3.8+).
+ Wait until the given socket has data to be read.
.. warning:: Only use this on raw sockets that have not been wrapped by any higher
level constructs like socket streams!
@@ -605,11 +619,15 @@ def wait_socket_readable(sock: socket.socket) -> Awaitable[None]:
to become readable
"""
- return get_async_backend().wait_socket_readable(sock)
+ return get_async_backend().wait_readable(sock.fileno())
+@deprecated("This function is deprecated; use `wait_writable` instead")
def wait_socket_writable(sock: socket.socket) -> Awaitable[None]:
"""
+ .. deprecated:: 4.7.0
+ Use :func:`wait_writable` instead.
+
Wait until the given socket can be written to.
This does **NOT** work on Windows when using the asyncio backend with a proactor
@@ -625,7 +643,58 @@ def wait_socket_writable(sock: socket.socket) -> Awaitable[None]:
to become writable
"""
- return get_async_backend().wait_socket_writable(sock)
+ return get_async_backend().wait_writable(sock.fileno())
+
+
+def wait_readable(obj: FileDescriptorLike) -> Awaitable[None]:
+ """
+ Wait until the given object has data to be read.
+
+ On Unix systems, ``obj`` must either be an integer file descriptor, or else an
+ object with a ``.fileno()`` method which returns an integer file descriptor. Any
+ kind of file descriptor can be passed, though the exact semantics will depend on
+ your kernel. For example, this probably won't do anything useful for on-disk files.
+
+ On Windows systems, ``obj`` must either be an integer ``SOCKET`` handle, or else an
+ object with a ``.fileno()`` method which returns an integer ``SOCKET`` handle. File
+ descriptors aren't supported, and neither are handles that refer to anything besides
+ a ``SOCKET``.
+
+ On backends where this functionality is not natively provided (asyncio
+ ``ProactorEventLoop`` on Windows), it is provided using a separate selector thread
+ which is set to shut down when the interpreter shuts down.
+
+ .. warning:: Don't use this on raw sockets that have been wrapped by any higher
+ level constructs like socket streams!
+
+ :param obj: an object with a ``.fileno()`` method or an integer handle
+ :raises ~anyio.ClosedResourceError: if the object was closed while waiting for the
+ object to become readable
+ :raises ~anyio.BusyResourceError: if another task is already waiting for the object
+ to become readable
+
+ """
+ return get_async_backend().wait_readable(obj)
+
+
+def wait_writable(obj: FileDescriptorLike) -> Awaitable[None]:
+ """
+ Wait until the given object can be written to.
+
+ :param obj: an object with a ``.fileno()`` method or an integer handle
+ :raises ~anyio.ClosedResourceError: if the object was closed while waiting for the
+ object to become writable
+ :raises ~anyio.BusyResourceError: if another task is already waiting for the object
+ to become writable
+
+ .. seealso:: See the documentation of :func:`wait_readable` for the definition of
+ ``obj`` and notes on backend compatibility.
+
+ .. warning:: Don't use this on raw sockets that have been wrapped by any higher
+ level constructs like socket streams!
+
+ """
+ return get_async_backend().wait_writable(obj)
#
diff --git a/contrib/python/anyio/anyio/_core/_synchronization.py b/contrib/python/anyio/anyio/_core/_synchronization.py
index 023ab73370..7878ba6668 100644
--- a/contrib/python/anyio/anyio/_core/_synchronization.py
+++ b/contrib/python/anyio/anyio/_core/_synchronization.py
@@ -109,6 +109,7 @@ class Event:
class EventAdapter(Event):
_internal_event: Event | None = None
+ _is_set: bool = False
def __new__(cls) -> EventAdapter:
return object.__new__(cls)
@@ -117,14 +118,22 @@ class EventAdapter(Event):
def _event(self) -> Event:
if self._internal_event is None:
self._internal_event = get_async_backend().create_event()
+ if self._is_set:
+ self._internal_event.set()
return self._internal_event
def set(self) -> None:
- self._event.set()
+ if self._internal_event is None:
+ self._is_set = True
+ else:
+ self._event.set()
def is_set(self) -> bool:
- return self._internal_event is not None and self._internal_event.is_set()
+ if self._internal_event is None:
+ return self._is_set
+
+ return self._internal_event.is_set()
async def wait(self) -> None:
await self._event.wait()
diff --git a/contrib/python/anyio/anyio/abc/__init__.py b/contrib/python/anyio/anyio/abc/__init__.py
index 1ca0fcf746..3d3b61cc9a 100644
--- a/contrib/python/anyio/anyio/abc/__init__.py
+++ b/contrib/python/anyio/anyio/abc/__init__.py
@@ -1,7 +1,5 @@
from __future__ import annotations
-from typing import Any
-
from ._eventloop import AsyncBackend as AsyncBackend
from ._resources import AsyncResource as AsyncResource
from ._sockets import ConnectedUDPSocket as ConnectedUDPSocket
@@ -50,8 +48,8 @@ from .._core._tasks import CancelScope as CancelScope
from ..from_thread import BlockingPortal as BlockingPortal
# Re-export imports so they look like they live directly in this package
-key: str
-value: Any
-for key, value in list(locals().items()):
- if getattr(value, "__module__", "").startswith("anyio.abc."):
- value.__module__ = __name__
+for __value in list(locals().values()):
+ if getattr(__value, "__module__", "").startswith("anyio.abc."):
+ __value.__module__ = __name__
+
+del __value
diff --git a/contrib/python/anyio/anyio/abc/_eventloop.py b/contrib/python/anyio/anyio/abc/_eventloop.py
index 93d0e9d25b..2bfdf28635 100644
--- a/contrib/python/anyio/anyio/abc/_eventloop.py
+++ b/contrib/python/anyio/anyio/abc/_eventloop.py
@@ -28,6 +28,8 @@ else:
from typing_extensions import TypeAlias
if TYPE_CHECKING:
+ from _typeshed import HasFileno
+
from .._core._synchronization import CapacityLimiter, Event, Lock, Semaphore
from .._core._tasks import CancelScope
from .._core._testing import TaskInfo
@@ -333,12 +335,12 @@ class AsyncBackend(metaclass=ABCMeta):
@classmethod
@abstractmethod
- async def wait_socket_readable(cls, sock: socket) -> None:
+ async def wait_readable(cls, obj: HasFileno | int) -> None:
pass
@classmethod
@abstractmethod
- async def wait_socket_writable(cls, sock: socket) -> None:
+ async def wait_writable(cls, obj: HasFileno | int) -> None:
pass
@classmethod
diff --git a/contrib/python/anyio/anyio/abc/_tasks.py b/contrib/python/anyio/anyio/abc/_tasks.py
index 88aecf3833..f6e5c40c7f 100644
--- a/contrib/python/anyio/anyio/abc/_tasks.py
+++ b/contrib/python/anyio/anyio/abc/_tasks.py
@@ -40,6 +40,12 @@ class TaskGroup(metaclass=ABCMeta):
:ivar cancel_scope: the cancel scope inherited by all child tasks
:vartype cancel_scope: CancelScope
+
+ .. note:: On asyncio, support for eager task factories is considered to be
+ **experimental**. In particular, they don't follow the usual semantics of new
+ tasks being scheduled on the next iteration of the event loop, and may thus
+ cause unexpected behavior in code that wasn't written with such semantics in
+ mind.
"""
cancel_scope: CancelScope
diff --git a/contrib/python/anyio/ya.make b/contrib/python/anyio/ya.make
index aadbb5b297..956fc4c841 100644
--- a/contrib/python/anyio/ya.make
+++ b/contrib/python/anyio/ya.make
@@ -2,13 +2,14 @@
PY3_LIBRARY()
-VERSION(4.6.2.post1)
+VERSION(4.7.0)
LICENSE(MIT)
PEERDIR(
contrib/python/idna
contrib/python/sniffio
+ contrib/python/typing-extensions
)
NO_LINT()
@@ -25,6 +26,7 @@ PY_SRCS(
anyio/_backends/_asyncio.py
anyio/_backends/_trio.py
anyio/_core/__init__.py
+ anyio/_core/_asyncio_selector_thread.py
anyio/_core/_eventloop.py
anyio/_core/_exceptions.py
anyio/_core/_fileio.py
diff --git a/contrib/python/fonttools/.dist-info/METADATA b/contrib/python/fonttools/.dist-info/METADATA
index 9460888006..5a177ba30c 100644
--- a/contrib/python/fonttools/.dist-info/METADATA
+++ b/contrib/python/fonttools/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: fonttools
-Version: 4.55.1
+Version: 4.55.2
Summary: Tools to manipulate font files
Home-page: http://github.com/fonttools/fonttools
Author: Just van Rossum
@@ -377,6 +377,13 @@ Have fun!
Changelog
~~~~~~~~~
+4.55.2 (released 2024-12-05)
+----------------------------
+
+- [Docs] update Sphinx config (#3712)
+- [designspaceLib] Allow axisOrdering to be set to zero (#3715)
+- [feaLib] Don’t modify variable anchors in place (#3717)
+
4.55.1 (released 2024-12-02)
----------------------------
diff --git a/contrib/python/fonttools/fontTools/__init__.py b/contrib/python/fonttools/fontTools/__init__.py
index 6aa5f3ad59..2fe3602d32 100644
--- a/contrib/python/fonttools/fontTools/__init__.py
+++ b/contrib/python/fonttools/fontTools/__init__.py
@@ -3,6 +3,6 @@ from fontTools.misc.loggingTools import configLogger
log = logging.getLogger(__name__)
-version = __version__ = "4.55.1"
+version = __version__ = "4.55.2"
__all__ = ["version", "log", "configLogger"]
diff --git a/contrib/python/fonttools/fontTools/designspaceLib/__init__.py b/contrib/python/fonttools/fontTools/designspaceLib/__init__.py
index 0a1e782f57..661f3405da 100644
--- a/contrib/python/fonttools/fontTools/designspaceLib/__init__.py
+++ b/contrib/python/fonttools/fontTools/designspaceLib/__init__.py
@@ -1596,7 +1596,7 @@ class BaseDocWriter(object):
mapElement.attrib["input"] = self.intOrFloat(inputValue)
mapElement.attrib["output"] = self.intOrFloat(outputValue)
axisElement.append(mapElement)
- if axisObject.axisOrdering or axisObject.axisLabels:
+ if axisObject.axisOrdering is not None or axisObject.axisLabels:
labelsElement = ET.Element("labels")
if axisObject.axisOrdering is not None:
labelsElement.attrib["ordering"] = str(axisObject.axisOrdering)
diff --git a/contrib/python/fonttools/fontTools/feaLib/builder.py b/contrib/python/fonttools/fontTools/feaLib/builder.py
index bda855e1e9..81aa8c2e26 100644
--- a/contrib/python/fonttools/fontTools/feaLib/builder.py
+++ b/contrib/python/fonttools/fontTools/feaLib/builder.py
@@ -1658,38 +1658,31 @@ class Builder(object):
return default, device
+ def makeAnchorPos(self, varscalar, deviceTable, location):
+ device = None
+ if not isinstance(varscalar, VariableScalar):
+ if deviceTable is not None:
+ device = otl.buildDevice(dict(deviceTable))
+ return varscalar, device
+ default, device = self.makeVariablePos(location, varscalar)
+ if device is not None and deviceTable is not None:
+ raise FeatureLibError(
+ "Can't define a device coordinate and variable scalar", location
+ )
+ return default, device
+
def makeOpenTypeAnchor(self, location, anchor):
"""ast.Anchor --> otTables.Anchor"""
if anchor is None:
return None
- variable = False
deviceX, deviceY = None, None
if anchor.xDeviceTable is not None:
deviceX = otl.buildDevice(dict(anchor.xDeviceTable))
if anchor.yDeviceTable is not None:
deviceY = otl.buildDevice(dict(anchor.yDeviceTable))
- for dim in ("x", "y"):
- varscalar = getattr(anchor, dim)
- if not isinstance(varscalar, VariableScalar):
- continue
- if getattr(anchor, dim + "DeviceTable") is not None:
- raise FeatureLibError(
- "Can't define a device coordinate and variable scalar", location
- )
- default, device = self.makeVariablePos(location, varscalar)
- setattr(anchor, dim, default)
- if device is not None:
- if dim == "x":
- deviceX = device
- else:
- deviceY = device
- variable = True
-
- otlanchor = otl.buildAnchor(
- anchor.x, anchor.y, anchor.contourpoint, deviceX, deviceY
- )
- if variable:
- otlanchor.Format = 3
+ x, deviceX = self.makeAnchorPos(anchor.x, anchor.xDeviceTable, location)
+ y, deviceY = self.makeAnchorPos(anchor.y, anchor.yDeviceTable, location)
+ otlanchor = otl.buildAnchor(x, y, anchor.contourpoint, deviceX, deviceY)
return otlanchor
_VALUEREC_ATTRS = {
diff --git a/contrib/python/fonttools/ya.make b/contrib/python/fonttools/ya.make
index ce8febfcdd..d01a0e414f 100644
--- a/contrib/python/fonttools/ya.make
+++ b/contrib/python/fonttools/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(4.55.1)
+VERSION(4.55.2)
LICENSE(MIT)
diff --git a/contrib/python/grpcio/py3/.yandex_meta/__init__.py b/contrib/python/grpcio/py3/.yandex_meta/__init__.py
index d519c459ee..5e4e2c47ca 100644
--- a/contrib/python/grpcio/py3/.yandex_meta/__init__.py
+++ b/contrib/python/grpcio/py3/.yandex_meta/__init__.py
@@ -57,7 +57,7 @@ def post_install(self):
# see https://github.com/grpc/grpc/blob/v1.45.0/tools/bazel.rc#L103
pb.after(
"ADDINCL",
- Switch({'SANITIZER_TYPE == undefined': Linkable(CXXFLAGS=["-fno-sanitize=function"])}),
+ Switch({"SANITIZER_TYPE == undefined": Linkable(CXXFLAGS=["-fno-sanitize=function"])}),
)
diff --git a/contrib/python/scipy/py3/tests/_build_utils/ya.make b/contrib/python/scipy/py3/tests/_build_utils/ya.make
new file mode 100644
index 0000000000..557f802cd6
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/_build_utils/ya.make
@@ -0,0 +1,26 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/_build_utils/tests/__init__.py
+ scipy/_build_utils/tests/test_scipy_version.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/_lib/ya.make b/contrib/python/scipy/py3/tests/_lib/ya.make
new file mode 100644
index 0000000000..ebc065f7d9
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/_lib/ya.make
@@ -0,0 +1,38 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/_lib/tests/__init__.py
+ scipy/_lib/tests/test__gcutils.py
+ scipy/_lib/tests/test__pep440.py
+ scipy/_lib/tests/test__testutils.py
+ scipy/_lib/tests/test__threadsafety.py
+ scipy/_lib/tests/test__util.py
+ scipy/_lib/tests/test_bunch.py
+ scipy/_lib/tests/test_public_api.py
+ scipy/_lib/tests/test_tmpdirs.py
+ scipy/_lib/tests/test_warnings.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/cluster/ya.make b/contrib/python/scipy/py3/tests/cluster/ya.make
new file mode 100644
index 0000000000..016955b98e
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/cluster/ya.make
@@ -0,0 +1,29 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/cluster/tests/__init__.py
+ scipy/cluster/tests/hierarchy_test_data.py
+ scipy/cluster/tests/test_disjoint_set.py
+ scipy/cluster/tests/test_hierarchy.py
+ scipy/cluster/tests/test_vq.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/constants/ya.make b/contrib/python/scipy/py3/tests/constants/ya.make
new file mode 100644
index 0000000000..caa3af28c6
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/constants/ya.make
@@ -0,0 +1,27 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/constants/tests/__init__.py
+ scipy/constants/tests/test_codata.py
+ scipy/constants/tests/test_constants.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/fft/ya.make b/contrib/python/scipy/py3/tests/fft/ya.make
new file mode 100644
index 0000000000..c6102cb142
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/fft/ya.make
@@ -0,0 +1,42 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/fft/_pocketfft/tests/__init__.py
+ scipy/fft/_pocketfft/tests/test_basic.py
+ scipy/fft/_pocketfft/tests/test_real_transforms.py
+ scipy/fft/tests/__init__.py
+ scipy/fft/tests/mock_backend.py
+ scipy/fft/tests/test_backend.py
+ scipy/fft/tests/test_fft_function.py
+ scipy/fft/tests/test_fftlog.py
+ scipy/fft/tests/test_helper.py
+ scipy/fft/tests/test_multithreading.py
+ scipy/fft/tests/test_numpy.py
+ scipy/fft/tests/test_real_transforms.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/fftpack/ya.make b/contrib/python/scipy/py3/tests/fftpack/ya.make
new file mode 100644
index 0000000000..327fb9f677
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/fftpack/ya.make
@@ -0,0 +1,34 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/fftpack/tests/__init__.py
+ scipy/fftpack/tests/test_basic.py
+ scipy/fftpack/tests/test_helper.py
+ scipy/fftpack/tests/test_import.py
+ scipy/fftpack/tests/test_pseudo_diffs.py
+ scipy/fftpack/tests/test_real_transforms.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/integrate/ya.make b/contrib/python/scipy/py3/tests/integrate/ya.make
new file mode 100644
index 0000000000..e2a1514951
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/integrate/ya.make
@@ -0,0 +1,32 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/integrate/_ivp/tests/__init__.py
+ scipy/integrate/_ivp/tests/test_ivp.py
+ scipy/integrate/_ivp/tests/test_rk.py
+ scipy/integrate/tests/__init__.py
+ scipy/integrate/tests/test__quad_vec.py
+ scipy/integrate/tests/test_banded_ode_solvers.py
+ scipy/integrate/tests/test_bvp.py
+ scipy/integrate/tests/test_integrate.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/interpolate/ya.make b/contrib/python/scipy/py3/tests/interpolate/ya.make
new file mode 100644
index 0000000000..a1f2ef582e
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/interpolate/ya.make
@@ -0,0 +1,41 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/interpolate/tests/__init__.py
+ scipy/interpolate/tests/test_bsplines.py
+ scipy/interpolate/tests/test_fitpack.py
+ scipy/interpolate/tests/test_fitpack2.py
+ scipy/interpolate/tests/test_gil.py
+ scipy/interpolate/tests/test_interpnd.py
+ scipy/interpolate/tests/test_interpolate.py
+ scipy/interpolate/tests/test_ndgriddata.py
+ scipy/interpolate/tests/test_pade.py
+ scipy/interpolate/tests/test_polyint.py
+ scipy/interpolate/tests/test_rbf.py
+ scipy/interpolate/tests/test_rbfinterp.py
+ scipy/interpolate/tests/test_rgi.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/io/ya.make b/contrib/python/scipy/py3/tests/io/ya.make
new file mode 100644
index 0000000000..66ecdbe323
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/io/ya.make
@@ -0,0 +1,48 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/io/_harwell_boeing/tests/__init__.py
+ scipy/io/_harwell_boeing/tests/test_fortran_format.py
+ scipy/io/_harwell_boeing/tests/test_hb.py
+ scipy/io/arff/tests/__init__.py
+ scipy/io/arff/tests/test_arffread.py
+ scipy/io/matlab/tests/__init__.py
+ scipy/io/matlab/tests/test_byteordercodes.py
+ scipy/io/matlab/tests/test_mio.py
+ scipy/io/matlab/tests/test_mio5_utils.py
+ scipy/io/matlab/tests/test_mio_funcs.py
+ scipy/io/matlab/tests/test_mio_utils.py
+ scipy/io/matlab/tests/test_miobase.py
+ scipy/io/matlab/tests/test_pathological.py
+ scipy/io/matlab/tests/test_streams.py
+ scipy/io/tests/__init__.py
+ scipy/io/tests/test_idl.py
+ scipy/io/tests/test_mmio.py
+ scipy/io/tests/test_netcdf.py
+ scipy/io/tests/test_paths.py
+ scipy/io/tests/test_wavfile.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/linalg/ya.make b/contrib/python/scipy/py3/tests/linalg/ya.make
new file mode 100644
index 0000000000..5623e4afa0
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/linalg/ya.make
@@ -0,0 +1,54 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/linalg/tests/__init__.py
+ scipy/linalg/tests/test_basic.py
+ scipy/linalg/tests/test_blas.py
+ scipy/linalg/tests/test_cython_blas.py
+ scipy/linalg/tests/test_cython_lapack.py
+ scipy/linalg/tests/test_cythonized_array_utils.py
+ scipy/linalg/tests/test_decomp.py
+ scipy/linalg/tests/test_decomp_cholesky.py
+ scipy/linalg/tests/test_decomp_cossin.py
+ scipy/linalg/tests/test_decomp_ldl.py
+ scipy/linalg/tests/test_decomp_lu.py
+ scipy/linalg/tests/test_decomp_polar.py
+ scipy/linalg/tests/test_decomp_update.py
+ scipy/linalg/tests/test_fblas.py
+ scipy/linalg/tests/test_interpolative.py
+ scipy/linalg/tests/test_lapack.py
+ scipy/linalg/tests/test_matfuncs.py
+ scipy/linalg/tests/test_matmul_toeplitz.py
+ scipy/linalg/tests/test_misc.py
+ scipy/linalg/tests/test_procrustes.py
+ scipy/linalg/tests/test_sketches.py
+ scipy/linalg/tests/test_solve_toeplitz.py
+ scipy/linalg/tests/test_solvers.py
+ scipy/linalg/tests/test_special_matrices.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/misc/ya.make b/contrib/python/scipy/py3/tests/misc/ya.make
new file mode 100644
index 0000000000..0e8d676c8c
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/misc/ya.make
@@ -0,0 +1,28 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/misc/tests/__init__.py
+ scipy/misc/tests/test_common.py
+ scipy/misc/tests/test_config.py
+ scipy/misc/tests/test_doccer.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/ndimage/ya.make b/contrib/python/scipy/py3/tests/ndimage/ya.make
new file mode 100644
index 0000000000..45c61ce0bf
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/ndimage/ya.make
@@ -0,0 +1,36 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/ndimage/tests/__init__.py
+ scipy/ndimage/tests/test_datatypes.py
+ scipy/ndimage/tests/test_filters.py
+ scipy/ndimage/tests/test_fourier.py
+ scipy/ndimage/tests/test_interpolation.py
+ scipy/ndimage/tests/test_measurements.py
+ scipy/ndimage/tests/test_morphology.py
+ scipy/ndimage/tests/test_splines.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/odr/ya.make b/contrib/python/scipy/py3/tests/odr/ya.make
new file mode 100644
index 0000000000..7242b97930
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/odr/ya.make
@@ -0,0 +1,26 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/odr/tests/__init__.py
+ scipy/odr/tests/test_odr.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/optimize/ya.make b/contrib/python/scipy/py3/tests/optimize/ya.make
new file mode 100644
index 0000000000..67f934a48c
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/optimize/ya.make
@@ -0,0 +1,69 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/optimize/_trustregion_constr/tests/__init__.py
+ scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.py
+ scipy/optimize/_trustregion_constr/tests/test_projections.py
+ scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py
+ scipy/optimize/_trustregion_constr/tests/test_report.py
+ scipy/optimize/tests/__init__.py
+ scipy/optimize/tests/test__basinhopping.py
+ scipy/optimize/tests/test__differential_evolution.py
+ scipy/optimize/tests/test__dual_annealing.py
+ scipy/optimize/tests/test__linprog_clean_inputs.py
+ scipy/optimize/tests/test__numdiff.py
+ scipy/optimize/tests/test__remove_redundancy.py
+ scipy/optimize/tests/test__root.py
+ scipy/optimize/tests/test__shgo.py
+ scipy/optimize/tests/test__spectral.py
+ scipy/optimize/tests/test_cobyla.py
+ scipy/optimize/tests/test_constraint_conversion.py
+ scipy/optimize/tests/test_constraints.py
+ scipy/optimize/tests/test_cython_optimize.py
+ scipy/optimize/tests/test_differentiable_functions.py
+ scipy/optimize/tests/test_direct.py
+ scipy/optimize/tests/test_hessian_update_strategy.py
+ scipy/optimize/tests/test_lbfgsb_hessinv.py
+ scipy/optimize/tests/test_lbfgsb_setulb.py
+ scipy/optimize/tests/test_least_squares.py
+ scipy/optimize/tests/test_linesearch.py
+ scipy/optimize/tests/test_linprog.py
+ scipy/optimize/tests/test_lsq_common.py
+ scipy/optimize/tests/test_lsq_linear.py
+ scipy/optimize/tests/test_milp.py
+ scipy/optimize/tests/test_minimize_constrained.py
+ scipy/optimize/tests/test_minpack.py
+ scipy/optimize/tests/test_nnls.py
+ scipy/optimize/tests/test_nonlin.py
+ scipy/optimize/tests/test_optimize.py
+ scipy/optimize/tests/test_quadratic_assignment.py
+ scipy/optimize/tests/test_regression.py
+ scipy/optimize/tests/test_slsqp.py
+ scipy/optimize/tests/test_tnc.py
+ scipy/optimize/tests/test_trustregion.py
+ scipy/optimize/tests/test_trustregion_exact.py
+ scipy/optimize/tests/test_trustregion_krylov.py
+ scipy/optimize/tests/test_zeros.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/signal/ya.make b/contrib/python/scipy/py3/tests/signal/ya.make
new file mode 100644
index 0000000000..fb45a7254c
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/signal/ya.make
@@ -0,0 +1,46 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/signal/tests/__init__.py
+ scipy/signal/tests/mpsig.py
+ scipy/signal/tests/test_array_tools.py
+ scipy/signal/tests/test_bsplines.py
+ scipy/signal/tests/test_cont2discrete.py
+ scipy/signal/tests/test_czt.py
+ scipy/signal/tests/test_dltisys.py
+ scipy/signal/tests/test_filter_design.py
+ scipy/signal/tests/test_fir_filter_design.py
+ scipy/signal/tests/test_ltisys.py
+ scipy/signal/tests/test_max_len_seq.py
+ scipy/signal/tests/test_peak_finding.py
+ scipy/signal/tests/test_result_type.py
+ scipy/signal/tests/test_savitzky_golay.py
+ scipy/signal/tests/test_signaltools.py
+ scipy/signal/tests/test_spectral.py
+ scipy/signal/tests/test_upfirdn.py
+ scipy/signal/tests/test_waveforms.py
+ scipy/signal/tests/test_wavelets.py
+ scipy/signal/tests/test_windows.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/sparse/ya.make b/contrib/python/scipy/py3/tests/sparse/ya.make
new file mode 100644
index 0000000000..946ba0acbd
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/sparse/ya.make
@@ -0,0 +1,75 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/sparse/csgraph/tests/__init__.py
+ scipy/sparse/csgraph/tests/test_connected_components.py
+ scipy/sparse/csgraph/tests/test_conversions.py
+ scipy/sparse/csgraph/tests/test_flow.py
+ scipy/sparse/csgraph/tests/test_graph_laplacian.py
+ scipy/sparse/csgraph/tests/test_matching.py
+ scipy/sparse/csgraph/tests/test_reordering.py
+ scipy/sparse/csgraph/tests/test_shortest_path.py
+ scipy/sparse/csgraph/tests/test_spanning_tree.py
+ scipy/sparse/csgraph/tests/test_traversal.py
+ scipy/sparse/linalg/_dsolve/tests/__init__.py
+ scipy/sparse/linalg/_dsolve/tests/test_linsolve.py
+ scipy/sparse/linalg/_eigen/arpack/tests/__init__.py
+ scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py
+ scipy/sparse/linalg/_eigen/lobpcg/tests/__init__.py
+ scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py
+ scipy/sparse/linalg/_eigen/tests/__init__.py
+ scipy/sparse/linalg/_eigen/tests/test_svds.py
+ scipy/sparse/linalg/_isolve/tests/__init__.py
+ scipy/sparse/linalg/_isolve/tests/test_gcrotmk.py
+ scipy/sparse/linalg/_isolve/tests/test_iterative.py
+ scipy/sparse/linalg/_isolve/tests/test_lgmres.py
+ scipy/sparse/linalg/_isolve/tests/test_lsmr.py
+ scipy/sparse/linalg/_isolve/tests/test_lsqr.py
+ scipy/sparse/linalg/_isolve/tests/test_minres.py
+ scipy/sparse/linalg/_isolve/tests/test_utils.py
+ scipy/sparse/linalg/tests/__init__.py
+ scipy/sparse/linalg/tests/test_expm_multiply.py
+ scipy/sparse/linalg/tests/test_interface.py
+ scipy/sparse/linalg/tests/test_matfuncs.py
+ scipy/sparse/linalg/tests/test_norm.py
+ scipy/sparse/linalg/tests/test_onenormest.py
+ scipy/sparse/linalg/tests/test_pydata_sparse.py
+ scipy/sparse/tests/__init__.py
+ scipy/sparse/tests/test_array_api.py
+ scipy/sparse/tests/test_base.py
+ scipy/sparse/tests/test_construct.py
+ scipy/sparse/tests/test_csc.py
+ scipy/sparse/tests/test_csr.py
+ scipy/sparse/tests/test_deprecations.py
+ scipy/sparse/tests/test_extract.py
+ scipy/sparse/tests/test_matrix_io.py
+ scipy/sparse/tests/test_sparsetools.py
+ scipy/sparse/tests/test_spfuncs.py
+ scipy/sparse/tests/test_sputils.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/spatial/ya.make b/contrib/python/scipy/py3/tests/spatial/ya.make
new file mode 100644
index 0000000000..b6f681177a
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/spatial/ya.make
@@ -0,0 +1,43 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/spatial/tests/__init__.py
+ scipy/spatial/tests/test__plotutils.py
+ scipy/spatial/tests/test__procrustes.py
+ scipy/spatial/tests/test_distance.py
+ scipy/spatial/tests/test_hausdorff.py
+ scipy/spatial/tests/test_kdtree.py
+ scipy/spatial/tests/test_qhull.py
+ scipy/spatial/tests/test_slerp.py
+ scipy/spatial/tests/test_spherical_voronoi.py
+ scipy/spatial/transform/tests/__init__.py
+ scipy/spatial/transform/tests/test_rotation.py
+ scipy/spatial/transform/tests/test_rotation_groups.py
+ scipy/spatial/transform/tests/test_rotation_spline.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/special/ya.make b/contrib/python/scipy/py3/tests/special/ya.make
new file mode 100644
index 0000000000..9ed889f3b0
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/special/ya.make
@@ -0,0 +1,73 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/special/tests/__init__.py
+ scipy/special/tests/test_basic.py
+ scipy/special/tests/test_bdtr.py
+ scipy/special/tests/test_boxcox.py
+ scipy/special/tests/test_cdft_asymptotic.py
+ scipy/special/tests/test_cosine_distr.py
+ scipy/special/tests/test_cython_special.py
+ scipy/special/tests/test_data.py
+ scipy/special/tests/test_digamma.py
+ scipy/special/tests/test_ellip_harm.py
+ scipy/special/tests/test_erfinv.py
+ scipy/special/tests/test_faddeeva.py
+ scipy/special/tests/test_gamma.py
+ scipy/special/tests/test_gammainc.py
+ scipy/special/tests/test_hyp2f1.py
+ scipy/special/tests/test_hypergeometric.py
+ scipy/special/tests/test_kolmogorov.py
+ scipy/special/tests/test_lambertw.py
+ scipy/special/tests/test_log_softmax.py
+ scipy/special/tests/test_loggamma.py
+ scipy/special/tests/test_logit.py
+ scipy/special/tests/test_logsumexp.py
+ scipy/special/tests/test_nan_inputs.py
+ scipy/special/tests/test_ndtr.py
+ scipy/special/tests/test_ndtri_exp.py
+ scipy/special/tests/test_orthogonal.py
+ scipy/special/tests/test_orthogonal_eval.py
+ scipy/special/tests/test_owens_t.py
+ scipy/special/tests/test_pcf.py
+ scipy/special/tests/test_pdtr.py
+ scipy/special/tests/test_precompute_expn_asy.py
+ scipy/special/tests/test_precompute_gammainc.py
+ scipy/special/tests/test_precompute_utils.py
+ scipy/special/tests/test_sf_error.py
+ scipy/special/tests/test_sici.py
+ scipy/special/tests/test_spence.py
+ scipy/special/tests/test_spfun_stats.py
+ scipy/special/tests/test_sph_harm.py
+ scipy/special/tests/test_spherical_bessel.py
+ scipy/special/tests/test_trig.py
+ scipy/special/tests/test_wright_bessel.py
+ scipy/special/tests/test_wrightomega.py
+ scipy/special/tests/test_zeta.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/stats/ya.make b/contrib/python/scipy/py3/tests/stats/ya.make
new file mode 100644
index 0000000000..6cbecf1ab6
--- /dev/null
+++ b/contrib/python/scipy/py3/tests/stats/ya.make
@@ -0,0 +1,61 @@
+# Generated by devtools/yamaker.
+
+PY3TEST()
+
+SUBSCRIBER(g:python-contrib)
+
+VERSION(1.11.4)
+
+ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
+
+SIZE(MEDIUM)
+
+FORK_SUBTESTS()
+
+PEERDIR(
+ contrib/python/scipy/py3/tests
+)
+
+NO_LINT()
+
+DATA(
+ arcadia/contrib/python/scipy/py3
+)
+
+SRCDIR(contrib/python/scipy/py3)
+
+TEST_SRCS(
+ scipy/stats/tests/__init__.py
+ scipy/stats/tests/common_tests.py
+ scipy/stats/tests/data/fisher_exact_results_from_r.py
+ scipy/stats/tests/test_axis_nan_policy.py
+ scipy/stats/tests/test_binned_statistic.py
+ scipy/stats/tests/test_boost_ufuncs.py
+ scipy/stats/tests/test_censored_data.py
+ scipy/stats/tests/test_contingency.py
+ scipy/stats/tests/test_continuous_basic.py
+ scipy/stats/tests/test_continuous_fit_censored.py
+ scipy/stats/tests/test_crosstab.py
+ scipy/stats/tests/test_discrete_basic.py
+ scipy/stats/tests/test_discrete_distns.py
+ scipy/stats/tests/test_entropy.py
+ scipy/stats/tests/test_fit.py
+ scipy/stats/tests/test_hypotests.py
+ scipy/stats/tests/test_morestats.py
+ scipy/stats/tests/test_mstats_basic.py
+ scipy/stats/tests/test_mstats_extras.py
+ scipy/stats/tests/test_multicomp.py
+ scipy/stats/tests/test_odds_ratio.py
+ scipy/stats/tests/test_qmc.py
+ scipy/stats/tests/test_rank.py
+ scipy/stats/tests/test_relative_risk.py
+ scipy/stats/tests/test_resampling.py
+ scipy/stats/tests/test_sampling.py
+ scipy/stats/tests/test_sensitivity_analysis.py
+ scipy/stats/tests/test_stats.py
+ scipy/stats/tests/test_survival.py
+ scipy/stats/tests/test_tukeylambda_stats.py
+ scipy/stats/tests/test_variation.py
+)
+
+END()
diff --git a/contrib/python/scipy/py3/tests/ya.make b/contrib/python/scipy/py3/tests/ya.make
index b0b1bf51bc..7ccd7890bf 100644
--- a/contrib/python/scipy/py3/tests/ya.make
+++ b/contrib/python/scipy/py3/tests/ya.make
@@ -1,6 +1,6 @@
# Generated by devtools/yamaker.
-PY3TEST()
+PY3_LIBRARY()
SUBSCRIBER(g:python-contrib)
@@ -8,13 +8,7 @@ VERSION(1.11.4)
ORIGINAL_SOURCE(mirror://pypi/s/scipy/scipy-1.11.4.tar.gz)
-SIZE(MEDIUM)
-
-FORK_SUBTESTS()
-
-SPLIT_FACTOR(20)
-
-REQUIREMENTS(ram:30)
+LICENSE(BSD-3-Clause)
PEERDIR(
contrib/python/mpmath
@@ -24,10 +18,6 @@ PEERDIR(
NO_LINT()
-DATA(
- arcadia/contrib/python/scipy/py3
-)
-
SRCDIR(contrib/python/scipy/py3)
PY_SRCS(
@@ -35,319 +25,26 @@ PY_SRCS(
scipy/conftest.py
)
-TEST_SRCS(
- scipy/_build_utils/tests/__init__.py
- scipy/_build_utils/tests/test_scipy_version.py
- scipy/_lib/tests/__init__.py
- scipy/_lib/tests/test__gcutils.py
- scipy/_lib/tests/test__pep440.py
- scipy/_lib/tests/test__testutils.py
- scipy/_lib/tests/test__threadsafety.py
- scipy/_lib/tests/test__util.py
- scipy/_lib/tests/test_bunch.py
- scipy/_lib/tests/test_public_api.py
- scipy/_lib/tests/test_tmpdirs.py
- scipy/_lib/tests/test_warnings.py
- scipy/cluster/tests/__init__.py
- scipy/cluster/tests/hierarchy_test_data.py
- scipy/cluster/tests/test_disjoint_set.py
- scipy/cluster/tests/test_hierarchy.py
- scipy/cluster/tests/test_vq.py
- scipy/constants/tests/__init__.py
- scipy/constants/tests/test_codata.py
- scipy/constants/tests/test_constants.py
- scipy/fft/_pocketfft/tests/__init__.py
- scipy/fft/_pocketfft/tests/test_basic.py
- scipy/fft/_pocketfft/tests/test_real_transforms.py
- scipy/fft/tests/__init__.py
- scipy/fft/tests/mock_backend.py
- scipy/fft/tests/test_backend.py
- scipy/fft/tests/test_fft_function.py
- scipy/fft/tests/test_fftlog.py
- scipy/fft/tests/test_helper.py
- scipy/fft/tests/test_multithreading.py
- scipy/fft/tests/test_numpy.py
- scipy/fft/tests/test_real_transforms.py
- scipy/fftpack/tests/__init__.py
- scipy/fftpack/tests/test_basic.py
- scipy/fftpack/tests/test_helper.py
- scipy/fftpack/tests/test_import.py
- scipy/fftpack/tests/test_pseudo_diffs.py
- scipy/fftpack/tests/test_real_transforms.py
- scipy/integrate/_ivp/tests/__init__.py
- scipy/integrate/_ivp/tests/test_ivp.py
- scipy/integrate/_ivp/tests/test_rk.py
- scipy/integrate/tests/__init__.py
- scipy/integrate/tests/test__quad_vec.py
- scipy/integrate/tests/test_banded_ode_solvers.py
- scipy/integrate/tests/test_bvp.py
- scipy/integrate/tests/test_integrate.py
- scipy/interpolate/tests/__init__.py
- scipy/interpolate/tests/test_bsplines.py
- scipy/interpolate/tests/test_fitpack.py
- scipy/interpolate/tests/test_fitpack2.py
- scipy/interpolate/tests/test_gil.py
- scipy/interpolate/tests/test_interpnd.py
- scipy/interpolate/tests/test_interpolate.py
- scipy/interpolate/tests/test_ndgriddata.py
- scipy/interpolate/tests/test_pade.py
- scipy/interpolate/tests/test_polyint.py
- scipy/interpolate/tests/test_rbf.py
- scipy/interpolate/tests/test_rbfinterp.py
- scipy/interpolate/tests/test_rgi.py
- scipy/io/_harwell_boeing/tests/__init__.py
- scipy/io/_harwell_boeing/tests/test_fortran_format.py
- scipy/io/_harwell_boeing/tests/test_hb.py
- scipy/io/arff/tests/__init__.py
- scipy/io/arff/tests/test_arffread.py
- scipy/io/matlab/tests/__init__.py
- scipy/io/matlab/tests/test_byteordercodes.py
- scipy/io/matlab/tests/test_mio.py
- scipy/io/matlab/tests/test_mio5_utils.py
- scipy/io/matlab/tests/test_mio_funcs.py
- scipy/io/matlab/tests/test_mio_utils.py
- scipy/io/matlab/tests/test_miobase.py
- scipy/io/matlab/tests/test_pathological.py
- scipy/io/matlab/tests/test_streams.py
- scipy/io/tests/__init__.py
- scipy/io/tests/test_idl.py
- scipy/io/tests/test_mmio.py
- scipy/io/tests/test_netcdf.py
- scipy/io/tests/test_paths.py
- scipy/io/tests/test_wavfile.py
- scipy/linalg/tests/__init__.py
- scipy/linalg/tests/test_basic.py
- scipy/linalg/tests/test_blas.py
- scipy/linalg/tests/test_cython_blas.py
- scipy/linalg/tests/test_cython_lapack.py
- scipy/linalg/tests/test_cythonized_array_utils.py
- scipy/linalg/tests/test_decomp.py
- scipy/linalg/tests/test_decomp_cholesky.py
- scipy/linalg/tests/test_decomp_cossin.py
- scipy/linalg/tests/test_decomp_ldl.py
- scipy/linalg/tests/test_decomp_lu.py
- scipy/linalg/tests/test_decomp_polar.py
- scipy/linalg/tests/test_decomp_update.py
- scipy/linalg/tests/test_fblas.py
- scipy/linalg/tests/test_interpolative.py
- scipy/linalg/tests/test_lapack.py
- scipy/linalg/tests/test_matfuncs.py
- scipy/linalg/tests/test_matmul_toeplitz.py
- scipy/linalg/tests/test_misc.py
- scipy/linalg/tests/test_procrustes.py
- scipy/linalg/tests/test_sketches.py
- scipy/linalg/tests/test_solve_toeplitz.py
- scipy/linalg/tests/test_solvers.py
- scipy/linalg/tests/test_special_matrices.py
- scipy/misc/tests/__init__.py
- scipy/misc/tests/test_common.py
- scipy/misc/tests/test_config.py
- scipy/misc/tests/test_doccer.py
- scipy/ndimage/tests/__init__.py
- scipy/ndimage/tests/test_datatypes.py
- scipy/ndimage/tests/test_filters.py
- scipy/ndimage/tests/test_fourier.py
- scipy/ndimage/tests/test_interpolation.py
- scipy/ndimage/tests/test_measurements.py
- scipy/ndimage/tests/test_morphology.py
- scipy/ndimage/tests/test_splines.py
- scipy/odr/tests/__init__.py
- scipy/odr/tests/test_odr.py
- scipy/optimize/_trustregion_constr/tests/__init__.py
- scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.py
- scipy/optimize/_trustregion_constr/tests/test_projections.py
- scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py
- scipy/optimize/_trustregion_constr/tests/test_report.py
- scipy/optimize/tests/__init__.py
- scipy/optimize/tests/test__basinhopping.py
- scipy/optimize/tests/test__differential_evolution.py
- scipy/optimize/tests/test__dual_annealing.py
- scipy/optimize/tests/test__linprog_clean_inputs.py
- scipy/optimize/tests/test__numdiff.py
- scipy/optimize/tests/test__remove_redundancy.py
- scipy/optimize/tests/test__root.py
- scipy/optimize/tests/test__shgo.py
- scipy/optimize/tests/test__spectral.py
- scipy/optimize/tests/test_cobyla.py
- scipy/optimize/tests/test_constraint_conversion.py
- scipy/optimize/tests/test_constraints.py
- scipy/optimize/tests/test_cython_optimize.py
- scipy/optimize/tests/test_differentiable_functions.py
- scipy/optimize/tests/test_direct.py
- scipy/optimize/tests/test_hessian_update_strategy.py
- scipy/optimize/tests/test_lbfgsb_hessinv.py
- scipy/optimize/tests/test_lbfgsb_setulb.py
- scipy/optimize/tests/test_least_squares.py
- scipy/optimize/tests/test_linesearch.py
- scipy/optimize/tests/test_linprog.py
- scipy/optimize/tests/test_lsq_common.py
- scipy/optimize/tests/test_lsq_linear.py
- scipy/optimize/tests/test_milp.py
- scipy/optimize/tests/test_minimize_constrained.py
- scipy/optimize/tests/test_minpack.py
- scipy/optimize/tests/test_nnls.py
- scipy/optimize/tests/test_nonlin.py
- scipy/optimize/tests/test_optimize.py
- scipy/optimize/tests/test_quadratic_assignment.py
- scipy/optimize/tests/test_regression.py
- scipy/optimize/tests/test_slsqp.py
- scipy/optimize/tests/test_tnc.py
- scipy/optimize/tests/test_trustregion.py
- scipy/optimize/tests/test_trustregion_exact.py
- scipy/optimize/tests/test_trustregion_krylov.py
- scipy/optimize/tests/test_zeros.py
- scipy/signal/tests/__init__.py
- scipy/signal/tests/mpsig.py
- scipy/signal/tests/test_array_tools.py
- scipy/signal/tests/test_bsplines.py
- scipy/signal/tests/test_cont2discrete.py
- scipy/signal/tests/test_czt.py
- scipy/signal/tests/test_dltisys.py
- scipy/signal/tests/test_filter_design.py
- scipy/signal/tests/test_fir_filter_design.py
- scipy/signal/tests/test_ltisys.py
- scipy/signal/tests/test_max_len_seq.py
- scipy/signal/tests/test_peak_finding.py
- scipy/signal/tests/test_result_type.py
- scipy/signal/tests/test_savitzky_golay.py
- scipy/signal/tests/test_signaltools.py
- scipy/signal/tests/test_spectral.py
- scipy/signal/tests/test_upfirdn.py
- scipy/signal/tests/test_waveforms.py
- scipy/signal/tests/test_wavelets.py
- scipy/signal/tests/test_windows.py
- scipy/sparse/csgraph/tests/__init__.py
- scipy/sparse/csgraph/tests/test_connected_components.py
- scipy/sparse/csgraph/tests/test_conversions.py
- scipy/sparse/csgraph/tests/test_flow.py
- scipy/sparse/csgraph/tests/test_graph_laplacian.py
- scipy/sparse/csgraph/tests/test_matching.py
- scipy/sparse/csgraph/tests/test_reordering.py
- scipy/sparse/csgraph/tests/test_shortest_path.py
- scipy/sparse/csgraph/tests/test_spanning_tree.py
- scipy/sparse/csgraph/tests/test_traversal.py
- scipy/sparse/linalg/_dsolve/tests/__init__.py
- scipy/sparse/linalg/_dsolve/tests/test_linsolve.py
- scipy/sparse/linalg/_eigen/arpack/tests/__init__.py
- scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py
- scipy/sparse/linalg/_eigen/lobpcg/tests/__init__.py
- scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py
- scipy/sparse/linalg/_eigen/tests/__init__.py
- scipy/sparse/linalg/_eigen/tests/test_svds.py
- scipy/sparse/linalg/_isolve/tests/__init__.py
- scipy/sparse/linalg/_isolve/tests/test_gcrotmk.py
- scipy/sparse/linalg/_isolve/tests/test_iterative.py
- scipy/sparse/linalg/_isolve/tests/test_lgmres.py
- scipy/sparse/linalg/_isolve/tests/test_lsmr.py
- scipy/sparse/linalg/_isolve/tests/test_lsqr.py
- scipy/sparse/linalg/_isolve/tests/test_minres.py
- scipy/sparse/linalg/_isolve/tests/test_utils.py
- scipy/sparse/linalg/tests/__init__.py
- scipy/sparse/linalg/tests/test_expm_multiply.py
- scipy/sparse/linalg/tests/test_interface.py
- scipy/sparse/linalg/tests/test_matfuncs.py
- scipy/sparse/linalg/tests/test_norm.py
- scipy/sparse/linalg/tests/test_onenormest.py
- scipy/sparse/linalg/tests/test_pydata_sparse.py
- scipy/sparse/tests/__init__.py
- scipy/sparse/tests/test_array_api.py
- scipy/sparse/tests/test_base.py
- scipy/sparse/tests/test_construct.py
- scipy/sparse/tests/test_csc.py
- scipy/sparse/tests/test_csr.py
- scipy/sparse/tests/test_deprecations.py
- scipy/sparse/tests/test_extract.py
- scipy/sparse/tests/test_matrix_io.py
- scipy/sparse/tests/test_sparsetools.py
- scipy/sparse/tests/test_spfuncs.py
- scipy/sparse/tests/test_sputils.py
- scipy/spatial/tests/__init__.py
- scipy/spatial/tests/test__plotutils.py
- scipy/spatial/tests/test__procrustes.py
- scipy/spatial/tests/test_distance.py
- scipy/spatial/tests/test_hausdorff.py
- scipy/spatial/tests/test_kdtree.py
- scipy/spatial/tests/test_qhull.py
- scipy/spatial/tests/test_slerp.py
- scipy/spatial/tests/test_spherical_voronoi.py
- scipy/spatial/transform/tests/__init__.py
- scipy/spatial/transform/tests/test_rotation.py
- scipy/spatial/transform/tests/test_rotation_groups.py
- scipy/spatial/transform/tests/test_rotation_spline.py
- scipy/special/tests/__init__.py
- scipy/special/tests/test_basic.py
- scipy/special/tests/test_bdtr.py
- scipy/special/tests/test_boxcox.py
- scipy/special/tests/test_cdft_asymptotic.py
- scipy/special/tests/test_cosine_distr.py
- scipy/special/tests/test_cython_special.py
- scipy/special/tests/test_data.py
- scipy/special/tests/test_digamma.py
- scipy/special/tests/test_ellip_harm.py
- scipy/special/tests/test_erfinv.py
- scipy/special/tests/test_faddeeva.py
- scipy/special/tests/test_gamma.py
- scipy/special/tests/test_gammainc.py
- scipy/special/tests/test_hyp2f1.py
- scipy/special/tests/test_hypergeometric.py
- scipy/special/tests/test_kolmogorov.py
- scipy/special/tests/test_lambertw.py
- scipy/special/tests/test_log_softmax.py
- scipy/special/tests/test_loggamma.py
- scipy/special/tests/test_logit.py
- scipy/special/tests/test_logsumexp.py
- scipy/special/tests/test_nan_inputs.py
- scipy/special/tests/test_ndtr.py
- scipy/special/tests/test_ndtri_exp.py
- scipy/special/tests/test_orthogonal.py
- scipy/special/tests/test_orthogonal_eval.py
- scipy/special/tests/test_owens_t.py
- scipy/special/tests/test_pcf.py
- scipy/special/tests/test_pdtr.py
- scipy/special/tests/test_precompute_expn_asy.py
- scipy/special/tests/test_precompute_gammainc.py
- scipy/special/tests/test_precompute_utils.py
- scipy/special/tests/test_sf_error.py
- scipy/special/tests/test_sici.py
- scipy/special/tests/test_spence.py
- scipy/special/tests/test_spfun_stats.py
- scipy/special/tests/test_sph_harm.py
- scipy/special/tests/test_spherical_bessel.py
- scipy/special/tests/test_trig.py
- scipy/special/tests/test_wright_bessel.py
- scipy/special/tests/test_wrightomega.py
- scipy/special/tests/test_zeta.py
- scipy/stats/tests/__init__.py
- scipy/stats/tests/common_tests.py
- scipy/stats/tests/data/fisher_exact_results_from_r.py
- scipy/stats/tests/test_axis_nan_policy.py
- scipy/stats/tests/test_binned_statistic.py
- scipy/stats/tests/test_boost_ufuncs.py
- scipy/stats/tests/test_censored_data.py
- scipy/stats/tests/test_contingency.py
- scipy/stats/tests/test_continuous_basic.py
- scipy/stats/tests/test_continuous_fit_censored.py
- scipy/stats/tests/test_crosstab.py
- scipy/stats/tests/test_discrete_basic.py
- scipy/stats/tests/test_discrete_distns.py
- scipy/stats/tests/test_entropy.py
- scipy/stats/tests/test_fit.py
- scipy/stats/tests/test_hypotests.py
- scipy/stats/tests/test_morestats.py
- scipy/stats/tests/test_mstats_basic.py
- scipy/stats/tests/test_mstats_extras.py
- scipy/stats/tests/test_multicomp.py
- scipy/stats/tests/test_odds_ratio.py
- scipy/stats/tests/test_qmc.py
- scipy/stats/tests/test_rank.py
- scipy/stats/tests/test_relative_risk.py
- scipy/stats/tests/test_resampling.py
- scipy/stats/tests/test_sampling.py
- scipy/stats/tests/test_sensitivity_analysis.py
- scipy/stats/tests/test_stats.py
- scipy/stats/tests/test_survival.py
- scipy/stats/tests/test_tukeylambda_stats.py
- scipy/stats/tests/test_variation.py
-)
-
END()
+
+RECURSE_FOR_TESTS(
+ _build_utils
+ _lib
+ cluster
+ constants
+ fft
+ fftpack
+ integrate
+ interpolate
+ io
+ linalg
+ misc
+ ndimage
+ odr
+ optimize
+ signal
+ sparse
+ spatial
+ special
+ stats
+)
diff --git a/contrib/python/six/py2/.dist-info/METADATA b/contrib/python/six/py2/.dist-info/METADATA
index 6d7525c2eb..cfde03c263 100644
--- a/contrib/python/six/py2/.dist-info/METADATA
+++ b/contrib/python/six/py2/.dist-info/METADATA
@@ -1,12 +1,11 @@
Metadata-Version: 2.1
Name: six
-Version: 1.16.0
+Version: 1.17.0
Summary: Python 2 and 3 compatibility utilities
Home-page: https://github.com/benjaminp/six
Author: Benjamin Peterson
Author-email: benjamin@python.org
License: MIT
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
@@ -15,15 +14,12 @@ Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Utilities
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*
+License-File: LICENSE
.. image:: https://img.shields.io/pypi/v/six.svg
:target: https://pypi.org/project/six/
:alt: six on PyPI
-.. image:: https://travis-ci.org/benjaminp/six.svg?branch=master
- :target: https://travis-ci.org/benjaminp/six
- :alt: six on TravisCI
-
.. image:: https://readthedocs.org/projects/six/badge/?version=latest
:target: https://six.readthedocs.io/
:alt: six's documentation on Read the Docs
@@ -45,5 +41,3 @@ Online documentation is at https://six.readthedocs.io/.
Bugs can be reported to https://github.com/benjaminp/six. The code can also
be found there.
-
-
diff --git a/contrib/python/six/py2/LICENSE b/contrib/python/six/py2/LICENSE
index de6633112c..1cc22a5aa7 100644
--- a/contrib/python/six/py2/LICENSE
+++ b/contrib/python/six/py2/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2020 Benjamin Peterson
+Copyright (c) 2010-2024 Benjamin Peterson
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff --git a/contrib/python/six/py2/README.rst b/contrib/python/six/py2/README.rst
index 6339ba5d93..3674bc956e 100644
--- a/contrib/python/six/py2/README.rst
+++ b/contrib/python/six/py2/README.rst
@@ -2,10 +2,6 @@
:target: https://pypi.org/project/six/
:alt: six on PyPI
-.. image:: https://travis-ci.org/benjaminp/six.svg?branch=master
- :target: https://travis-ci.org/benjaminp/six
- :alt: six on TravisCI
-
.. image:: https://readthedocs.org/projects/six/badge/?version=latest
:target: https://six.readthedocs.io/
:alt: six's documentation on Read the Docs
diff --git a/contrib/python/six/py2/six.py b/contrib/python/six/py2/six.py
index 4cba03c75f..29b5da2249 100644
--- a/contrib/python/six/py2/six.py
+++ b/contrib/python/six/py2/six.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2010-2020 Benjamin Peterson
+# Copyright (c) 2010-2024 Benjamin Peterson
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -29,7 +29,7 @@ import sys
import types
__author__ = "Benjamin Peterson <benjamin@python.org>"
-__version__ = "1.16.0"
+__version__ = "1.17.0"
# Useful for very coarse version differentiation.
@@ -263,7 +263,7 @@ _moved_attributes = [
MovedAttribute("reduce", "__builtin__", "functools"),
MovedAttribute("shlex_quote", "pipes", "shlex", "quote"),
MovedAttribute("StringIO", "StringIO", "io"),
- MovedAttribute("UserDict", "UserDict", "collections"),
+ MovedAttribute("UserDict", "UserDict", "collections", "IterableUserDict", "UserDict"),
MovedAttribute("UserList", "UserList", "collections"),
MovedAttribute("UserString", "UserString", "collections"),
MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
@@ -435,12 +435,17 @@ _urllib_request_moved_attributes = [
MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"),
MovedAttribute("urlretrieve", "urllib", "urllib.request"),
MovedAttribute("urlcleanup", "urllib", "urllib.request"),
- MovedAttribute("URLopener", "urllib", "urllib.request"),
- MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
MovedAttribute("proxy_bypass", "urllib", "urllib.request"),
MovedAttribute("parse_http_list", "urllib2", "urllib.request"),
MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"),
]
+if sys.version_info[:2] < (3, 14):
+ _urllib_request_moved_attributes.extend(
+ [
+ MovedAttribute("URLopener", "urllib", "urllib.request"),
+ MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
+ ]
+ )
for attr in _urllib_request_moved_attributes:
setattr(Module_six_moves_urllib_request, attr.name, attr)
del attr
diff --git a/contrib/python/six/py2/ya.make b/contrib/python/six/py2/ya.make
index ca16ba19ac..bac6050e1c 100644
--- a/contrib/python/six/py2/ya.make
+++ b/contrib/python/six/py2/ya.make
@@ -2,7 +2,7 @@
PY2_LIBRARY()
-VERSION(1.16.0)
+VERSION(1.17.0)
LICENSE(MIT)
diff --git a/contrib/python/six/py3/.dist-info/METADATA b/contrib/python/six/py3/.dist-info/METADATA
index 6d7525c2eb..cfde03c263 100644
--- a/contrib/python/six/py3/.dist-info/METADATA
+++ b/contrib/python/six/py3/.dist-info/METADATA
@@ -1,12 +1,11 @@
Metadata-Version: 2.1
Name: six
-Version: 1.16.0
+Version: 1.17.0
Summary: Python 2 and 3 compatibility utilities
Home-page: https://github.com/benjaminp/six
Author: Benjamin Peterson
Author-email: benjamin@python.org
License: MIT
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
@@ -15,15 +14,12 @@ Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Utilities
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*
+License-File: LICENSE
.. image:: https://img.shields.io/pypi/v/six.svg
:target: https://pypi.org/project/six/
:alt: six on PyPI
-.. image:: https://travis-ci.org/benjaminp/six.svg?branch=master
- :target: https://travis-ci.org/benjaminp/six
- :alt: six on TravisCI
-
.. image:: https://readthedocs.org/projects/six/badge/?version=latest
:target: https://six.readthedocs.io/
:alt: six's documentation on Read the Docs
@@ -45,5 +41,3 @@ Online documentation is at https://six.readthedocs.io/.
Bugs can be reported to https://github.com/benjaminp/six. The code can also
be found there.
-
-
diff --git a/contrib/python/six/py3/LICENSE b/contrib/python/six/py3/LICENSE
index de6633112c..1cc22a5aa7 100644
--- a/contrib/python/six/py3/LICENSE
+++ b/contrib/python/six/py3/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2020 Benjamin Peterson
+Copyright (c) 2010-2024 Benjamin Peterson
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff --git a/contrib/python/six/py3/README.rst b/contrib/python/six/py3/README.rst
index 6339ba5d93..3674bc956e 100644
--- a/contrib/python/six/py3/README.rst
+++ b/contrib/python/six/py3/README.rst
@@ -2,10 +2,6 @@
:target: https://pypi.org/project/six/
:alt: six on PyPI
-.. image:: https://travis-ci.org/benjaminp/six.svg?branch=master
- :target: https://travis-ci.org/benjaminp/six
- :alt: six on TravisCI
-
.. image:: https://readthedocs.org/projects/six/badge/?version=latest
:target: https://six.readthedocs.io/
:alt: six's documentation on Read the Docs
diff --git a/contrib/python/six/py3/six.py b/contrib/python/six/py3/six.py
index 4cba03c75f..29b5da2249 100644
--- a/contrib/python/six/py3/six.py
+++ b/contrib/python/six/py3/six.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2010-2020 Benjamin Peterson
+# Copyright (c) 2010-2024 Benjamin Peterson
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -29,7 +29,7 @@ import sys
import types
__author__ = "Benjamin Peterson <benjamin@python.org>"
-__version__ = "1.16.0"
+__version__ = "1.17.0"
# Useful for very coarse version differentiation.
@@ -263,7 +263,7 @@ _moved_attributes = [
MovedAttribute("reduce", "__builtin__", "functools"),
MovedAttribute("shlex_quote", "pipes", "shlex", "quote"),
MovedAttribute("StringIO", "StringIO", "io"),
- MovedAttribute("UserDict", "UserDict", "collections"),
+ MovedAttribute("UserDict", "UserDict", "collections", "IterableUserDict", "UserDict"),
MovedAttribute("UserList", "UserList", "collections"),
MovedAttribute("UserString", "UserString", "collections"),
MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
@@ -435,12 +435,17 @@ _urllib_request_moved_attributes = [
MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"),
MovedAttribute("urlretrieve", "urllib", "urllib.request"),
MovedAttribute("urlcleanup", "urllib", "urllib.request"),
- MovedAttribute("URLopener", "urllib", "urllib.request"),
- MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
MovedAttribute("proxy_bypass", "urllib", "urllib.request"),
MovedAttribute("parse_http_list", "urllib2", "urllib.request"),
MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"),
]
+if sys.version_info[:2] < (3, 14):
+ _urllib_request_moved_attributes.extend(
+ [
+ MovedAttribute("URLopener", "urllib", "urllib.request"),
+ MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
+ ]
+ )
for attr in _urllib_request_moved_attributes:
setattr(Module_six_moves_urllib_request, attr.name, attr)
del attr
diff --git a/contrib/python/six/py3/ya.make b/contrib/python/six/py3/ya.make
index ca5870c634..077c2a4153 100644
--- a/contrib/python/six/py3/ya.make
+++ b/contrib/python/six/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(1.16.0)
+VERSION(1.17.0)
LICENSE(MIT)
diff --git a/contrib/python/types-protobuf/.dist-info/METADATA b/contrib/python/types-protobuf/.dist-info/METADATA
index ed5007793c..2d60622cee 100644
--- a/contrib/python/types-protobuf/.dist-info/METADATA
+++ b/contrib/python/types-protobuf/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: types-protobuf
-Version: 5.28.3.20241203
+Version: 5.29.1.20241207
Summary: Typing stubs for protobuf
Home-page: https://github.com/python/typeshed
License: Apache-2.0
@@ -26,9 +26,9 @@ It can be used by type-checking tools like
[Pyre](https://pyre-check.org/),
PyCharm, etc. to check code that uses `protobuf`. This version of
`types-protobuf` aims to provide accurate annotations for
-`protobuf~=5.28.3`.
+`protobuf~=5.29.1`.
-Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 27.2 on [protobuf v28.3](https://github.com/protocolbuffers/protobuf/releases/tag/v28.3) (python `protobuf==5.28.3`).
+Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 28.1 on [protobuf v29.1](https://github.com/protocolbuffers/protobuf/releases/tag/v29.1) (python `protobuf==5.29.1`).
This stub package is marked as [partial](https://peps.python.org/pep-0561/#partial-stub-packages).
If you find that annotations are missing, feel free to contribute and help complete them.
@@ -46,4 +46,4 @@ mypy 1.13.0,
pyright 1.1.389,
and pytype 2024.10.11.
It was generated from typeshed commit
-[`f7c6acde6e1718b5f8748815200e95ef05d96d32`](https://github.com/python/typeshed/commit/f7c6acde6e1718b5f8748815200e95ef05d96d32).
+[`0e9c9e1362959512a880abbf1275471b0d76924f`](https://github.com/python/typeshed/commit/0e9c9e1362959512a880abbf1275471b0d76924f).
diff --git a/contrib/python/types-protobuf/README.md b/contrib/python/types-protobuf/README.md
index 8918d05f8e..ba94ec673a 100644
--- a/contrib/python/types-protobuf/README.md
+++ b/contrib/python/types-protobuf/README.md
@@ -9,9 +9,9 @@ It can be used by type-checking tools like
[Pyre](https://pyre-check.org/),
PyCharm, etc. to check code that uses `protobuf`. This version of
`types-protobuf` aims to provide accurate annotations for
-`protobuf~=5.28.3`.
+`protobuf~=5.29.1`.
-Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 27.2 on [protobuf v28.3](https://github.com/protocolbuffers/protobuf/releases/tag/v28.3) (python `protobuf==5.28.3`).
+Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 28.1 on [protobuf v29.1](https://github.com/protocolbuffers/protobuf/releases/tag/v29.1) (python `protobuf==5.29.1`).
This stub package is marked as [partial](https://peps.python.org/pep-0561/#partial-stub-packages).
If you find that annotations are missing, feel free to contribute and help complete them.
@@ -29,4 +29,4 @@ mypy 1.13.0,
pyright 1.1.389,
and pytype 2024.10.11.
It was generated from typeshed commit
-[`f7c6acde6e1718b5f8748815200e95ef05d96d32`](https://github.com/python/typeshed/commit/f7c6acde6e1718b5f8748815200e95ef05d96d32). \ No newline at end of file
+[`0e9c9e1362959512a880abbf1275471b0d76924f`](https://github.com/python/typeshed/commit/0e9c9e1362959512a880abbf1275471b0d76924f). \ No newline at end of file
diff --git a/contrib/python/types-protobuf/google-stubs/METADATA.toml b/contrib/python/types-protobuf/google-stubs/METADATA.toml
index 8349e2ea04..04c674e5fb 100644
--- a/contrib/python/types-protobuf/google-stubs/METADATA.toml
+++ b/contrib/python/types-protobuf/google-stubs/METADATA.toml
@@ -1,7 +1,7 @@
# Using an exact number in the specifier for scripts/sync_protobuf/google_protobuf.py
-version = "~=5.28.3"
+version = "~=5.29.1"
upstream_repository = "https://github.com/protocolbuffers/protobuf"
-extra_description = "Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 27.2 on [protobuf v28.3](https://github.com/protocolbuffers/protobuf/releases/tag/v28.3) (python `protobuf==5.28.3`)."
+extra_description = "Partially generated using [mypy-protobuf==3.6.0](https://github.com/nipunn1313/mypy-protobuf/tree/v3.6.0) and libprotoc 28.1 on [protobuf v29.1](https://github.com/protocolbuffers/protobuf/releases/tag/v29.1) (python `protobuf==5.29.1`)."
partial_stub = true
[tool.stubtest]
diff --git a/contrib/python/types-protobuf/ya.make b/contrib/python/types-protobuf/ya.make
index bd30a270ca..d583cb9a7c 100644
--- a/contrib/python/types-protobuf/ya.make
+++ b/contrib/python/types-protobuf/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(5.28.3.20241203)
+VERSION(5.29.1.20241207)
LICENSE(Apache-2.0)
diff --git a/contrib/python/ydb/py3/.dist-info/METADATA b/contrib/python/ydb/py3/.dist-info/METADATA
index 756e15d29a..8e8b79f6ab 100644
--- a/contrib/python/ydb/py3/.dist-info/METADATA
+++ b/contrib/python/ydb/py3/.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ydb
-Version: 3.18.10
+Version: 3.18.11
Summary: YDB Python SDK
Home-page: http://github.com/ydb-platform/ydb-python-sdk
Author: Yandex LLC
diff --git a/contrib/python/ydb/py3/ya.make b/contrib/python/ydb/py3/ya.make
index a643d0b0b4..284cfb73d0 100644
--- a/contrib/python/ydb/py3/ya.make
+++ b/contrib/python/ydb/py3/ya.make
@@ -2,7 +2,7 @@
PY3_LIBRARY()
-VERSION(3.18.10)
+VERSION(3.18.11)
LICENSE(Apache-2.0)
diff --git a/contrib/python/ydb/py3/ydb/_topic_writer/topic_writer_asyncio.py b/contrib/python/ydb/py3/ydb/_topic_writer/topic_writer_asyncio.py
index c7f88a42a3..d759072c22 100644
--- a/contrib/python/ydb/py3/ydb/_topic_writer/topic_writer_asyncio.py
+++ b/contrib/python/ydb/py3/ydb/_topic_writer/topic_writer_asyncio.py
@@ -307,7 +307,7 @@ class WriterAsyncIOReconnector:
def _prepare_internal_messages(self, messages: List[PublicMessage]) -> List[InternalMessage]:
if self._settings.auto_created_at:
- now = datetime.datetime.now()
+ now = datetime.datetime.now(datetime.timezone.utc)
else:
now = None
diff --git a/contrib/python/ydb/py3/ydb/ydb_version.py b/contrib/python/ydb/py3/ydb/ydb_version.py
index 6d13618e64..c51c9d45d8 100644
--- a/contrib/python/ydb/py3/ydb/ydb_version.py
+++ b/contrib/python/ydb/py3/ydb/ydb_version.py
@@ -1 +1 @@
-VERSION = "3.18.10"
+VERSION = "3.18.11"