Extended Types
For convenience, additional types are defined to handle common scenarios.
Numbers
The Number converter should be used for values that can be both integers or floats, but should not be coerced into either type during serialization.
from typing import Optional
from datafiles.converters import Number
| Type Annotation | Python Value | YAML Content |
|---|---|---|
foobar: Number |
foobar = 42 |
foobar: 42 |
foobar: Number |
foobar = 1.23 |
foobar: 1.23 |
foobar: Number |
foobar = None |
foobar: 0.0 |
foobar: Optional[Number] |
foobar = None |
foobar: |
Text
The Text converter should be used for strings that contain lines of text, which are optimally serialized across multiple lines in a file.
from typing import Optional
from datafiles.converters import Text
| Type Annotation | Python Value | YAML Content |
|---|---|---|
foobar: Text |
foobar = "Hello, world!" |
foobar: Hello, world! |
foobar: Text |
foobar = "First\nSecond\n" |
foobar: |FirstSecond |
foobar: Text |
foobar = None |
foobar: "" |
foobar: Optional[Text] |
foobar = None |
foobar: |
Enumerations
Subclasses of enum.Enum can also be used as type annotations:
from enum import Enum
class Color:
RED = 1
GREEN = 2
BLUE = 3
| Type Annotation | Python Value | YAML Content |
|---|---|---|
color: Color |
color = Color.BLUE |
color: 3 |