Parser for function arguments
Project description
Function Argument Pre-Processor
This is a abstract library that need to be extended before put actual use.
The primary use case is to extend it as a Flask Extenstion
but is open to use with any other environment/framework that needs to deal with http endpoints eg: AWS Lambda
Implementations
Installation
$ pip install funcargpreprocessor
or download the code and run
$ python3 setup.py install
What it does?
- Extraction and transformation of function argument and raise appropriate exceptions
Example
- Please refer testimplementation.py and fieldtest.py for examples
Explanation
The following explanantion uses the example from test
folder
def get_current_time():
return datetime.now().replace(microsecond=0)
def get_current_date():
return date.today()
def get_future_date(date_factor=1):
def inner_fu():
return date.today() + timedelta(date_factor)
return inner_fu
from enum import Enum
class Gender(Enum):
MALE = "male"
FEMALE = "female"
TRANSGENDER = "transgender"
definition = {
"pageNo": { #Key name expected from the HTTP endpoint
"data_type": int # Data type expected
, "min_val": 0 # Min validation for the key
, "max_val": 20 # Max validation for the key
, 'alias': 'page_no' # Key for the function argument, to the function the argument will be 'page_no'
# Need? most of the time the http request are expected json and the keys will be in camelCase
, "default": 1 # Default value for the field if no value has been passed
}
, "start_date": {
"data_type": DateArg('%Y-%m-%d') # Expects a date argument in <str>'YYYY-MM-DD' format or datetime.date object accepts '2020-01-10', datetime.date(2020, 1, 10) converts,in case of a string argument, to datetime.date(2020, 1, 10) and passes it to the function
, "min_val": get_current_date # Function can be passed for min value, this function should not take any argument and should return a single value of the same type
, "max_val": get_future_date(10) # Function can be passed for max value, this function should not take any argument and should return a single value of the same type
, "required": True # This key is required to be there in the input
}
, "id_list": {
"data_type": list # Expects list of value
, "nested": int # The values in the list should be int same rule as `date_type`
, "value_list": [0, 1, 2, 3] # Accepted values, valid argument ex: [1,2], [1], [2,3,0]
# Need? Multiselect options
}
, "gender": {"data_type": str, "value_list": Gender} #Enum can be used for the value list and will be marshalled
, "random_flag": {"data_type": int, "value_list": [0,1]}
, 'reg_time': {"data_type": DateTimeArg('%Y-%m-%d %H:%M:%S'),
"default": get_current_time # Function can be passed for default value, this function should not take any argument and should return a single value of the same type
}
, "location": {"data_type": list
, "nested": { # Custom definition for objects in the list
"address_line_1": {"data_type": str, "required": True}
, "address_line_2": {"data_type": str
, "min_len": 5 #Mininum length expected for the argument
, "max_len": 10 # Maximum length accepted for the argument
}
, "latitude": {"data_type": DecimalArg(), "min_val": Decimal("-90"), "max_val": Decimal("90")}
, "longitude": {"data_type": DecimalArg(), "min_val": Decimal("-180"), "max_val": Decimal("180")}
, "pincode": {"data_type": int, "required": True}
, "contact_person": {
"data_type": dict
, "nested": {
"first_name": {"data_type": str, "required": True}
, "last_name": {"data_type": str}
, "phone_number": {
"data_type": str
, "required": True
, "regex": r"[0-9]{10,12}" # Regular expression validation
, "regex_error_message": "<some message>" # Message when the RegEx validation fails
}
}
}
}
}
}
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
Close
Hashes for funcargpreprocessor-0.10.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef1fab53ea5e0861821b6dac06c83ba360d8309a6f3489edb9e13f0f15e791aa |
|
MD5 | 0296a03d8c3becca9f1e27051698acaa |
|
BLAKE2b-256 | 2eb5f58f09836fcdc373e7f01be3e7e572062df2aa72cebe443fddf0a5971fd1 |
Close
Hashes for funcargpreprocessor-0.10.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f50c30c446389cd19dee32af6fb8e0934d9069d619d3e4a7aae3a1e996f1a9a0 |
|
MD5 | 682b1fda076c82b4185b1325c8004656 |
|
BLAKE2b-256 | 2b7d68acc217dc81767f2cf5417e684c38b736278c22a893d14a55edc1668b8d |