All Projects → smarie → python-autoclass

smarie / python-autoclass

Licence: BSD-3-Clause license
A python 3 library providing functions and decorators to automatically generate class code, such as constructor body or properties getters/setters along with optional support of validation contracts on the generated setters. Its objective is to reduce the amount of copy/paste code in your classes - and hence to help reducing human mistakes :).

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to python-autoclass

python-pyfields
Define fields in python classes. Easily.
Stars: ✭ 39 (+30%)
Mutual labels:  class, attribute, attr
magicproperties
A little but powerful package that allows you call getters and setters implicitly in PHP.
Stars: ✭ 13 (-56.67%)
Mutual labels:  properties, setter, getter
object.omit
Return a copy of an object without the given keys.
Stars: ✭ 79 (+163.33%)
Mutual labels:  property, properties
babel-plugin-private-underscores
Make _classMembers 'private' using symbols
Stars: ✭ 39 (+30%)
Mutual labels:  class, properties
Ngx Dynamic Form Builder
FormBuilder + class-transformer + class-validator = dynamic form group builder for Angular10+
Stars: ✭ 93 (+210%)
Mutual labels:  class, auto
property-information
Info on the properties and attributes of the web platform
Stars: ✭ 27 (-10%)
Mutual labels:  property, attribute
strongtyping
Decorator which checks whether the function is called with the correct type of parameters.
Stars: ✭ 85 (+183.33%)
Mutual labels:  property, typechecking
mutable
State containers with dirty checking and more
Stars: ✭ 32 (+6.67%)
Mutual labels:  class, properties
core
An advanced and highly optimized Java library to build frameworks: it's useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified source code and much more...
Stars: ✭ 100 (+233.33%)
Mutual labels:  code-generator, class
framework
Cygnite PHP Framework- A Modern Toolkit For Web Developers
Stars: ✭ 43 (+43.33%)
Mutual labels:  code-generator
akeneo-table-attribute-bundle
The Flagbit Table Attribute Bundle for Akeneo PIM gives you the possibility to enrich your product with multi-dimensional data presentation in the form of tables, allowing you maximum flexibility within the PIM.
Stars: ✭ 20 (-33.33%)
Mutual labels:  attribute
vue-auto-form
A vue2 component that helpers to easily create basic forms with automatic insert and update events, and automatic reactive validation.
Stars: ✭ 39 (+30%)
Mutual labels:  auto
rename-keys
Modify/rename the keys of the own enumerable properties of an object.
Stars: ✭ 28 (-6.67%)
Mutual labels:  properties
notary
A contracts broker that provides a declarative way of sharing, validating & discovering contracts between multiple projects.
Stars: ✭ 16 (-46.67%)
Mutual labels:  contracts
FaceAttributeManipulation
An implementation of Learning Residual Images for Face Attribute Manipulation
Stars: ✭ 52 (+73.33%)
Mutual labels:  attribute
xsdata
Naive XML & JSON Bindings for python
Stars: ✭ 144 (+380%)
Mutual labels:  code-generator
ardielle-tools
No description or website provided.
Stars: ✭ 17 (-43.33%)
Mutual labels:  code-generator
auto-dark-mode
IDEA plugin to automatically apply system theme settings on macOS and Windows.
Stars: ✭ 35 (+16.67%)
Mutual labels:  auto
VuetiForm
Interactive Vuetify Form Generator with Validation & Input Styling 🎉
Stars: ✭ 60 (+100%)
Mutual labels:  code-generator
AutoFormatInputWatcher
This repository contains input watcher for auto formatting digits in edit text
Stars: ✭ 15 (-50%)
Mutual labels:  auto

python-autoclass

Write compact python classes

Python versions Build Status Tests Status codecov

Documentation PyPI Downloads Downloads per week GitHub stars

This is the readme for developers. The documentation for users is available here: https://smarie.github.io/python-autoclass/

Want to contribute ?

Contributions are welcome ! Simply fork this project on github, commit your contributions, and create pull requests.

Here is a non-exhaustive list of interesting open topics: https://github.com/smarie/python-autoclass/issues

Running the tests

This project uses pytest.

pytest -v autoclass/tests/

You may need to install requirements for setup beforehand, using

pip install -r ci_tools/requirements-test.txt

Packaging

This project uses setuptools_scm to synchronise the version number. Therefore the following command should be used for development snapshots as well as official releases:

python setup.py egg_info bdist_wheel rotate -m.whl -k3

You may need to install requirements for setup beforehand, using

pip install -r ci_tools/requirements-setup.txt

Generating the documentation page

This project uses mkdocs to generate its documentation page. Therefore building a local copy of the doc page may be done using:

mkdocs build -f docs/mkdocs.yml

You may need to install requirements for doc beforehand, using

pip install -r ci_tools/requirements-doc.txt

Generating the test reports

The following commands generate the html test report and the associated badge.

pytest --junitxml=junit.xml -v autoclass/tests/
ant -f ci_tools/generate-junit-html.xml
python ci_tools/generate-junit-badge.py

PyPI Releasing memo

This project is now automatically deployed to PyPI when a tag is created. Anyway, for manual deployment we can use:

twine upload dist/* -r pypitest
twine upload dist/*

Merging pull requests with edits - memo

Ax explained in github ('get commandline instructions'):

git checkout -b <git_name>-<feature_branch> master
git pull https://github.com/<git_name>/python-autoclass.git <feature_branch> --no-commit --ff-only

if the second step does not work, do a normal auto-merge (do not use rebase!):

git pull https://github.com/<git_name>/python-autoclass.git <feature_branch> --no-commit

Finally review the changes, possibly perform some modifications, and commit.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].