* Compose native text signatures at compile time from FromArgs
FromArgs gains a PARAMS const describing its Python parameters.
The derive builds the whole internal doc, `name(sig)\n--\n\ndoc`,
in a const context from those params, and `__text_signature__` /
`__doc__` parse it from the doc. The macro-time string path and the
runtime sig_parts composition are removed.
Signatures follow clinic conventions: `$module` for module functions,
Rust literal defaults rendered as Python reprs, other defaults as
`<unrepresentable>`, and a new `#[pyarg(py_default = "...")]` for the
few fields whose Rust default differs from the Python one. The
`#[pyarg]` keys are documented on the FromArgs derive.
Module functions keep their module object and return it from
`__self__`. PyNativeFunction now traverses its references.
os.stat, os.mkdir, os.listdir, os.open, dict.fromkeys, round, sorted,
int.to_bytes and bytes.hex take arguments matching their signatures.
Assisted-by: Grok:grok-4.7
Assisted-by: Claude:claude-opus-5-5
* Update builtin_signature snippet and fix mkdir on Windows
round and sum now report their FromArgs parameters, so the snippet
asserts their signatures instead of their absence. sum's start is a
PyObjectRef defaulting to int 0 with py_default "0". mkdir reads
dir_fd only on platforms that use it.
Assisted-by: Claude:claude-opus-5-5
* Remove expectedFailure from two signature tests
test_cmp_to_signature and test_autospec_on_bound_builtin_function
now pass. The TestCmpToKeyC override existed only for the marker.
Assisted-by: Claude:claude-opus-5-5
* Implement _collections.OrderedDict
Extracted from #6799: native OrderedDict as a dict subclass,
iterator mutation tracking, and mapping-view set operations.
* Add OrderedDict, warnings source lines, and socket sendmsg
Implement _collections.OrderedDict as a dict subclass with a
linked list of insertion-order nodes.
Pack struct F/D as native float/double complex pairs, and report
unexpected __replace__ field names as a list repr.
Register encodings.latin_1 at startup. Reject NUL in input()
prompts. Copy non-exact type dicts in mapping order.
Fetch warning source lines through _bless_my_loader and unicode
splitlines. Keep the last warnings.filters list after deletion.
Snapshot sendmsg sequences before converting buffers, parse
ancillary ints with __index__, and dispatch AF_CAN by protocol.
Store sys.trace and sys.profile on each ThreadSlot so
_settraceallthreads/_setprofileallthreads are visible to
sys.gettrace/getprofile on other threads.
Use <frozen importlib._bootstrap> as frozen importlib
co_filename. Keep HEAPTYPE socket objects GC-tracked.
Assisted-by: Grok:grok-4.6
* Load marshal via readinto and dump sets in dumps order
marshal.load fills a scratch buffer with readinto on a
contiguous writable memoryview, and rejects a returned length
other than the requested size.
set and frozenset dumps write elements in sorted(v,
key=marshal.dumps) order.
Assisted-by: Grok:grok-4.6
* Add classmethod_descriptor and ABC IS_ABSTRACT flags
Give METH_CLASS methods a distinct classmethod_descriptor type.
Store Py_TPFLAGS_IS_ABSTRACT from __abstractmethods__ and look
up that attribute only in the type's own dict.
Expose defaultdict.default_factory as a member descriptor.
Inherit bool's unused number slots from int. Mark set and
frozenset __contains__ as METH_COEXIST.
Parse classmethod, staticmethod, object.__new__, and heap type
text signatures. Register interactive source in linecache.
Assisted-by: Grok:grok-4.6
* address review: odict reuse, descr call, new wrapper
Reuse odict node slots and walk the live list in next_after.
Require both | operands to be dicts. Drop the odict iterator
on GC clear. Bind classmethod descriptors through descr_get
and update IS_ABSTRACT under the type lock. Give odict keys
and items sq_contains. Walk tp_new_wrapper past new_wrapper
so HEAPTYPE socket subclasses can call socket.__new__.
Split FreeBSD Bluetooth protocol constants from Linux values.
Assisted-by: Grok:grok-4.6
* Represent chflags bits with bitflagset
Assisted-by: Grok:grok-4.6
* Represent access and mode bits with bitflagset
Assisted-by: Grok:grok-4.6
* Continue unfinished REPL suites as incomplete input
Assisted-by: Grok:grok-4.6
* Add pickle and os.stat inspect signatures
Give _pickle.Pickler the clinic constructor text signature and
accept fix_imports and buffer_callback as positional-or-keyword.
Allow #[pyfunction(text_signature)] and use it so os.stat reports
(path, *, dir_fd=None, follow_symlinks=True). Uncomment import
_pickle and drop the pickle inspect expectedFailures.
Assisted-by: Grok:grok-4.6
* Add Unpickler, dump/load, and lstat signatures
Give _pickle Unpickler, dump, dumps, load, and loads clinic
text signatures, and os.lstat (path, *, dir_fd=None).
Assisted-by: Grok:grok-4.6
* Complete OrderedDict with insertion-order links
Move the native OrderedDict into ordered_dict.rs and track order
with a linked list of nodes, keeping mapping-view set operations.
Assisted-by: Grok:grok-4.6
* address CI: stat casts, HCI_DATA_DIR, passing xfails
Compare stat permission bits as Mode so Linux clippy does not
flag a u32-to-u32 cast. Export HCI_DATA_DIR with the Bluetooth
socket option values. Drop expectedFailure from tests that now
pass.
Assisted-by: Grok:grok-4.6
* Fix wasm teardown deadlock and bluetooth constants
Assisted-by: Grok:grok-4.6
* Clear process-wide eval breaker bits in STW test
Assisted-by: Grok:grok-4.6
* Drop exclusive-held panic that tripped wasm clippy
Assisted-by: Grok:grok-4.6
* Fix OrderedDict contains and export Windows BDADDR
Assisted-by: Grok:grok-4.6
* Add cmp_to_key and hash-once LRU cache
_functools.cmp_to_key now returns KeyWrapper. LRU lookups store the
key hash on _lru_list_elem so __hash__ is not called again on hits
or eviction.
Assisted-by: Grok:grok-4.6
* Allow subclass keywords on list, tuple, and float
list.__init__ rejects keywords only when tp_new is still list's.
tuple/float.__new__ reject them only when tp_init is still the base's.
Assisted-by: Grok:grok-4.6
* Fix CI lint, test re-export, and structseq members
Drop the duplicate clear_eval_breaker_for_test re-export.
Format structseq imports. Expose struct sequence fields as
readonly members so assignment raises "readonly attribute".
Assisted-by: Grok:grok-4.6
* Allow subclass keywords on itertools and filter
Positional-only constructors ignore extra keywords when a subclass
has replaced tp_init, matching list/tuple/float.
Assisted-by: Grok:grok-4.6
* Remove text_signature derive parameter
Drop the string override on #[pyfunction] and #[pyclass]. Signatures
are generated from the Rust parameter list only. Restore inspect
expectedFailures that depended on the override.
Assisted-by: Grok:grok-4.6
* Rename set contains_method to __contains__
Keep a borrowed contains helper for slots and C-API. The coexist
pymethod is named __contains__.
Assisted-by: Grok:grok-4.6
* Use MonitoringEvent instead of EVENT_* aliases
Drop the unused MonitoringEvents bitflags and the EVENT_PY_START
style mask constants. Call sites use the enum and .mask().
Assisted-by: Grok:grok-4.6
* Store warnings filters as PyListRef
The list already serializes its elements. Drop the extra mutex around
the cached list pointer.
Assisted-by: Grok:grok-4.6
* Re-export clear_eval_breaker_for_test after rebase
Keep the STW test helper visible without bringing back stop_bit_set.
Assisted-by: Grok:grok-4.6
* Fix groupby reentrancy and islice arguments
Give _grouper its own tgtkey and take currvalue after the key
comparison. Accept __index__ on islice bounds, reject step 0, and
drain the source up to stop.
Assisted-by: Grok:grok-4.6
* SETREF warnings filters, onceregistry, and defaultaction
Keep the last list, dict, or str after the module attributes are
deleted by swapping the interpreter cache pointer. Do not store a
None fallback for _warnings_context.
Assisted-by: Grok:grok-4.6
* Iterate OrderedDict inner dict via next_entry
&PyDict is not an iterator after the borrowed-ref signature change.
Assisted-by: Grok:grok-4.6
* Remove expectedFailure from testBluetoothConstants
Linux now exports BTPROTO_HCI and the rest of the set.
Assisted-by: Grok:grok-4.6
* Borrow get_filter arguments as PyObject
Match the warn_explicit call site that passes borrowed
handles after the internal-helper borrow change.
Assisted-by: Grok:grok-4.6
* Fix bool slots and SemHandle safety docs
Leave unused bool number slots unset so inspect reports
__add__ on int. Document SemHandle::from_raw safety.
Assisted-by: Grok:grok-4.6
* Keep sendmsg errors and drop duplicate linecache
Replace sendmsg iterable TypeError only. Register REPL
source in linecache once per compiled input.
Assisted-by: Grok:grok-4.6
* Nest REPL parse or-patterns for clippy
Assisted-by: Grok:grok-4.6
* Mark pydoc os.stat signature test expectedFailure
Assisted-by: Grok:grok-4.6
---------
Co-authored-by: Lee Dogeon <dev.moreal@gmail.com>
Changed type.rs to add notes to original exceptions instead of
wrapping them in RuntimeError, following PEP 678 (gh-77757).
This allows enum.py's exception handling to work correctly when
super().__new__() is misused in Enum subclasses, enabling the
proper TypeError to propagate instead of being hidden behind
a RuntimeError wrapper.
Fixes test_bad_new_super test case.