Skip to content

elenakrittik/node-require

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

node-require

Like Node.js's require(), but with more supported file formats.

Features

  • Importing modules from higher folders;
  • Loading JSON, Toml, YAML and BSON files natively;
  • Easily extensible.

Installing

Install base module:

# Linux / MacOS
python3 -m pip install -U node-require

# Windows
py -3 -m pip install -U node-require

Optional Dependencies

  • orjson: Faster JSON decoding;
  • ujson: Alternarive for orjson;
  • toml: Support for Toml;
  • yaml: Support for YAML;
  • bson: Support for BSON.

You can install all of the language support dependencies at once with "node-require[all_langs]".

Quick notes

This lib does not support importing builtin modules or site-packages (modules installed with pip).

Consider using usual import, or if you need a dynamic import, use Python's builtin importlib.import_module

Usage

Yeah, that's bad example, but i'm can't come up with a best one..

Example directory structure:

src/
    tests/
        test.py
    config.json
    regex.py
    main.py

src/main.py:

import os
import importlib

for file in os.listdir('./tests'):
    if file.endswith('.py'):
        importlib.import_module(f'tests.{file[:-3]}').run()

src/regex.py:

import re

PWD = re.compile("[a-zA-Z0-9_\.]{12,16}")

src/config.json:

{
    "user": {
        "name": "Jonh",
        "password": "Fluffy_Gim19"
    }
}

src/tests/test.py:

from require import require
password_pattern = require('../regex.py').PWD
password = require('../config.json')['user']['password']

def run():
    assert password_pattern.match(password) != None

Extending

See guide on this

About

Support for file require()ing, like in Node.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages