Skip to main content

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 alias tidak diisi, maka:
    • Jika function_name tersedia: alias = function_name

    • Jika function_name kosong: 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modul_wrapper-1.0.7.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modul_wrapper-1.0.7-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

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

Hashes for modul_wrapper-1.0.7.tar.gz
Algorithm Hash digest
SHA256 76969b4ae82daac252c5fcb4907533a563b4e64596fad929d843150e6aca4ba5
MD5 721c03f33effabe69f8a2774a65578a3
BLAKE2b-256 946555a82d06cc0bd0719e9879338fc14a2be5f06b9a26097d49582f6a0fd044

See more details on using hashes here.

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

Hashes for modul_wrapper-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a42984fb33faea49b74d1607a2a4e80b3b311cd4be1385d5861900b40f2782b4
MD5 6301ea051e260df61f4d892e08793c12
BLAKE2b-256 b11521110dbe8e20efa5dd1f6ec5b0b546872a2c5bf2a8ae807f9eeec041b5a3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page