Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/deepsourcecorp/import-x

Import anything like it is a python module
https://github.com/deepsourcecorp/import-x

import import-hook json python

Last synced: 2 months ago
JSON representation

Import anything like it is a python module

Awesome Lists containing this project

README

        




Documentation |
Get Started |
Developer Chat


DeepSource helps you ship good quality code.

---

# import-x

An ext-tensible loader to import anything like it is a python module.

Supports Python **3.6+**.

## Installation

```
pip install import-x
```

## Usage

Example json file in your path ``foo.json``:

```json
{
"why": "not",
}
```

```python
# Extend the ExtensionLoader and implement 'handle_module' method
# where you will get a module object and the path to that module.

>>> from import_x import ExtensionLoader

>>> class JsonLoader(ExtensionLoader):
extension = '.json'

auto_enable = False

@staticmethod
def handle_module(module, path):
"""
Load the json file and set as `data` attribute of the module.
"""
json_file = Path(path)
content = json_file.read_text()
try:
data = json.loads(content)
except (json.JSONDecodeError, ValueError):
data = {}
module.data = data

>>> json_imports = JsonLoader()
>>> with json_imports:
import foo
>>> foo.data
>>> {"why": "not"}
```

If you want to enable imports automatically without the context_manager then just
do ``auto_enable = True`` in your loader.

This Example ``JsonLoader`` can be used directly by importing

```python
from import_x.loaders.json_loader import JsonLoader
```

and you are ready to import all the json files.