This Package Parses FxDC file and returns the object
Project description
FedxD Data Container (FxDC)
Preview
It is used to convert a FxDC string to FxDC object than can be parsed
FxDC String
name|str = "John"
age|int = 23
address|dict:
street|str = "123 Main St"
city|str = "New York"
phone|list:
str = "555-1234"
str = "555-4567"
It Can be Converted To a FxDC class Object or a Json Supported Dictionary
Converted Json Dictionary
{
"name": "John",
"age": 23,
"address": {
"street": "123 Main St",
"city": "New York"
},
"phone": [
"555-1234",
"555-4567"
]
}
Get Started
- install the python pacakge
pip install fxdc - import fxdc
import fxdc - Enjoy
Syntax
Basic Syntax
name="John"
age=12
salary=1000.00
Type Hinting Syntax
name|str="John"
age|int=12
is_male|bool=1
salary|float=1000.00
Some Types Can Only Be Accessed By Type Hinting Like Bool, List And Custom Classes
MultiLine Variable
mydict:
name|str="John"
age|int=12
Multi Line Variables Without Type Hinting Is a Python Dict. Indentation Is Required to Diffrentiate B/w variables
List Syntax
List Syntax When Defined Its Type Doesn't Need a Key. You Can DIrectly Access All UnTypeHinted Variables By = and :
mylist|list:
="John"
=12
=1000.00
:
name="John"
age=12
OUTPUT
[
"John",
12,
1000.00,
{
"name": "John",
"age": 12
}
]
List Syntax (Type Hinted)
For TypeHinting In List Syntax You Don't Need To Use | You Can Directly Mention The Type And Follow Up With : and =
mylist|list:
str="John"
int=12
float=1000.00
dict:
name="John"
age=12
list:
str="Micheal"
int=23
bool=1
OUTPUT
[
"John",
12,
1000.00,
{
"name": "John",
"age": 12
},
[
"Micheal",
23,
1
]
]
Nested Variables
members|list:
dict:
name="John"
age=10
:
name="Micheal"
age = 120
OUTPUT
[
{
"name": "John",
"age": 10
},
{
"name": "Micheal",
"age": 120
}
]
Custom Class Types
Class
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"<{self.name}: {self.age}>"
FxDC File
main|MyClass:
name="john"
age=23
You Can Also Put Custom Name For Class
from fxdc import Config
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"<{self.name}: {self.age}>"
Config.add_class("MyDopeClass", MyClass)
OR
from fxdc import Config
@Config.add_class("MyDopeClass")
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"<{self.name}: {self.age}>"
FxDC File
main|MyDopeClass:
name="john"
age=23
In Order To Make Bot Use Custom Class U Need To Add The Class To Config
from fxdc import Config
Config.add_class("MyClass", MyClass) #Name of Class, Class
OR
Add it as a decorator on top of a class
from fxdc import Config
@Config.add_class("MyClass")
class MyClass:
def __init__(self, name:str):
self.name = name
This Will Ensure The Initializing Of The Class When Loading the FxDC container
You Can Have a to_data() function and from_data() function to get and put information to make the class object. from_data() should be of @staticmethod
class MyClass:
def __init__(self, name, age):
self.name = name
self.age = age
self.salary = age * 2
def __repr__(self):
return f"<{self.name}: {self.age}>"
def to_data(self) -> dict:
return {
"name": self.name,
"age": self.age
}
@staticmethod
def from_data(**kwargs) -> "MyClass":
return MyClass(kwargs["name"], kwargs["age"])
Usage
Converting FxDC to Class Object
From File
import fxdc
fxdcobject = fxdc.load("main.fxdc") #Name of the File
OR
import fxdc
with open("main.fxdc", "w") as f:
fxdcobject = fxdc.load(f)
From String
fxdcstring = """
name|str = "John"
age|int = 23
address|dict:
street|str = "123 Main St"
city|str = "New York"
phone|list:
str = "555-1234"
str = "555-4567"
"""
from fxdc import loads
fxdcobject = loads(fxdcstring)
Converting Class Object To FxDC
You Can Put Any Type of object to convert to FxDC including strings and custom objects
Class Object
class MyClass:
def __init__(self, name:str, age:int):
self.name = name
self.age = age
def __repr__(self):
return f"{self.name}: {self.age}"
from fxdc import dumps
obj = MyClass("John", 23)
fxdcstring = dumps(obj)
print(fxdcstring)
main|MyClass:
name|str="John"
age|int=20
It Also Inputs The Same Class And Can Auto Convert To That Class
Error
Recursion Error
Incase of recursion error just do the following to increase the recursion limit
from fxdc import Config
Config.set_recursion_limit(10000) #Default is 1000 U Can Increase That
Credits
All Packages Made And Manages by FedxD
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
fxdc-2.0.1.tar.gz
(10.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
fxdc-2.0.1-py3-none-any.whl
(11.3 kB
view details)
File details
Details for the file fxdc-2.0.1.tar.gz.
File metadata
- Download URL: fxdc-2.0.1.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9262990be1bfe771f17bbbcabfd72a68efa29e8320d9b8b7ac668944a7da7057
|
|
| MD5 |
1cfa57116fdb52fcc258855e25727cb7
|
|
| BLAKE2b-256 |
c74392d7eca9677aa6b7510e4143ac7cfbe51156245bffac25b3342d70de7e8c
|
File details
Details for the file fxdc-2.0.1-py3-none-any.whl.
File metadata
- Download URL: fxdc-2.0.1-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c8e797a54c2000859ec949f0711e0a0793ebac8d8b8844f9055442a33e8e4ed
|
|
| MD5 |
a249cb0d6d56d5232106c5dacc2d5b81
|
|
| BLAKE2b-256 |
04cbcd49bb36eb0cdcc448191e4fd2c3f4ddd3de38b5ab387410c502a79e2232
|