diff options
author | Alexander Smirnov <alex@ydb.tech> | 2024-12-24 15:46:17 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2024-12-24 15:46:17 +0000 |
commit | c7decaf9230ddcb1ec2c42d1f50fb3998166c4ef (patch) | |
tree | 4efde4e4276bb0f24c314909403a1f6ed94c60d7 /contrib/python | |
parent | cf344b64297e6a79d1e538be9f8f59afb06a2a97 (diff) | |
parent | b821606f7bd364dc755d37b5bcb3559130675364 (diff) | |
download | ydb-c7decaf9230ddcb1ec2c42d1f50fb3998166c4ef.tar.gz |
Merge branch 'rightlib' into merge-libs-241224-1545
Diffstat (limited to 'contrib/python')
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" |