Control Your Library With Dictionary
Project description
Modul Wrapper
Modul Wrapper adalah utilitas Python yang memungkinkan kita memuat banyak modul, class, atau fungsi dari file konfigurasi JSON. Tujuan utamanya adalah untuk mencegah bentrok penamaan (alias) dan menjaga kode tetap modular dan fleksibel.
Modul ini juga berguna untuk sistem dinamis dan environment besar dengan banyak dependensi agar tetap bersih dan terkontrol.
Modul ini mendukung:
- Modul lokal (buatan sendiri)
- Modul standar Python
- Library eksternal (seperti
requests,pandas, dll)
Contoh Penggunaan
Struktur Folder (Contoh)
project/
│
├── cfg/
│ └── modul.min
│
├── Testing/
│ └── v1/
│ └── modul1.py
│
└── app.py
Isi File: Testing/v1/modul1.py
class Testing:
def say(self):
return "Encrypted!"
Isi File: cfg/modul.min
{
"modul": [
{
"folder": "Testing",
"file": ["v1", "modul1"],
"module": "modul1",
"function_name": "Testing",
"alias": "test"
},
{
"folder": "",
"file": [],
"module": "os",
"function_name": "listdir",
"alias": ""
},
{
"folder": "",
"file": [],
"module": "requests",
"function_name": "",
"alias": ""
},
{
"folder": "",
"file": [],
"module": "datetime",
"function_name": "datetime",
"alias": "jam"
}
]
}
Contoh Testing: app.py
from Modul_Wrapper import Wrap
loader = Wrap("./cfg/modul.min", debug=False)
Test = loader.Load('test')
obj = Test()
print(obj.say()) # Encrypted!
driver = loader.Load('requests')
osmod = loader.Load("listdir")
jam = loader.Load('jam')
print(jam.now().strftime("%H:%M:%S")) # Waktu saat ini
loader.Reload('requests')
print(osmod()) # List isi direktori
print(loader.ShowModul()) # Menampilkan semua objek modul yang sudah dimuat
print(loader.ShowAlias()) # Menampilkan alias dan asal modul
Output yang Dihasilkan (Contoh)
Encrypted!
21:13:58
['cfg', 'kimin', 'modul.min', 'test.py', 'Testing', 'v1.py']
{'test': <class 'Testing.v1.app.Testing'>, 'listdir': <built-in function listdir>, 'jam': <class 'datetime.datetime'>, 'requests': <module 'requests' from '...'>}
{'test': 'Testing.v1.app', 'listdir': 'listdir', 'requests': '', 'datetime': 'datetime', 'jam': 'datetime'}
Struktur Konfigurasi Modul (modul)
Setiap entri dalam konfigurasi harus mengikuti struktur berikut:
| Key | Tipe Data | Wajib | Contoh | Deskripsi |
|---|---|---|---|---|
folder |
string |
❌ | "Testing" atau "" |
Folder dasar tempat file modul disimpan (untuk modul lokal). Kosongkan jika modul adalah pustaka standar atau eksternal. |
file |
list[string] |
❌ | ["v1", "app"] atau [] |
Daftar subfolder/nama file .py (tanpa ekstensi). Kosongkan untuk pustaka bawaan atau eksternal. |
module |
string |
✅ | "app", "os", "requests" |
Nama file modul atau nama pustaka. Bisa juga nama modul bawaan seperti os, datetime, dll. |
function_name |
string |
✅ | "Testing", "listdir", "datetime" |
Nama objek (fungsi, class, dsb) yang akan diambil dari modul. Bisa kosong jika ingin mengimpor seluruh modul. |
alias |
string |
❌ | "test", "jam" |
Nama alias untuk objek yang diimpor. Jika kosong, akan otomatis menggunakan nama objek atau modul. |
Contoh Konfigurasi dan Artinya
| Kasus | Konfigurasi | Import Python Yang Setara |
|---|---|---|
| Modul lokal | { "folder": "Testing", "file": ["v1", "app"], "module": "app", "function_name": "Testing", "alias": "test" } |
from Testing.v1.app import Testing as test |
| Fungsi dari modul standar | { "folder": "", "file": [], "module": "os", "function_name": "listdir", "alias": "" } |
from os import listdir |
| Seluruh modul eksternal | { "folder": "", "file": [], "module": "requests", "function_name": "", "alias": "" } |
import requests |
| Objek global tanpa modul eksplisit | { "folder": "", "file": [], "module": "", "function_name": "datetime", "alias": "" } |
import datetime (mengandalkan konteks global Python) |
| Fungsi dalam modul eksternal | { "folder": "", "file": [], "module": "datetime", "function_name": "datetime", "alias": "jam" } |
from datetime import datetime as jam |
Mekanisme Alias
- Jika
aliastidak diisi, maka:-
Jika
function_nametersedia:alias = function_name -
Jika
function_namekosong:alias = module -
Tujuan alias adalah agar kamu bisa memanggil objek yang sudah di-load seperti:
wrap = Wrap("modul.json") jam = wrap.Load("jam") print(jam.now())
-
Metode Penting
- Wrap(modul_path, debug=False) → Membuat objek loader dari file JSON dan menerima parameter opsional debug. Jika debug=True, informasi debug akan ditampilkan selama proses pemuatan modul.
- .Load(alias) → Mengambil objek berdasarkan alias
- .Reload(alias) → Me-reload modul tertentu
- .ShowModul() → Menampilkan dict objek yang sudah dimuat
- .ShowAlias() → Menampilkan semua alias beserta asalnya
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file modul_wrapper-1.0.7.tar.gz.
File metadata
- Download URL: modul_wrapper-1.0.7.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76969b4ae82daac252c5fcb4907533a563b4e64596fad929d843150e6aca4ba5
|
|
| MD5 |
721c03f33effabe69f8a2774a65578a3
|
|
| BLAKE2b-256 |
946555a82d06cc0bd0719e9879338fc14a2be5f06b9a26097d49582f6a0fd044
|
File details
Details for the file modul_wrapper-1.0.7-py3-none-any.whl.
File metadata
- Download URL: modul_wrapper-1.0.7-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a42984fb33faea49b74d1607a2a4e80b3b311cd4be1385d5861900b40f2782b4
|
|
| MD5 |
6301ea051e260df61f4d892e08793c12
|
|
| BLAKE2b-256 |
b11521110dbe8e20efa5dd1f6ec5b0b546872a2c5bf2a8ae807f9eeec041b5a3
|