Eric V. Smith
d3062f672c
bpo-44649: Fix dataclasses(slots=True) with a field with a default, but 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.
2021-11-22 08:26:12 -05:00
Eric V. Smith
f7638dd0f9
Added kw_only parameter to make_dataclasses. (GH-29679)
2021-11-20 18:25:56 -05:00
Nikita Sobolev
07236d562e
bpo-45566: `test_frozen_pickle` checks all `pickle` protocols (GH-29150)
...
Refs https://github.com/python/cpython/pull/29147
Automerge-Triggered-By: GH:ericvsmith
2021-10-24 06:06:32 -07:00
Landon Yarrington
5b4a7675bc
Fix dataclassses spelling (GH-28837)
2021-10-09 15:17:52 -04:00
Christian Clauss
745c9d9dfc
Fix typos in the Lib directory (GH-28775)
...
Fix typos in the Lib directory as identified by codespell.
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
2021-10-06 16:13:48 -07:00
Yurii Karabas
0635e201be
bpo-45081: Fix __init__ method generation when inheriting from Protocol (GH-28121)
...
Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
2021-09-02 18:17:13 +02:00
Eric V. Smith
99ad742ea9
bpo-44015: dataclasses should allow KW_ONLY to be specified only once per class (GH-25841)
...
bpo-44015: Raise a TypeError if KW_ONLY is specified more than once.
2021-05-03 03:24:53 -04:00
Eric V. Smith
823fbf4e0e
If using a frozen class with slots, add __getstate__ and __setstate__ to set the instance values. (GH-25786)
2021-05-01 13:27:30 -04:00
Yurii Karabas
c24199184b
bpo-42269: Add slots parameter to dataclass decorator (GH-24171)
...
Add slots parameter to dataclass decorator and make_dataclass function.
2021-04-30 22:14:30 -04:00
Eric V. Smith
94549ee728
Add additional keyword-only tests. (GH-25633)
2021-04-26 13:14:28 -04:00
Eric V. Smith
c0280532dc
Add keyword-only fields to dataclasses. (GH=25608)
2021-04-25 20:42:39 -04:00
Pablo Galindo
b0544ba77c
bpo-38605: Revert making 'from __future__ import annotations' the default (GH-25490)
...
This reverts commits 044a1048ca
and 1be456ae9d
, adapting the code to changes that happened after it.
2021-04-21 12:41:19 +01:00
Eric V. Smith
750f484752
bpo-43764: Add match_args=False parameter to dataclass decorator and to make_dataclasses function. (GH-25337)
...
Add match_args=False parameter to dataclass decorator and to make_dataclass function.
2021-04-10 21:28:42 -04:00
Brandt Bucher
d92c59f486
bpo-43764: Fix `__match_args__` generation logic for dataclasses (GH-25284)
2021-04-08 12:54:34 -07:00
Iurii Kemaev
376ffc6ac4
bpo-43176: Fix processing of empty dataclasses (GH-24484)
...
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
2021-04-05 22:14:01 -07:00
Brandt Bucher
f84d5a1136
bpo-42128: __match_args__ can't be a list anymore (GH-25203)
2021-04-05 19:17:08 -07:00
Zackery Spytz
75220674c0
bpo-36470: Allow dataclasses.replace() to handle InitVars with default values (GH-20867)
...
Co-Authored-By: Claudiu Popa <pcmanticore@gmail.com>
Automerge-Triggered-By: GH:ericvsmith
2021-04-05 12:41:01 -07:00
Brandt Bucher
145bf269df
bpo-42128: Structural Pattern Matching (PEP 634) (GH-22917)
...
Co-authored-by: Guido van Rossum <guido@python.org>
Co-authored-by: Talin <viridia@gmail.com>
Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
2021-02-26 14:51:55 -08:00
Batuhan Taskaya
c7437e2c02
bpo-41747: Ensure all dataclass methods uses their parents' qualname (GH-22155)
...
* bpo-41747: Ensure all dataclass methods uses their parents' qualname
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2020-10-21 09:49:22 -04:00
Batuhan Taskaya
044a1048ca
bpo-38605: Make 'from __future__ import annotations' the default (GH-20434)
...
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).
2020-10-06 13:03:02 -07:00
Ben Avrahami
bef7d299eb
bpo-41905: Add abc.update_abstractmethods() (GH-22485)
...
This function recomputes `cls.__abstractmethods__`.
Also update `@dataclass` to use it.
2020-10-06 10:40:50 -07:00
Vlad Serebrennikov
138a9b9c2a
bpo-40389: Improve repr of typing.Optional ( #19714 )
2020-04-29 18:06:39 -07:00
Karthikeyan Singaravelan
eef1b027ab
Add test cases for dataclasses. ( #17909 )
...
* Add test cases for dataclasses.
* Add test for repr output of field.
* Add test for ValueError to be raised when both default and default_factory are passed.
2020-01-09 08:41:46 -05:00
Yury Selivanov
d219cc4180
bpo-34776: Fix dataclasses to support __future__ "annotations" mode ( #9518 )
2019-12-09 15:54:20 +01:00
Samuel Colvin
793cb85437
bpo-38431: Fix __repr__ method of InitVar to work with typing objects. (GH-16702)
2019-10-13 14:45:36 +03:00
Greg Price
9ece4a5057
Unmark files as executable that can't actually be executed. (GH-15353)
...
There are plenty of legitimate scripts in the tree that begin with a
`#!`, but also a few that seem to be marked executable by mistake.
Found them with this command -- it gets executable files known to Git,
filters to the ones that don't start with a `#!`, and then unmarks
them as executable:
$ git ls-files --stage \
| perl -lane 'print $F[3] if (!/^100644/)' \
| while read f; do
head -c2 "$f" | grep -qxF '#!' \
|| chmod a-x "$f"; \
done
Looking at the list by hand confirms that we didn't sweep up any
files that should have the executable bit after all. In particular
* The `.psd` files are images from Photoshop.
* The `.bat` files sure look like things that can be run.
But we have lots of other `.bat` files, and they don't have
this bit set, so it must not be needed for them.
Automerge-Triggered-By: @benjaminp
2019-08-20 21:53:59 -07:00
Eric V. Smith
b0f4dab873
bpo-37868: Improve is_dataclass for instances. (GH-15325)
2019-08-20 01:40:28 -04:00
Min ho Kim
96e12d5f4f
Fix typos in docs, comments and test assert messages ( #14872 )
2019-07-21 16:12:33 -04:00
Augusto Hack
01ee12ba35
bpo-33569 Preserve type information with dataclasses.InitVar (GH-8927)
2019-06-02 22:14:48 -04:00
penguindustin
9646630895
bpo-36766: Typos in docs and code comments (GH-13116)
2019-05-06 14:57:17 -04:00
Windson yang
be372d73b4
bpo-36678: Rename duplicate tests in test_dataclasses (GH-12899)
2019-04-22 11:45:34 -07:00
Christopher Hunt
b01786c881
bpo-35960: Fix dataclasses.field throwing away empty metadata. (GH-11815)
2019-02-12 06:50:49 -05:00
Srinivas Thatiparthy (శ్రీనివాస్ తాటిపర్తి)
dd13c88b53
bpo-33947: dataclasses no longer can raise RecursionError in repr (GF9916)
...
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.
2018-10-19 12:54:50 -04:00
Eric V. Smith
9b9d97dd13
bpo-34363: dataclasses.asdict() and .astuple() now handle fields which are namedtuples. (GH-9151)
2018-09-14 11:32:16 -04:00
Vadim Pushtaev
4d12e4dc28
bpo-34213: Allow dataclasses to work with a field named 'object'. (GH-8452)
2018-08-12 07:46:05 -04:00
Serhiy Storchaka
3fe5cccb08
bpo-34184: Fix running Lib/test/test_dataclasses.py as a script. (GH-8382)
2018-07-23 23:37:55 +03:00
Dong-hee Na
3d70f7aef6
bpo-33805: Improve error message of dataclasses.replace() (GH-7580)
2018-06-23 10:46:32 -04:00
Eric V. Smith
e7adf2ba41
bpo-33796: Ignore ClassVar for dataclasses.replace(). (GH-7488)
2018-06-07 14:43:59 -04:00
Eric V. Smith
4e81296b18
bpo-33536: Validate make_dataclass() field names. (GH-6906)
2018-05-16 11:31:29 -04:00
Eric V. Smith
2a7bacbd91
bpo-33453: Handle string type annotations in dataclasses. (GH-6768)
2018-05-15 22:44:27 -04:00
Eric V. Smith
74940913d2
Clean up and enhance frozen dataclass tests. (GH-6380)
...
* Add a test for frozen with unhashable field value.
* Improve a comment.
2018-04-05 06:50:18 -04:00
Ivan Levkivskyi
5a7092de12
Allow dynamic creation of generic dataclasses (GH-6319)
2018-03-31 13:41:17 +01:00
Eric V. Smith
521995205a
bpo-33175: dataclasses should look up __set_name__ on class, not instance (GH-6305)
2018-03-29 11:07:48 -04:00
Eric V. Smith
de7a2f04d6
bpo-33141: Have dataclasses.Field pass through __set_name__ to any default argument. (GH-6260)
...
This is part of PEP 487 and the descriptor protocol.
2018-03-26 13:29:16 -04:00
Eric V. Smith
2b75fc2bc9
Minor fixes to dataclass tests. (GH-6243)
...
Also, re-enable a test for ClassVars with default_factory.
2018-03-25 20:37:33 -04:00
Eric V. Smith
51c9ab42ab
Trivial improvements to dataclasses tests. (GH-6234)
2018-03-25 09:04:32 -04:00
Eric V. Smith
c42e7aa67c
Fix invalid escape sequence: use raw string. (GH-6225)
2018-03-24 23:02:21 -04:00
Eric V. Smith
56970b8ce9
bpo-32505: dataclasses: raise TypeError if a member variable is of type Field, but doesn't have a type annotation. (GH-6192)
...
If a dataclass has a member variable that's of type Field, but it doesn't have a type annotation, raise TypeError.
2018-03-22 16:28:48 -04:00
Eric V. Smith
8e4560a9da
Add 'Field' to dataclasses.__all__. (GH-6182)
...
- Add missing 'Field' to __all__.
- Improve tests to catch this.
2018-03-21 17:10:22 -04:00
Eric V. Smith
8f6eccdc64
bpo-32896: Fix error when subclassing a dataclass with a field that uses a default_factory (GH-6170)
...
Fix the way that new annotations in a class are detected.
2018-03-20 22:00:23 -04:00