summaryrefslogtreecommitdiffstats
path: root/Lib/dataclasses.py
Commit message (Collapse)AuthorAgeFilesLines
* gh-89828: Do not relay the __class__ attribute in GenericAlias (#93754)Serhiy Storchaka2022-06-181-2/+2
| | | | | list[int].__class__ returned type, and isinstance(list[int], type) returned True. It caused numerous problems in code that checks isinstance(x, type).
* GH-93521: For dataclasses, filter out `__weakref__` slot if present in bases ↵Bluenix2022-06-081-4/+9
| | | | (GH-93535)
* Add weakref_slot to dataclass decorator, to allow instances with slots to be ↵Eric V. Smith2022-05-021-8/+19
| | | | weakref-able. (#92160)
* bpo-47126: Update to canonical PEP URLs specified by PEP 676 (GH-32124)Hugo van Kemenade2022-03-301-1/+1
|
* bpo-46382 dataclass(slots=True) now takes inherited slots into account ↵Arie Bovenberg2022-03-191-1/+22
| | | | | (GH-31980) Do not include any members in __slots__ that are already in a base class's __slots__.
* bpo-44674: Use unhashability as a proxy for mutability for default dataclass ↵Eric V. Smith2021-12-111-2/+4
| | | | | __init__ arguments. (GH-29867) `@dataclass` in 3.10 prohibits using list, dict, or set as default values. It does this to avoid the mutable default problem. This test is both too strict, and not strict enough. Too strict, because some immutable subclasses should be safe, and not strict enough, because other mutable types should be prohibited. With this change applied, `@dataclass` now uses unhashability as a proxy for mutability: if objects aren't hashable, they're assumed to be mutable.
* bpo-45663: Fix is_dataclass() for dataclasses which are subclasses of ↵Serhiy Storchaka2021-12-051-1/+1
| | | | types.GenericAlias (GH-29294)
* bpo-45662: Fix the repr of InitVar with a type alias to the built-in class ↵Serhiy Storchaka2021-12-051-1/+1
| | | | | (GH-29291) For example, InitVar[list[int]].
* bpo-44649: Fix dataclasses(slots=True) with a field with a default, but ↵Eric V. Smith2021-11-221-6/+13
| | | | | init=False (GH-29692) Special handling is needed, because for non-slots dataclasses the instance attributes are not set: reading from a field just references the class's attribute of the same name, which contains the default value. But this doesn't work for classes using __slots__: they don't read the class's attribute. So in that case (and that case only), initialize the instance attribute. Handle this for both normal defaults, and for fields using default_factory.
* Added kw_only parameter to make_dataclasses. (GH-29679)Eric V. Smith2021-11-201-2/+2
|
* Fix dataclassses spelling (GH-28837)Landon Yarrington2021-10-091-1/+1
|
* Fix typos in multiple files (GH-26689)Binbin2021-06-131-1/+1
| | | Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
* Fix dataclass comment typo _eq__ -> __eq__ (GH-26433)Sean Grady2021-05-281-1/+1
|
* bpo-44015: dataclasses should allow KW_ONLY to be specified only once per ↵Eric V. Smith2021-05-031-0/+5
| | | | | class (GH-25841) bpo-44015: Raise a TypeError if KW_ONLY is specified more than once.
* If using a frozen class with slots, add __getstate__ and __setstate__ to set ↵Eric V. Smith2021-05-011-2/+21
| | | | the instance values. (GH-25786)
* bpo-42269: Add slots parameter to dataclass decorator (GH-24171)Yurii Karabas2021-05-011-6/+39
| | | Add slots parameter to dataclass decorator and make_dataclass function.
* Add keyword-only fields to dataclasses. (GH=25608)Eric V. Smith2021-04-261-32/+101
|
* bpo-38605: Revert making 'from __future__ import annotations' the default ↵Pablo Galindo2021-04-211-10/+3
| | | | | | (GH-25490) This reverts commits 044a1048ca93d466965afc027b91a5a9eb9ce23c and 1be456ae9d53bb1cba2b24fc86175c282d1c2169, adapting the code to changes that happened after it.
* Fix typo in a dataclasses comment. (GH-25454)Eric V. Smith2021-04-171-1/+1
|
* Remove an unnecessary copy of the 'namespace' parameter to make_dataclass(). ↵Eric V. Smith2021-04-131-8/+13
| | | | (GH-25372)
* bpo-43764: Add match_args=False parameter to dataclass decorator and to ↵Eric V. Smith2021-04-111-14/+24
| | | | | make_dataclasses function. (GH-25337) Add match_args=False parameter to dataclass decorator and to make_dataclass function.
* bpo-43764: Fix `__match_args__` generation logic for dataclasses (GH-25284)Brandt Bucher2021-04-081-1/+1
|
* bpo-43176: Fix processing of empty dataclasses (GH-24484)Iurii Kemaev2021-04-061-1/+1
| | | | | When a dataclass inherits from an empty base, all immutability checks are omitted. This PR fixes this and adds tests for it. Automerge-Triggered-By: GH:ericvsmith
* bpo-36470: Allow dataclasses.replace() to handle InitVars with default ↵Zackery Spytz2021-04-051-1/+1
| | | | | | | values (GH-20867) Co-Authored-By: Claudiu Popa <pcmanticore@gmail.com> Automerge-Triggered-By: GH:ericvsmith
* bpo-42128: Structural Pattern Matching (PEP 634) (GH-22917)Brandt Bucher2021-02-261-0/+12
| | | | | Co-authored-by: Guido van Rossum <guido@python.org> Co-authored-by: Talin <viridia@gmail.com> Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
* bpo-41747: Ensure all dataclass methods uses their parents' qualname (GH-22155)Batuhan Taskaya2020-10-211-2/+9
| | | | | * bpo-41747: Ensure all dataclass methods uses their parents' qualname Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
* bpo-38605: Make 'from __future__ import annotations' the default (GH-20434)Batuhan Taskaya2020-10-061-3/+10
| | | | | The hard part was making all the tests pass; there are some subtle issues here, because apparently the future import wasn't tested very thoroughly in previous Python versions. For example, `inspect.signature()` returned type objects normally (except for forward references), but strings with the future import. We changed it to try and return type objects by calling `typing.get_type_hints()`, but fall back on returning strings if that function fails (which it may do if there are future references in the annotations that require passing in a specific namespace to resolve).
* bpo-41905: Add abc.update_abstractmethods() (GH-22485)Ben Avrahami2020-10-061-0/+3
| | | | This function recomputes `cls.__abstractmethods__`. Also update `@dataclass` to use it.
* Fix typo in dataclasses module (GH-21109)Jürgen Gmach2020-06-241-1/+1
| | | Automerge-Triggered-By: @matrixise
* bpo-39481: PEP 585 for dataclasses, mailbox, contextvars (GH-19425)Ethan Smith2020-04-141-0/+3
|
* bpo-34776: Fix dataclasses to support __future__ "annotations" mode (#9518)Yury Selivanov2019-12-091-34/+53
|
* bpo-38431: Fix __repr__ method of InitVar to work with typing objects. ↵Samuel Colvin2019-10-131-1/+6
| | | | | | (GH-16702)
* bpo-38209: Simplify dataclasses.InitVar by using __class_getitem__(). (GH-16255)Serhiy Storchaka2019-09-221-5/+4
|
* bpo-37868: Improve is_dataclass for instances. (GH-15325)Eric V. Smith2019-08-201-2/+3
|
* Fix typos in docs, comments and test assert messages (#14872)Min ho Kim2019-07-211-1/+1
|
* bpo-37163: Make the obj argument of dataclasses.replace() a positional-only. ↵Serhiy Storchaka2019-06-261-1/+1
| | | | (GH-14390)
* bpo-33569 Preserve type information with dataclasses.InitVar (GH-8927)Augusto Hack2019-06-031-3/+10
|
* bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700)Serhiy Storchaka2019-06-011-6/+3
|
* bpo-35960: Fix dataclasses.field throwing away empty metadata. (GH-11815)Christopher Hunt2019-02-121-1/+1
|
* bpo-33947: dataclasses no longer can raise RecursionError in repr (GF9916)Srinivas Thatiparthy (శ్రీనివాస్ తాటిపర్తి)2018-10-191-6/+31
| | | The reprlib code was copied here instead of importing reprlib. I'm not sure if we really need to avoid the import, but since I expect dataclasses to be more common that reprlib, it seems wise. Plus, the code is small.
* bpo-34363: dataclasses.asdict() and .astuple() now handle fields which are ↵Eric V. Smith2018-09-141-2/+38
| | | | namedtuples. (GH-9151)
* bpo-34213: Allow dataclasses to work with a field named 'object'. (GH-8452)Vadim Pushtaev2018-08-121-1/+7
|
* Fix typo in dataclasses documentation (GH-8102)Artjom2018-07-051-1/+1
|
* bpo-33805: Improve error message of dataclasses.replace() (GH-7580)Dong-hee Na2018-06-231-0/+3
|
* bpo-33796: Ignore ClassVar for dataclasses.replace(). (GH-7488)Eric V. Smith2018-06-071-1/+5
|
* bpo-33536: Validate make_dataclass() field names. (GH-6906)Eric V. Smith2018-05-161-0/+15
|
* bpo-33534: Remove unneeded test. (GH-6897)Eric V. Smith2018-05-161-6/+5
| | | This condition as already tested before this code is called.
* Reflow dataclasses comments (GH-6893)Eric V. Smith2018-05-161-170/+176
| | | To be more consistent with other code (and so people stop hassling me!), reflow the dataclasses comments to not use a single space indentation when continuing a paragraph of text.
* bpo-33453: Handle string type annotations in dataclasses. (GH-6768)Eric V. Smith2018-05-161-18/+116
|
* bpo-33517: dataclasses: Add the field type to Field repr (GH-6858)Eric V. Smith2018-05-151-4/+10
|