Undefined
Ever needed a global object that act as None but not quite ?
Like for example key-word argument for function, where None make sens, so you need a default value.
One solution is to create as singleton object:
mysingleton = object()
Though it becomes difficult to track the singleton across libraries, and teach users where to import this from.
It's also relatively annoying use this singleton across library.
Introducing undefined:
>>> import undefined
>>> from undefined import Undefined
>>> undefined is Undefined
True
behavior
It work (for now) mostly like a singleton object
Though it's neither truthy not falsy
>>> if undefined: print(True)
raise NotImplementedError
Casing ?
Because it is a module you can use it lowercase:
import undefined
Because it looks more like a keyword (None, True, False), you can use it upper case:
import undefined as Undefined
or
from undefined import Undefined
I tend to be torn between lowercase, for simplicity, and Uppercase.
Why not None, difference with None
undefined is likely slower, and as it is a regular Python object there are a few on purpose (or not difference).
Unlike None, you can assign to it
>>> None = 3
SyntaxError: can't assign to keyword
>>> undefined = 3
>>> undefned
3
Unlike None, undefined is mutable
>>> undefined.value = 42
>>> undefined.value
42
(might be able to fix that with __get_attr__
Unlike None, undefined is neither true not false.
If you test for boolean value of undefind if will raise.
That is to say: the following will fail:
value = undefined
if value:
pass # will raise before reaching here.
You have to check for identity:
value = undefined
other = 1
if value is undefined:
pass # will execute
for info, undefined is not True,False, not undefined with respect to identity
>>> undefined is True
False
>>> undefined is False
False
>>>: undefined is None
False
String form
str(undefined) raises. repr(undefined) is the unicode string 'Undefined'
Metadata
Release files for undefined 0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| undefined-0.0.8.tar.gz | 3.1 kB | Without provenance | Details for undefined-0.0.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| undefined-0.0.8-py3-none-any.whl | Python 3 | none | any | Details for undefined-0.0.8-py3-none-any.whl |
Total release size: 8.0 kB
Release files / undefined-0.0.8.tar.gz
| Download URL | undefined-0.0.8.tar.gz |
|---|---|
| Size | 3.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c6f237c0e3d7e7519694b21bd471dc25ee3c3379d9c23b74ebf02aa349c5cff7
|
|
BLAKE2b-256 checksum How to use checksums |
78b2af4330ffa42fc9c41533b06cdc95ac780f41cf4d3cb9c71f973847d0c398
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.22.0
|
Release files / undefined-0.0.8-py3-none-any.whl
| Download URL | undefined-0.0.8-py3-none-any.whl |
|---|---|
| Size | 4.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3e081023fd5c7d6bd83a3e2da51fce4314878b4d4cc555ade79b7fc0ef3211e9
|
|
BLAKE2b-256 checksum How to use checksums |
8a6e105abbbc21c39e835a2734325b1737934ad02259ea372f2c6a783fca1df1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.22.0
|
Security for undefined 0.0.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.