Skip to content

Instantly share code, notes, and snippets.

@ozcanyarimdunya
Created December 3, 2020 21:59
Show Gist options
  • Select an option

  • Save ozcanyarimdunya/47670dd506f11adf5ec16dd22200c090 to your computer and use it in GitHub Desktop.

Select an option

Save ozcanyarimdunya/47670dd506f11adf5ec16dd22200c090 to your computer and use it in GitHub Desktop.
Monja is mongo jinja query evaluator

Monja

Monja is mongo jinja query evaluator

Installation

pip install -r requirements.txt

Usage

from monja import Monja

Monja.configure(queries_path='path-to-monja-queries-folder')
data1: list = Monja.get('1')
data2: list = Monja.get('1.monja')
import os
from jinja2 import FileSystemLoader, Environment
class Monja:
"""
Monja
~~~~~
Monja is mongo jinja query evaluator
>>> from monja import Monja
>>> Monja.configure(queries_path='path-to-monja-queries-folder')
>>> data1: list = Monja.get('1')
>>> data2: list = Monja.get('1.monja')
"""
__slots__ = ()
@staticmethod
def configure(queries_path):
os.environ.setdefault('MONJA_QUERIES_FOLDER', str(queries_path))
@staticmethod
def get(name, **kwargs):
query_path = os.environ.get('MONJA_QUERIES_FOLDER')
if query_path is None:
raise EnvironmentError('MONJA_QUERIES_FOLDER is not set as environment variable. '
'Set MONJA_QUERIES_FOLDER as environment variable or '
'run `Monja.configure()` before using it.')
if not name.endswith('.monja'):
name += '.monja'
if not os.path.isfile(os.path.join(query_path, name)):
raise FileNotFoundError('No such query file: {}'.format(name))
loader = FileSystemLoader(searchpath=query_path)
env = Environment(loader=loader)
template = env.get_template(name)
string = template.render(**kwargs)
return eval(string)
Jinja2==2.11.2
MarkupSafe==1.1.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment