Metadata-Version: 2.1
Name: promplate
Version: 0.1.2
Summary: cross-language prompt engineering framework
License: MIT
Author: Muspi Merol
Author-email: admin@muspimerol.site
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: aiofiles (>=23.2,<24.0)
Requires-Dist: httpx (>=0.24,<0.25)
Requires-Dist: openai (>=0.27,<0.28)
Description-Content-Type: text/markdown

# Promplate

> _Promplate_ is for **promp**t + tem**plate**

I want to build a cross-language prompt engineering framework.

## IDE Support 🌹

I try to make the syntax compatible with `Jinja2`.

## Future Features (or TODOs?)

- [x] (lazy) template compiling
- [x] support any evaluatable expression inside template like `{{ [ i for i in range(n) ] }}`
- [ ] support chains and agents
- [ ] error handling
- [ ] template rich printing
- [ ] implement component syntax
  - maybe like `{% Component arg1 arg2 kwarg1=1 kwarg2=2 %}`
- [ ] support something like [`named slot` syntax](https://svelte.dev/docs#template-syntax-slot-slot-name-name)
  - or maybe not _named_ slot, it can be a special **nullable parameter**
  - a slot may be like `{% slot ~ Name %}` and it will generate `name = context.get("name")`
  - the used component only renders once, after the end tag (a buffer seems to be unavoidable)
  - an _elevation_ of slot statements may be the necessary and sufficient condition
- [ ] support while loop and isolated variable declaration
- [ ] `else` and `elif` tag
- [ ] directory based routing
- [ ] caching (and cache-controls maybe?)
- [ ] implement more [loaders](https://jinja.palletsprojects.com/api/#loaders)
- [ ] multi-file chat template

