Skip to main content

a simple package

Project description

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'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

undefined-0.0.8.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

undefined-0.0.8-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file undefined-0.0.8.tar.gz.

File metadata

  • Download URL: undefined-0.0.8.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for undefined-0.0.8.tar.gz
Algorithm Hash digest
SHA256 c6f237c0e3d7e7519694b21bd471dc25ee3c3379d9c23b74ebf02aa349c5cff7
MD5 04c1c41dfaa0c04692c3d592ceaeb20d
BLAKE2b-256 78b2af4330ffa42fc9c41533b06cdc95ac780f41cf4d3cb9c71f973847d0c398

See more details on using hashes here.

File details

Details for the file undefined-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: undefined-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.22.0

File hashes

Hashes for undefined-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 3e081023fd5c7d6bd83a3e2da51fce4314878b4d4cc555ade79b7fc0ef3211e9
MD5 c6c1a585d497eb3c787fb14ae1cf92a6
BLAKE2b-256 8a6e105abbbc21c39e835a2734325b1737934ad02259ea372f2c6a783fca1df1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page