Commit Graph

29405 Commits

Author SHA1 Message Date
Stan Ulbrych 08e331d05e
PR 132638 typo fix (#132785)
Update remote_debugging.rst
2025-04-21 20:33:19 +00:00
ivonastojanovic 2b1dac6039
gh-131591: Add remote debugging attachment protocol documentation (#132638)
Add a developer-facing document describing the protocol used by
remote_exec(pid, script) to execute Python code in a running process.
This is intended to guide debugger and tool authors in reimplementing
the protocol.

Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
2025-04-21 20:18:24 +00:00
Peter Bierma 8dfa840773
gh-127604: Add C stack dumps to `faulthandler` (#128159) 2025-04-21 20:48:02 +01:00
Steve Dower 09b624b80f
gh-132639: Adds PyLong_AsNativeBytes, PyLong_FromNativeBytes and PyLong_FromUnsignedNativeBytes to the limited API (GH-132640) 2025-04-21 15:59:03 +01:00
Саша Черных 132b6bc98f
gh-132054: Add ``application/yaml`` to ``mimetypes`` (#132056)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-04-21 12:05:37 +03:00
Adam Turner fee808936f
gh-85583: Add an overview of formatted string literals (f-strings) to ``str`` (#132689) 2025-04-21 07:49:06 +00:00
Stan Ulbrych a16586c9e7
gh-129327: revise hashlib documentation to account for FIPS removing sha1 (GH-132729)
* gh-129327: revise hashlib documentation to account for FIPS removing sha1

More generally, the current documentation is a bit scattered, talking
about what terms are "equal" despite those terms not being very
interesting and given the term "secure hash", probably wrong (because
md5 and sha1 are not secure anymore).

Let's talk about cryptographically secure instead, and note that two of
them aren't. And then we can also link to the source for NIST going
through the removal process for SHA1.

* Add Gregors Suggestion

* Clean up

---------

Co-authored-by: Eli Schwartz <eschwartz@gentoo.org>
2025-04-20 01:06:24 +00:00
Tomas R. 71da68d588
gh-131952: Add colour to the ``json`` module CLI (#132126)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-04-19 18:11:21 +00:00
Stan Ulbrych e154e4db36
Docs: Fix REPL example in `Doc/library/shutil.rst` (#132700) 2025-04-19 16:15:00 +02:00
Bénédikt Tran 8a9c6c4d16
gh-128398: improve error messages when incorrectly using `with` and `async with` (#132218)
Improve the error message with a suggestion when an object supporting the synchronous
(resp. asynchronous) context manager protocol is entered using `async with` (resp. `with`)
instead of `with` (resp. `async with`).
2025-04-19 10:44:01 +02:00
Jeroen Bogers ce31ae5209
gh-129719: Restore missing `socket.CAN_RAW_ERR_FILTER` on Linux (#129721)
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
2025-04-18 22:59:37 +03:00
Raymond Hettinger 741c6386b8
Minor doc edit: Make multinomial() the first math example (gh-132697) 2025-04-18 12:41:13 -05:00
Pablo Galindo Salgado d134bd272f
gh-130861: Add clarification to the perf docs on optimization levels (#131098) 2025-04-18 14:42:20 +01:00
Yuki Kobayashi 7e2672cfcf
gh-132668: Remove outdated description of `POP_JUMP_*` instructions (#132669) 2025-04-18 14:08:50 +02:00
Jon Crall fc0ec29889
gh-103997: Automatically dedent the argument to "-c" (#103998)
Co-authored-by: sunmy2019 <59365878+sunmy2019@users.noreply.github.com>
Co-authored-by: Kirill Podoprigora <80244920+Eclips4@users.noreply.github.com>
Co-authored-by: Inada Naoki <songofacandy@gmail.com>
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-18 17:39:30 +09:00
Ee Durbin 1d529cbc89
Docs: Migrate entirely to PSF hosted plausible for analytics (#132648) 2025-04-17 22:42:40 +03:00
Tomasz Pytel a23ed8b379
gh-132284: Don't wrap base PyCFunction slots on class creation if not overridden (#132329) 2025-04-17 18:08:59 +01:00
Neil Schemenauer c6973eea13
Add Doc section in free-threaded extension howto for critical sections (GH-132531) 2025-04-16 12:43:01 -07:00
Tan90909090 f5512a2498
gh-132608: Fix a sample code coloring for ast.While (#132609)
Add missing '>' in prompt.
2025-04-16 19:23:13 +00:00
Jelle Zijlstra 14efcadfd4
typing docs: Clarify Protocol / runtime_checkable docs (#132606)
- Explicitly say that isinstance/issubclass do not work on non-runtime checkable
  protocols.
- Move the sentence "This raises TypeError when applied to a non-protocol class". It
  took me quite some time to decide what "this" was here: it refers to applying the
  decorator, not to an isinstance() call.

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2025-04-16 17:44:17 +00:00
Serhiy Storchaka 62ff86fa55
gh-130104: Call __rpow__ in ternary pow() if necessary (GH-130251)
Previously it was only called in binary pow() and the binary
power operator.
2025-04-16 18:32:41 +03:00
Serhiy Storchaka 8cb177d09b
gh-132099: Accept an integer as the address for BTPROTO_HCI on Linux (GH-132525)
Previously only an integer packed in a tuple was accepted, while
getsockname() could return a raw integer.
Now the result of getsockname() is always acceptable as an address.
2025-04-16 13:02:51 +03:00
Adam Turner 4f10b93d1b
Docs: Synchronise ``indexsidebar.html`` with docsbuild-scripts (#132567) 2025-04-15 23:27:01 +01:00
Jelle Zijlstra 11f6603845
gh-132491: Rename annotationlib.value_to_string to type_repr (#132492) 2025-04-15 20:10:53 +00:00
Raymond Hettinger 818b6a9ead
Fix argument order in multinomial() example (gh-132557) 2025-04-15 11:50:52 -05:00
Barney Gale 0879ebc953
GH-123599: Match `file:` URL hostname against machine hostname in urllib (#132523)
In `_is_local_authority()`, return early if the authority matches the
machine hostname from `socket.gethostname()`, rather than resolving the
names and matching IP addresses.
2025-04-15 01:05:06 +01:00
Serhiy Storchaka 61638418a7
gh-70145: Add support for channels in Bluetooth HCI protocol (GH-132481) 2025-04-14 20:09:16 +03:00
Semyon Moroz bd47ec954d
gh-131885: Document `/` for `codecs` functions (#131992) 2025-04-14 18:55:29 +02:00
Jeremy Fleischman 939476bbbb
gh-131803: Clarify that you must register signal handlers for set_wakeup_fd (#131859) 2025-04-14 18:46:11 +02:00
RUANG (James Roy) 8768df2fe9
gh-46236: Add missing PyUnicode_FromOrdinal() doc (#132040) 2025-04-14 18:40:39 +02:00
Yongzi Li 4865c09cf3
Docs: fix some typos in `Doc/library` (#132511) 2025-04-14 13:24:46 +00:00
Serhiy Storchaka 1fc1df8dcc
gh-132099: Harmonize Bluetooth address handling (GH-132486)
Now all protocols always accept the Bluetooth address as string and
getsockname() always returns the Bluetooth address as string.

* BTPROTO_SCO now accepts not only bytes, but str.
* BTPROTO_SCO now checks address for embedded null.
* On *BSD, BTPROTO_HCI now accepts str instead of bytes.
* On FreeBSD, getsockname() for BTPROTO_HCI now returns str instead of bytes.
* On NetBSD and DragonFly BDS, BTPROTO_HCI now checks address for embedded null.
2025-04-14 08:58:56 +03:00
Barney Gale ccad61e35d
GH-125866: Support complete "file:" URLs in urllib (#132378)
Add optional *add_scheme* argument to `urllib.request.pathname2url()`; when
set to true, a complete URL is returned. Likewise add optional
*require_scheme* argument to `url2pathname()`; when set to true, a complete
URL is accepted.

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-14 01:49:02 +01:00
Jelle Zijlstra 4d3ad0467e
gh-132064: Make annotationlib use __annotate__ if only it is present (#132195) 2025-04-13 16:32:44 -07:00
Robin Jadoul 2666a06d33
GH-115322: Add missing audit hooks (GH-115624)
Add extra audit hooks to catch C function calling from ctypes,
reading/writing files through readline and executing external
programs through _posixsubprocess.

* Make audit-tests for open pass when readline.append_history_file is unavailable
* Less direct testing of _posixsubprocess for audit hooks
* Also remove the audit hook from call_cdeclfunction now that _ctypes_callproc does it instead.
* reword the NEWS entry.
* mention readline in NEWS
* add versionchanged markers
* fix audit_events.rst versionadded
* doc lint

---------

Co-authored-by: Gregory P. Smith <greg@krypto.org>
2025-04-13 21:46:20 +00:00
Kumar Aditya ce753517a8
gh-86513: improve docs of loop.call_exception_handler (#132466) 2025-04-13 21:39:24 +00:00
Yuki Kobayashi fc7e4e7bbd
gh-101100: Fix sphinx warnings in `library/plistlib.rst` (#132422) 2025-04-13 18:35:26 +00:00
Tapeline 281fc338fd
gh-132111: Document dataclasses.InitVar (#132446) 2025-04-13 12:47:44 -04:00
Serhiy Storchaka 1d97488c95
gh-132099: Fix documentation for the BTPROTO_HCI protocol (GH-132118) 2025-04-13 18:39:22 +03:00
Case Zumbrum 00cf5eacc5
gh-129169: update `asyncio.ensure_future` docs to suggest taskgroups
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
2025-04-13 07:59:22 +00:00
Charles Machalow 5863cd70b8
gh-132106: Ensure that running `logging.handlers.QueueListener` cannot be started again (GH-132444)
Prevents a thread leak
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-13 08:53:13 +01:00
Felix Scherz 64b066ad29
gh-132354: document return value for `asyncio.Task.cancel` (#132374) 2025-04-13 13:05:44 +05:30
Yongzi Li f69b344e09
Fix a typo in c-api/typeobj.rst (#132317) 2025-04-13 07:18:58 +00:00
Yongzi Li 03b18e0d8c
Docs: Fix a typo in `Doc/c-api/unicode.rst` (#132318) 2025-04-13 07:16:59 +00:00
da-woods 1e5798e372
Docs: Fix specifications of `gcvisitobjects_t` (#132433)
`gcvisitobjects_t` callbacks should return 1 for the iteration to continue instead of 0.
2025-04-12 17:36:02 +02:00
Charles Machalow 517e96b9ed
gh-132106: Allow `logging.handlers.QueueListener` to be used as a context manager (#132107) 2025-04-12 12:00:04 +00:00
Stan Ulbrych ad3bbe8fbc
gh-123441: Update Belorussian spelling (GH-132409) 2025-04-12 13:36:01 +03:00
Kumar Aditya 05d27a84f4
gh-130322: drop deprecation of `asyncio.set_event_loop` (#132349) 2025-04-12 12:03:52 +05:30
Serhiy Storchaka e5f8b2c703
gh-85302: Add support for BTPROTO_SCO on FreeBSD (GH-131981)
BTPROTO_SCO has been supported on FreeBSD since 2008.
2025-04-11 19:38:17 +03:00
Xuehai Pan 26ae05e95c
gh-127405: Add ABIFLAGS to sysconfig variables on Windows (GH-131799) 2025-04-11 16:19:03 +01:00
Bénédikt Tran 9ded6f0830
gh-111178: fix incorrect function signatures in docs (#132395)
Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com>
2025-04-11 14:59:38 +00:00
Jelle Zijlstra 07b8d3117f
gh-132261: Store annotations at hidden internal keys in the class dict (#132345) 2025-04-10 21:13:26 -07:00
Barney Gale 66cdb2bd8a
GH-123599: `url2pathname()`: handle authority section in file URL (#126844)
In `urllib.request.url2pathname()`, if the authority resolves to the
current host, discard it. If an authority is present but resolves somewhere
else, then on Windows we return a UNC path (as before), and on other
platforms we raise `URLError`.

Affects `pathlib.Path.from_uri()` in the same way.

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-10 19:58:04 +00:00
Serhiy Storchaka 1557da622c
gh-106482: Clarify documentation of character set in RE (#106517)
Co-authored-by: Martin Panter <vadmium@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-04-10 16:41:41 +03:00
Jiayu Yi 5fbe23ee4e
Fix example code in curses tutorial (#126446) 2025-04-10 15:06:38 +03:00
Liam DeVoe 4a88bbacb3
Docs: Add a missing trailing full stop (#130561) 2025-04-10 14:51:20 +03:00
180909 65357032e8
gh-72631: Fix wrong documentation for GzipFile.peek (#29820)
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Co-authored-by: Erlend E. Aasland <erlend@python.org>
2025-04-10 14:21:32 +03:00
Jo 5f1aed1c7e
docs: Fix typo in context_aware_warnings flag (#132340) 2025-04-10 05:19:01 +01:00
Adam Turner e329f74e7d
GH-132330: Synchronise ``Doc/includes/typestruct.h`` with ``PyTypeObject`` (#132332) 2025-04-10 01:51:56 +01:00
Neil Schemenauer d687900f98
gh-128384: Use a context variable for warnings.catch_warnings (gh-130010)
Make `warnings.catch_warnings()` use a context variable for holding
the warning filtering state if the `sys.flags.context_aware_warnings`
flag is set to true.  This makes using the context manager thread-safe in
multi-threaded programs.

Add the `sys.flags.thread_inherit_context` flag.  If true, starting a new
thread with `threading.Thread` will use a copy of the context
from the caller of `Thread.start()`.

Both these flags are set to true by default for the free-threaded build
and false for the default build.

Move the Python implementation of warnings.py into _py_warnings.py.

Make _contextvars a builtin module.

Co-authored-by: Kumar Aditya <kumaraditya@python.org>
2025-04-09 16:18:54 -07:00
h-vetinari 67ded6a4fa
update comment about LLVM bug relevant for `--with-tail-call-interp` performance (#132297) 2025-04-09 22:50:38 +08:00
Serhiy Storchaka f5f1ac84b3
gh-112068: C API: Add support of nullable arguments in PyArg_Parse (GH-121303) 2025-04-08 22:08:00 +03:00
Cody Maloney 8421b648e9
gh-132246: Add PEP 688 to C Buffer Protocol docs (#132249) 2025-04-08 10:43:27 -07:00
Tian Gao efd8aca62c
gh-106670: Fix a typo in doc of pdb's exceptions command (#132277) 2025-04-08 12:19:16 -04:00
Hugo van Kemenade c5e856a5dc Merge branch 'main' of https://github.com/python/cpython 2025-04-08 17:08:21 +03:00
Serhiy Storchaka 0e4cf9ce7c
gh-50333: Deprecate support of non-tuple sequences in PyArg_ParseTuple() (GH-128374)
Non-tuple sequences are deprecated as argument for the "(items)" format unit
in PyArg_ParseTuple() and other argument parsing functions if items contains
format units which store borrowed buffer or reference (e.g. "s" and "O").

str and bytearray are no longer accepted as valid sequences.
2025-04-08 14:26:32 +03:00
Hugo van Kemenade 29af6cee02 Python 3.14.0a7 2025-04-08 14:20:51 +03:00
Bénédikt Tran 3eda146035
gh-74598: add `fnmatch.filterfalse` for excluding names matching a patern (#121185) 2025-04-08 10:11:25 +00:00
David Brochart 297e05932d
Fixed a typo in the documentation (#132005) 2025-04-08 11:43:11 +03:00
Srinivas Reddy Thatiparthy (తాటిపర్తి శ్రీనివాస్ రెడ్డి) 403886c28d
gh-132021: Add bool type to the list of allowed JSON key types (#132048)
Co-authored-by: Eric V. Smith <ericvsmith@users.noreply.github.com>
2025-04-08 11:25:46 +03:00
sobolevn f7305a06c7
gh-115942: Add `locked` to several multiprocessing locks (#115944)
Co-authored-by: mpage <mpage@cs.stanford.edu>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-04-08 11:14:12 +03:00
Ee Durbin 40844164b1
Add psfhosted Plausible instance to analytics (#132252) 2025-04-08 10:37:42 +03:00
Stan Ulbrych f5639d87f5
gh-130521: Add Open Graph meta tags to template pages (#130523)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-04-07 21:58:50 +01:00
Adam Turner f0dcb29d3a
gh-118761: Cover the import time optimisations in What's New (#132035)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-07 17:27:54 +00:00
Bénédikt Tran fd1b98dd1d
gh-130843: add UUIDv7 timestamp recipes (#132154)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-04-07 17:21:56 +02:00
Hugo van Kemenade ce724571b3
Docs HTML: Remove self-closing tags (#132220)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2025-04-07 18:21:13 +03:00
sobolevn 8b62374b34
gh-132221: Fix `__match_args__` generation docs in `dataclasses.rst` (#132222) 2025-04-07 17:46:47 +03:00
Hugo van Kemenade e80ed2cf75
gh-123299: List PEPs 758 and 768 in 3.14 release highlights (#132211) 2025-04-07 15:09:46 +01:00
Prometheus3375 316974382a
gh-131912: Use different grouping options for the integral and fractional parts (#132170) 2025-04-07 14:02:49 +02:00
Sergey B Kirpichev 6eaa4aeef2
Docs: Add a single table summary for ``cmath`` (#131887)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
2025-04-07 00:36:21 +01:00
Brian Schubert e2476398ee
gh-132168: Add `__class_getitem__` to `ctypes.py_object` (#132169) 2025-04-06 22:05:19 +01:00
Emma Smith 0788948dcb
gh-84481: Add ZipFile.data_offset attribute (#132165)
* Add ZipFile.data_offset attribute

This attribute provides the offset to zip data from the start of the file, when available.

* Add blurb-it

* Try fixing class ref in NEWS
2025-04-06 13:51:42 -07:00
Alex Waygood 42e3a8410b
gh-132139: 3.14 what's new: elaborate on why you can no longer set `Union` attributes (#132157) 2025-04-06 17:51:05 +02:00
Jelle Zijlstra dbfc6a417a
gh-132139: Document that you can no longer set attributes on unions (#132146) 2025-04-06 13:43:09 +01:00
Rafael Fontenelle 376631829a
Fix numbered list syntax in programming.rst (#130158) 2025-04-05 20:20:21 +01:00
Adam Turner 561965fa5c
Generate social media preview cards for the documentation (#132101)
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
2025-04-05 14:20:06 +00:00
Semyon Moroz 37bc3865c8
gh-85162: Add `HTTPSServer` to `http.server` to serve files over HTTPS (#129607)
The `http.server` module now supports serving over HTTPS using the `http.server.HTTPSServer` class.
This functionality is also exposed by the command-line interface (`python -m http.server`) through the
`--tls-cert`, `--tls-key` and `--tls-password-file` options.
2025-04-05 08:49:48 +00:00
Yuki Kobayashi 99e9798d61
Docs: document `plistlib.InvalidFileException` (#132069) 2025-04-05 08:46:17 +00:00
Prometheus3375 06a110f522
gh-131912: Improve description of grouping options in the format specification docs (#132030)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-05 10:28:50 +02:00
Jelle Zijlstra ac14d4a23f
gh-129463, gh-128593: Simplify ForwardRef (#129465) 2025-04-05 04:36:34 +00:00
Jelle Zijlstra 7473c600a5
gh-131933: Document UnionType/Union merger in What's New (#131941)
Co-authored-by: Alex Waygood
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-04-04 11:15:31 -07:00
Bénédikt Tran 0a97427ee5
gh-99108: Implement HACL* HMAC (#130157)
A new extension module, `_hmac`, now exposes the HACL* HMAC (formally verified) implementation.

The HACL* implementation is used as a fallback implementation when the OpenSSL implementation of HMAC
is not available or disabled. For now, only named hash algorithms are recognized and SIMD support provided
by HACL* for the BLAKE2 hash functions is not yet used.
2025-04-04 19:04:00 +02:00
Jelle Zijlstra 5518c2ae09
gh-128661: Remove DeprecationWarning in evaluate_forward_ref (#128930)
It doesn't make sense to use a deprecation for evaluate_forward_ref,
as it is a new function in Python 3.14 and doesn't have compatibility
guarantees.

I considered making it throw an error if type_params it not passed and
there is no owner. However, I think this is too unfriendly for users. The
case where this param is really needed is fairly esoteric and I don't think
this case is worth the pain of forcing users to write "type_params=()".
2025-04-03 09:52:17 -07:00
Pablo Galindo Salgado 943cc1431e
gh-131591: Implement PEP 768 (#131937)
Co-authored-by: Ivona Stojanovic <stojanovic.i@hotmail.com>
Co-authored-by: Matt Wozniski <godlygeek@gmail.com>
2025-04-03 16:20:01 +01:00
Tian Gao 6bd9689426
gh-60115: Support frozen modules for linecache.getline() (#131638) 2025-04-02 19:50:01 -04:00
Donghee Na 25275bda79
gh-131544: Update docs for PyType_AddWatcher (gh-132015) 2025-04-02 15:04:07 +00:00
Pablo Galindo Salgado c2ac662f28
gh-131831: Implement PEP 758 – Allow except and except* expressions without parentheses (#131833) 2025-04-01 19:04:56 +00:00
mpage 053c285f6b
gh-130704: Strength reduce `LOAD_FAST{_LOAD_FAST}` (#130708)
Optimize `LOAD_FAST` opcodes into faster versions that load borrowed references onto the operand stack when we can prove that the lifetime of the local outlives the lifetime of the temporary that is loaded onto the stack.
2025-04-01 10:18:42 -07:00
Rafael Fontenelle 23a658b9af
Minor improvements to the programming FAQ (#127261)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-04-01 08:19:06 +01:00
Sergey B Kirpichev 2505573f20
gh-121249: Note struct module changes in What's New (#131867)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-04-01 07:16:36 +00:00