Comments (5)
Идея.
Глобальная настройка:
- Обрезать ли _ в конце
- Как преобразовывать имена: camelCase, UpperCamelCase, snake_case, kebab-case
Настройка под каждый класс:
- Обрезать ли _ в конце
- Тип преобразования имен
- Кастомная карта имен
Примерно так
class_settings = {
MyClass: ParserConfig(
trim_trailing_underscore=True,
naming_style=NamingStyle.Kebab
),
OtherClass: ParserConfig(attributes={
"my_var": "my_var$1",
"other": "Other",
"something_else": "XXX"
}
}
factory = ParserFactory(
trim_trailing_underscore=True,
naming_style=NamingStyle.UpperCamel,
class_settings=class_settings
)
from adaptix.
В случе указания naming_style будет возможна например такая конвертация:
@dataclass
class A:
var_name: int
other_var: str
data = {
"var-name": 1,
"other-var": 2
}
parser = ParserFactory(naming_style=NamingStyle.Kebab).get_parser(A)
a = parser(data)
Смешение стилей не предусматривается, но возможно сочетать naming style и кастомный маппинг имен
from adaptix.
В питоновских классах предполагаю использование только одного стиля (snake_case) - как рекомендовано в pep8. Стиль в словаре будет настраиваться
from adaptix.
В версии 1.1.0 сделана поддержка name_styles
как при парсинге, так и при сериализации. См. README
from adaptix.
Done in 2.0
from adaptix.
Related Issues (20)
- Add validation to converting from sqlalchemy model forbidding lazyloading
- Add adequate behaviour for non required input field at model conversion
- Add do nothing coercion for Union subtypes
- Code gen fails with SyntaxError if coercer uses lambda function
- Rename NoSuitableProvider to something with Error suffix
- Add default timezone parameter for datetime loading HOT 2
- Save original field order on dumping
- Fix introspection of sqlalchemy models with column_property
- Add type information to no coercer error
- Add coercer for optional
- Add coercer parameter to `link` function
- Allow linking constant values and constant factories
- Add several fields linking HOT 1
- Add support for django models
- Possible bug in strip_annotated function HOT 2
- Add BytesIO loader HOT 2
- Add support for msgspec model
- Disable key sorting HOT 2
- Allow redefining coercer inside ``Optional`` using inner type if source and destination types are same
- No provider for timestamp datetime HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from adaptix.