provide extensive way of managing your constant variable.
Project description
Welcome to constant2 Documentation
If you have lots of constant2 value widely used across your development. A better way is to define Constantant Variable rather than using the raw value. This can improve the readability.
constant2 is a library provide extensive way of managing your constant2 variable.
Quick Links
Usage
Version Changed 0.0.9: All nested class now has to inherit from Constant or its subclass:
# WRONG!
class ItemType(Constant):
class Weapon:
id = 1
# CORRECT
class ItemType(Constant):
class Weapon(Constant):
id = 1
# or
class Item(Constant):
pass
class ItemType(Constant):
class Weapon(Item):
id = 1
Usage:
from constant2 import Constant
class Food(Constant):
class Fruit(Constant):
id = 1
name = "fruit"
class Apple(Constant):
id = 1
name = "apple"
class RedApple(Constant):
id = 1
name = "red apple"
class GreenApple(Constant):
id = 2
name = "green apple"
class Banana(Constant):
id = 2
name = "banana"
class YellowBanana(Constant):
id = 1
name = "yellow banana"
class GreenBanana(Constant):
id = 2
name = "green banana"
class Meat(Constant):
id = 2
name = "meat"
class Pork(Constant):
id = 1
name = "pork"
class Beef(Constant):
id = 2
name = "beef"
food = Food()
You can visit it’s data or child class data in these way:
# Use class
>>> Fruit.Items() # .Items() return it's data
[('id', 1), ('name', 'fruit')]
>>> Fruit.Keys() # .Keys() return keys
['id', 'name']
>>> Fruit.Values() # .Values() return values
[1, 'fruit']
>>> Fruit.ToDict() # return data in a dict
{'id': 1, 'name': 'fruit'}
# use instance
>>> food.items() # .Items() return it's data
[('id', 1), ('name', 'fruit')]
>>> food.keys() # .keys() return keys
['id', 'name']
>>> food.values() # .values() return values
[1, 'fruit']
>>> food.to_dict() # return data in a dict
{'id': 1, 'name': 'fruit'}
# iterate on all nested class
>>> Fruit.Subclasses(sort_by='id')
[class Apple, class Banana]
# get first nested class that kls.id == 1
# useful when you need reverse lookup
>>> Fruit.GetFirst('id', 1)
class Apple
# get all child class that kls.id == 1
>>> Fruit.GetAll('id', 1)
[class Apple, ]
And it provides built-in I/O methods allow you to dump these data in to a dictionary.
>>> data = Food.dump()
>>> data
{
"Food": {
"Fruit": {
"Apple": {
"GreenApple": {
"__classname__": "GreenApple",
"id": 2,
"name": "green apple"
},
"RedApple": {
"__classname__": "RedApple",
"id": 1,
"name": "red apple"
},
"__classname__": "Apple",
"id": 1,
"name": "apple"
},
"Banana": {
"GreenBanana": {
"__classname__": "GreenBanana",
"id": 2,
"name": "green banana"
},
"YellowBanana": {
"__classname__": "YellowBanana",
"id": 1,
"name": "yellow banana"
},
"__classname__": "Banana",
"id": 2,
"name": "banana"
},
"__classname__": "Fruit",
"id": 1,
"name": "fruit"
},
"Meat": {
"Beef": {
"__classname__": "Beef",
"id": 2,
"name": "beef"
},
"Pork": {
"__classname__": "Pork",
"id": 1,
"name": "pork"
},
"__classname__": "Meat",
"id": 2,
"name": "meat"
},
"__classname__": "Food"
}
}
>>> Food = Constant.load(data)
Install
constant2 is released on PyPI, so all you need is:
$ pip install constant2
To upgrade to latest version:
$ pip install --upgrade constant2
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for constant2-0.0.9-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 079799a101c8e8575c189aa7128aaf9c3a9c3144ae9fab6c861c2ab6defbc9e7 |
|
MD5 | 1b0a03bb16b194cf4807b0ef52de4169 |
|
BLAKE2b-256 | 0e53f4676cc14d4e6fccaf5ac475c4d4fb0e2525cd557dc054c2442cd2c03048 |