Parser for ini files
Project description
ini_parser.py
This module is a utility that extends Python's built-in configparser module. It provides enhanced functionality for reading from and writing to INI files, including support for type conversion and default value interpolation.
function
It can get and set configuration information in ini format.
This library is an enhanced parser for INI configuration files that allows you to define type information and default values in advance. When a value is missing from the INI file, the parser automatically fills in the predefined default value. Additionally, string values in the INI file are automatically converted to the specified types (e.g., int, bool, List[str], etc.) based on the provided type definitions.
Usage
import ini_cfg_parser as ini
from typing import List
def get_ini_dict_val(section: str) -> ini.IniDict:
return {
section: {
'lst_language': {'type': List[str], 'inf': ['English','Japanese','Russian','Korean']},
'langage': {'type': int, 'inf': 0},
'CygwinDirectory': {'type': str, 'inf': r'c:\uty\cygwin'},
'ComPort': {'type': int, 'inf': 1},
'lst_Parity': {'type': List[str], 'inf': ['even','odd','none','mark','space']},
'parity': {'type': int, 'inf': 0},
'DataBit': {'type': int, 'inf': 8},
'StopBit': {'type': int, 'inf': 1},
},
}
encoding = "utf8"
ini_file = "config.ini"
section = 'setting1'
default_ini = get_ini_dict_val(section)
ini_parser = ini.IniParser(ini_file, default_ini, encoding)
lst_language = ini_parser.get(section, 'lst_language')
print(f"lst_language={lst_language},type={type(lst_language)}")
langage = ini_parser.get(section, 'langage')
print(f"langage={langage},type={type(langage)}")
print(f"langage setting={lst_language[langage]},type={type(lst_language[langage])}")
CygwinDirectory = ini_parser.get(section, 'CygwinDirectory')
print(f"CygwinDirectory={CygwinDirectory},type={type(CygwinDirectory)}")
ComPort = ini_parser.get(section, 'ComPort')
print(f"ComPort={ComPort},type={type(ComPort)}")
lst_Parity = ini_parser.get(section, 'lst_Parity')
print(f"lst_Parity={lst_Parity},type={type(lst_Parity)}")
parity = ini_parser.get(section, 'parity')
print(f"parity={parity},type={type(parity)}")
print(f"parity setting={lst_Parity[parity]},type={type(lst_Parity[parity])}")
DataBit = ini_parser.get(section, 'DataBit')
print(f"DataBit={DataBit},type={type(DataBit)}")
StopBit = ini_parser.get(section, 'StopBit')
print(f"StopBit={StopBit},type={type(StopBit)}")
If the ini file does not exist, the following config.ini will be created.
# config.ini
[DEFAULT]
lst_language = English,Japanese,Russian,Korean
langage = 0
cygwindirectory = c:\uty\cygwin
comport = 1
lst_parity = even,odd,none,mark,space
parity = 0
databit = 8
stopbit = 1
[setting1]
lst_language = English,Japanese,Russian,Korean
langage = 0
cygwindirectory = c:\uty\cygwin
comport = 1
lst_parity = even,odd,none,mark,space
parity = 0
databit = 8
stopbit = 1
The result of executing the above script.
lst_language=['English', 'Japanese', 'Russian', 'Korean'],type=<class 'list'>
langage=0,type=<class 'int'>
langage setting=English,type=<class 'str'>
CygwinDirectory=c:\uty\cygwin,type=<class 'str'>
ComPort=1,type=<class 'int'>
lst_Parity=['even', 'odd', 'none', 'mark', 'space'],type=<class 'list'>
parity=0,type=<class 'int'>
parity setting=even,type=<class 'str'>
DataBit=8,type=<class 'int'>
StopBit=1,type=<class 'int'>
overview
- The
ini_cfg_parserinstance is initialized with the parameter get_ini_dict_val of type IniDict. - The get_ini_dict_val parameter is a user-defined dictionary structure that specifies default values and their expected types.
# @param[in] ini_path : Path information for the ini file.(type=str)
# @param[in] get_ini_dict_val: This parameter is a user-defined dictionary structure that specifies default values and their expected types.(type=IniDict)
# @param[in] encoding : The type of character code encoding.(type=str)
ini_parser = ini.IniParser(ini_path=ini_file, get_ini_dict_val=default_ini, encoding=encoding)
Section structure
IniDict = Dict[str, Dict[str, IniItem]]
Type of each ini item
class IniItem(TypedDict):
type: IniType
inf: IniValue
Defining a type alias
IniType = Union[Type[str], Type[int], Type[float], Type[bool], Type[List[str]], Type[List[int]], Type[List[float]], Type[List[bool]]]
IniValue = Union[str, int, float, bool, List[str], List[int], List[float], List[bool]]
When an error occurs in this library, the function die_print() is used to display a message.
Operation Mode: There are four operation modes.
nSysExit: Executessys.exit(1)to terminate the script.nTkInter: Usestkinterto display a message in a dialog. Then executessys.exit(1)to terminate the script.nException: Raises exceptionIniParserError. The error message is passed as the error information of the exception.nTkInterException: Usestkinterto display a message in a dialog and then raises the exceptionIniParserError.
Setting the Mode:
Use set_die_mode() to set the mode.
How to set it up:
ini.IniParser.set_die_mode(ini.DieMode.nSysExit)
license
MIT License
author
pukkunk
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
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
File details
Details for the file ini_cfg_parser-0.1.4.tar.gz.
File metadata
- Download URL: ini_cfg_parser-0.1.4.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e36072bf5146878a058f7fc1c921f883221e8acd93c7ee62f13c343bd91ddbe9
|
|
| MD5 |
8544061e74fcec2540805f6fec20c1c1
|
|
| BLAKE2b-256 |
2c58b89ec8bcd29b0d732b42425df1d2ad5239c7a457431903a70bdb9c2815ce
|
File details
Details for the file ini_cfg_parser-0.1.4-py3-none-any.whl.
File metadata
- Download URL: ini_cfg_parser-0.1.4-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0154730e5dd6c93f37e9b13431d72b77657d996f23c8fb4ee1c2061ca82ad7b
|
|
| MD5 |
f013f1d0b6ce7c5c8703130638c32fe6
|
|
| BLAKE2b-256 |
afe31a7c4da0074b41e15fe7221123f9de14f500550585c5e03a57640b397613
|