Metadata-Version: 2.1
Name: django-xformula
Version: 0.1.3
Summary: Django query evaluator, is built on top of XFormula language front-end.
License: MIT
Author: Ertuğrul Keremoğlu
Author-email: ertugkeremoglu@gmail.com
Requires-Python: >=3.11,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: django
Requires-Dist: xformula (>=0.1.1,<0.2.0)
Description-Content-Type: text/markdown

# django-xformula

Django query evaluator, is built on top of XFormula language front-end.

---

**This project is still in development**.

If you're interested, you may check the note in
[XFormula](https://github.com/ertgl/xformula) repository.

---


## Features:

- Bidirectional operators
- - Same syntax for both Python and Django query evaluation
- - Operations contain at least one `QuerySet`, will be evaluated as `QuerySet`
- - Operations contain at least one `Q`, will be evaluated as `Q`
- - Operations contain at least one `Combinable`, will be evaluated as `Combinable`
- - Operations contain at least one `Field`, will be evaluated as `Combinable`
- - Operations contain at least one `Model` instance, will be evaluated as `Value`
    which contains the model instance's primary key
- - Other operations work like how Python does
- Zero built-in variable by defaults
- - When a variable name is used but does not exist in the specified built-ins,
    it will be evaluated as `F` object
- Customizable attribute getter; manage which attributes can be used in formulas
  (Getting an attribute of an object is forbidden by default, and raises
  `ForbiddenAttribute` error which inherits Django's `PermissionDenied` class)
- Customizable caller; manage which functions can be called in formulas
  (Calling a callable is forbidden by default, and raises `ForbiddenCall` error
  which inherits Django's `PermissionDenied` class)


## License

[MIT](https://github.com/ertgl/django-xformula/blob/main/LICENSE)

