Option to include `init=False` globally on a converter, not per class
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Start with cattrs.Converter and the cattrs.strategies.include_init_false entry point mentioned in the issue, then inspect how converter configuration affects attrs classes. Verify the chosen global option with structure and unstructure examples containing init=False fields, and add coverage showing the old behavior is enabled for multiple classes.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
- cattrs version: v23.2.3
- Python version: 3.11.6
- Operating System: Ubuntu
Description
On previous cattrs versions, I used to structure and unstructure a lot of attrs classes that had many init=False fields.
Now, though, with the new versions of cattrs (v23.2.0), this behavior changed, breaking my code.
I'd like to be able to enable the old behavior back globally on a converter, instead of having to enable it for every single class, as I have many classes all over the place that would benefit from re-enabling init=False fields in conversion.
import attrs
import cattrs
@attrs.define
class Foo:
bar: int
baz: str = attrs.field(init=False)
foo = Foo(bar=1)
foo.baz = "hello"
converter = cattrs.Converter()
print(converter.unstructure(foo))
# before: {'bar': 1, 'baz': 'hello'}
# after: {'bar': 1}
I thought about something like this:
import cattrs
from cattrs.strategies import include_init_false
converter = cattrs.Converter()
include_init_false(converter)
# OR
converter = cattrs.Converter(include_init_false=True)
- Vorherrschende Sprache
- Python
- Sterne
- 1.1k
- Forks
- 165
- Ø Merge
- 11 Std. 51 Min.
- Gemergte PRs (30 T.)
- 7
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus python-attrs/cattrs
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
python-attrs/cattrs#761 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
python-attrs/cattrs#513 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 35/100
python-attrs/cattrs#779 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 85/100
python-attrs/cattrs#774 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
python-attrs/cattrs#746 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in python-attrs/cattrs
Ähnliche Issues
-
[Bug] @deck.gl/arcgis dist import resolves to unpublished @deck.gl/core source path (9.3.11, 9.4.0)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
workflow: a tick's dispatch counts as 'only this step', and no review self-grants a round unattendedOffenworkflow
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
kristofdegrave/homeassistant-smart-charging#1505 ·
Maintainer antworten meist innerhalb von 1 Tag
-
metadata submission
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
canonical/content-cache-operator#163 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
[submission]Offensubmission
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 65/100
leanprover/lean-eval-submissions#1852 ·
Maintainer antworten meist innerhalb von 1 Tag