Module xsentinels.null
Global variables
var Null
-
Sentinel object used to represent NULL values to/from APIs, or other similar places.
Useful for when you need to know the difference between None and Null, such as using None to indicate no value, and Null to indicate a null value.
Example: Useful in models that represent Json values, in that you can tell if the original Json had any value defined at all vs a null value.
from null_type import Null class SomeClass: nullable_str = 'default-str' some_int = 3 def json_dict(self): json_dict = {} if self.nullable_str is not None: json_dict['nullable_str'] = self.nullable_str if self.some_int is not None: json_dict['some_int'] = self.some_int return {k: v if v is not Null else None for k, v in json_dict.items()} obj = SomeClass() obj.nullable_str = Null obj.some_int = None # When getting the json_dict value of object, the original None value in some_int is absent, # and None replaced the Null; which is what was intended. # Now when json_dict is converted to json-string, python will convert the `None` to json `null` value. assert obj.json_dict() == {'nullable_str': None}
var Nullable
-
Used in type-hints to wrap other type-hints to declare that it could be that type or
Null
value. Indicates that a value of Null could be assigned.You can use it like so:
>>> from null_type import Nullable, Null >>> >>> nullable_string: Nullable[str] >>> >>> # You can assign a <code>str</code> or a <code><a title="xsentinels.null.Null" href="#xsentinels.null.Null">Null</a></code> and it will be type-correct: >>> nullable_string = "hello!" >>> nullable_string = Null
Classes
class NullType (*args, **kwargs)
-
Expand source code
class NullType(Sentinel): """ Used to indicate something accepts `Null` via a type-hint. Use `Null` when you need it, this is just the type/class. `Null` will evaluate to False, similar to how `None` works. Example: ```python from null_type import Null class SomeClass: nullable_str = 'default-str' some_int = 3 def json_dict(self): json_dict = {} if self.nullable_str is not None: json_dict['nullable_str'] = self.nullable_str if self.some_int is not None: json_dict['some_int'] = self.some_int return {k: v if v is not Null else None for k, v in json_dict.items()} obj = SomeClass() obj.nullable_str = Null obj.some_int = None # When getting the json_dict value of object, the original None value in some_int is # absent, and None replaced the Null; which is what was intended. # Now when json_dict is converted to json-string, python will convert the `None` to json # `null` value. assert obj.json_dict() == {'nullable_str': None} ``` """ pass
Used to indicate something accepts
Null
via a type-hint.Use
Null
when you need it, this is just the type/class.Null
will evaluate to False, similar to howNone
works.Example:
from null_type import Null class SomeClass: nullable_str = 'default-str' some_int = 3 def json_dict(self): json_dict = {} if self.nullable_str is not None: json_dict['nullable_str'] = self.nullable_str if self.some_int is not None: json_dict['some_int'] = self.some_int return {k: v if v is not Null else None for k, v in json_dict.items()} obj = SomeClass() obj.nullable_str = Null obj.some_int = None # When getting the json_dict value of object, the original None value in some_int is # absent, and None replaced the Null; which is what was intended. # Now when json_dict is converted to json-string, python will convert the `None` to json # `null` value. assert obj.json_dict() == {'nullable_str': None}
Ancestors