Skip to content

Modules and Imports — ماڈیولز اور درآمد

The Urdu Programming Language has a module system that lets you split code across files, use built-in library modules, and share code with برآمد (export). This document covers all import and export forms.

اردو: اردو پروگرامنگ لینگویج میں ایک ماڈیول نظام موجود ہے جو کوڈ کو فائلوں میں تقسیم کرنے، بنا بنایا لائبریری ماڈیولز استعمال کرنے، اور برآمد کے ذریعے کوڈ شیئر کرنے کی سہولت دیتا ہے۔ یہ دستاویز درآمد اور برآمد کی تمام شکلوں کا احاطہ کرتی ہے۔


Table of Contents

  1. Why Modules?
  2. درآمد — Import Syntax
  3. Named Imports
  4. Default Imports
  5. Aliased Imports — بطور
  6. Namespace Imports
  7. برآمد — Exports
  8. Built-in Modules
  9. Installing Library Dependencies
  10. Dynamic Imports
  11. Module Examples

Why Modules? — ماڈیولز کیوں؟

Modules let you: - Split a large program into small, focused files - Reuse code across projects - Control what is publicly visible (برآمد) vs internal - Use built-in and third-party libraries

اردو: ماڈیولز آپ کو یہ سہولتیں دیتے ہیں: - بڑے پروگرام کو چھوٹی، مرکوز فائلوں میں تقسیم کریں - مختلف منصوبوں میں کوڈ دوبارہ استعمال کریں - کنٹرول کریں کہ کیا عوامی (برآمد) ہو اور کیا اندرونی - بنا بنایا اور تھرڈ پارٹی لائبریریاں استعمال کریں


درآمد — Import Syntax

All import statements begin with the keyword درآمد. The source path follows the keyword سے.

اردو: تمام درآمد بیانات کلیدی لفظ درآمد سے شروع ہوتے ہیں۔ ذریعہ راستہ کلیدی لفظ سے کے بعد آتا ہے۔

General form:

درآمد ... سے "ماڈیول_راستہ";

Named Imports — نامزد درآمد

Import specific names that the module exports.

اردو: ماڈیول کی برآمد کردہ مخصوص ناموں کو درآمد کریں۔

// Single name
درآمد { ریاضی_مددگار } سے "./حساب";

// Multiple names
درآمد { جمع, تفریق, ضرب, تقسیم } سے "./آپریشن";

// Usage
لکھو(جمع(3, 4));       // 7
لکھو(ضرب(5, 6));       // 30
// Import from built-in module
درآمد { روٹر, درخواست, جواب } سے "اردو/ویب";
درآمد { ذہین_ماڈل, پیغام } سے "اردو/ذہین";
درآمد { فائل_پڑھو, فائل_لکھو } سے "اردو/فائلیں";

Default Imports — پہلے سے طے شدہ درآمد

A module can export one default value. Import it without braces.

اردو: ایک ماڈیول ایک پہلے سے طے شدہ قدر برآمد کر سکتا ہے۔ اسے بغیر قوسین کے درآمد کریں۔

// Default import — any name you choose
درآمد ایپ سے "./ایپلیکیشن";
درآمد ڈیٹا_بیس سے "./ڈیٹا_بیس";
درآمد لاگر سے "./لاگر";

// Usage
ایپ.شروع_کرو();
ڈیٹا_بیس.جوڑو("mongodb://localhost");
// Mix default and named imports
درآمد روٹر, { GET, POST, PUT } سے "اردو/ویب";
درآمد ماڈل, { میدان, توثیق } سے "اردو/ڈیٹا_بیس";

Aliased Imports — بطور

Use بطور to rename an import to avoid conflicts or improve readability.

اردو: تنازعات سے بچنے یا پڑھنے میں آسانی کے لیے درآمد کا نام بدلنے کے لیے بطور استعمال کریں۔

// Rename a single import
درآمد { لکھو بطور لاگ } سے "اردو/لاگ";
درآمد { ترتیب_دو بطور ترتیب } سے "./مددگار";

لاگ("سرور شروع ہو گیا");
// Rename multiple imports
درآمد {
    صارف_بنائیں بطور نیا_صارف,
    صارف_حاصل_کرو بطور صارف_تلاش_کرو,
    صارف_مٹائیں بطور صارف_ہٹائیں
} سے "./صارف_سروس";

مستقل صارف = انتظار نیا_صارف({ نام: "احمد" });
// Avoid name collision from two modules
درآمد { جوڑو بطور فہرست_جوڑو } سے "./فہرست_مددگار";
درآمد { جوڑو بطور متن_جوڑو } سے "./متن_مددگار";

لکھو(فہرست_جوڑو([1, 2], [3, 4]));
لکھو(متن_جوڑو("اردو", " پروگرامنگ"));

Namespace Imports — نام فضا درآمد

Import everything a module exports as a single object.

اردو: کسی ماڈیول کی تمام برآمدات کو ایک واحد شے کے طور پر درآمد کریں۔

درآمد * بطور ریاضی_ماڈیول سے "./ریاضی";

لکھو(ریاضی_ماڈیول.جذر(25));      // 5
لکھو(ریاضی_ماڈیول.قوت(2, 8));    // 256
لکھو(ریاضی_ماڈیول.PI);            // 3.14159...
درآمد * بطور فائل سے "اردو/فائلیں";

مستقل متن_شے = انتظار فائل.پڑھو("data.txt");
انتظار فائل.لکھو("output.txt", متن_شے);

برآمد — Exports

Named exports — نامزد برآمد

اردو: نامزد برآمد:

// exports.urdu
برآمد مستقل PI = 3.14159265358979;

برآمد فنکشن دائرے_کا_رقبہ(r) {
    واپس PI * r * r;
}

برآمد کلاس ہندسہ {
    تعمیر(نام) {
        یہ.نام = نام;
    }
}

// Or export a list at the end
مستقل الف = 1;
مستقل ب = 2;
فنکشن ج() {}
برآمد { الف, ب, ج };

Default export — پہلے سے طے شدہ برآمد

اردو: پہلے سے طے شدہ برآمد:

// سروس.urdu
کلاس ای_میل_سروس {
    تعمیر(ترتیبات) {
        یہ.ترتیبات = ترتیبات;
    }

    غیر_متزامن بھیجو(بھیجنے_والا, موصول_کنندہ, موضوع, جسم) {
        // send email
    }
}

برآمد پہلے_سے_طے ای_میل_سروس;

Re-export (barrel files) — دوبارہ برآمد

اردو: ذیلی ماڈیولز سے دوبارہ برآمد (بیرل فائلیں):

// index.urdu — re-export everything from submodules
برآمد { صارف_بنائیں, صارف_حاصل_کرو } سے "./صارف";
برآمد { آرڈر_بنائیں, آرڈر_حاصل_کرو } سے "./آرڈر";
برآمد پہلے_سے_طے سے "./ڈیٹا_بیس";

Built-in Modules — بنا بنایا ماڈیولز

The following modules ship with the Urdu Programming Language runtime.

اردو: درج ذیل ماڈیولز اردو پروگرامنگ لینگویج رن ٹائم کے ساتھ آتے ہیں۔

اردو/ویب — Web framework

اردو: ویب فریم ورک — HTTP سرور اور روٹنگ کے لیے:

درآمد { ایپ_بنائیں, روٹر, JSON_جواب, HTML_جواب } سے "اردو/ویب";

مستقل ایپ = ایپ_بنائیں();
مستقل روٹ = روٹر();

روٹ.حاصل_کرو("/", (درخواست, جواب) => {
    جواب.بھیجو("مرحبا، اردو ویب!");
});

روٹ.حاصل_کرو("/api/صارفین", غیر_متزامن (درخواست, جواب) => {
    مستقل صارفین = انتظار ڈیٹا_بیس.تمام_حاصل_کرو("users");
    JSON_جواب(جواب, صارفین);
});

ایپ.استعمال(روٹ);
ایپ.سنو(3000, () => لکھو("سرور 3000 پر چل رہا ہے"));

اردو/ذہین — AI / ML

اردو: مصنوعی ذہانت اور مشین لرننگ:

درآمد { ذہین_ماڈل, پیغام, نظام_پیغام } سے "اردو/ذہین";

مستقل ماڈل = نیا ذہین_ماڈل({ ماڈل: "gpt-4" });

مستقل جواب = انتظار ماڈل.چیٹ([
    نظام_پیغام("آپ اردو میں مدد کرتے ہیں"),
    پیغام("صارف", "اردو پروگرامنگ کے بارے میں بتائیں")
]);

لکھو(جواب.متن);

اردو/ڈیٹا_بیس — Database

اردو: ڈیٹا بیس — ORM اور SQL/NoSQL:

درآمد { ڈیٹا_بیس, ماڈل, میدان } سے "اردو/ڈیٹا_بیس";

مستقل ڈی_بی = نیا ڈیٹا_بیس("sqlite:///app.db");

مستقل صارف_ماڈل = ڈی_بی.ماڈل("صارف", {
    نام:   میدان.متن({ لازمی: سچ }),
    ای_میل: میدان.متن({ منفرد: سچ }),
    عمر:  میدان.عدد({ پہلے_سے_طے: 0 })
});

// CRUD
مستقل صارف = انتظار صارف_ماڈل.بنائیں({ نام: "احمد", ای_میل: "a@b.com", عمر: 25 });
مستقل تمام = انتظار صارف_ماڈل.تمام_حاصل_کرو();
مستقل ملا = انتظار صارف_ماڈل.تلاش_کرو({ نام: "احمد" });

اردو/رمز — Cryptography

اردو: خفیہ نگاری — ہیشنگ اور انکرپشن:

درآمد { ہیش, خفیہ_کرو, ظاہر_کرو, بے_ترتیب_بائٹس } سے "اردو/رمز";

مستقل خفیہ = انتظار ہیش("sha256", "میرا_پاس_ورڈ");
لکھو(خفیہ);

مستقل کلید = بے_ترتیب_بائٹس(32);
مستقل خفیہ_متن = انتظار خفیہ_کرو("AES-256", کلید, "خفیہ پیغام");
مستقل اصل_متن = انتظار ظاہر_کرو("AES-256", کلید, خفیہ_متن);

اردو/کرل — HTTP Client

اردو: HTTP کلائنٹ — درخواستیں بھیجنے کے لیے:

درآمد { کرل, GET, POST, بہاؤ_کرل } سے "اردو/کرل";

// GET
مستقل ڈیٹا = انتظار GET("https://api.example.com/صارفین");
لکھو(JSON_پڑھو(ڈیٹا));

// POST with JSON
مستقل جواب = انتظار POST("https://api.example.com/صارفین", {
    جسم: { نام: "احمد", ای_میل: "a@b.com" },
    سرخیاں: { "Content-Type": "application/json" }
});

// Custom request
مستقل نتیجہ = انتظار کرل("https://api.example.com/ڈیٹا", {
    طریقہ: "PUT",
    ٹائم_آؤٹ: 5000,
    سرخیاں: { Authorization: "Bearer token123" },
    جسم: JSON_لکھو({ حیثیت: "فعال" })
});

اردو/کھرچنی — Web Scraper

اردو: ویب سکریپر — ویب صفحات سے ڈیٹا نکالنے کے لیے:

درآمد { صفحہ_کھولو, منتخب_کرو, لنک_جات } سے "اردو/کھرچنی";

مستقل صفحہ = انتظار صفحہ_کھولو("https://example.com");

مستقل عنوان = منتخب_کرو(صفحہ, "h1").پہلا?.متن;
مستقل تمام_لنک = لنک_جات(صفحہ);

لکھو(عنوان);
لکھو(`${تمام_لنک.لمبائی} لنک ملے`);

اردو/فائلیں — File System

اردو: فائل سسٹم — فائلوں کو پڑھنے اور لکھنے کے لیے:

درآمد { پڑھو, لکھو, موجود_ہے, مٹائیں, فہرست } سے "اردو/فائلیں";

// Read
مستقل متن_شے = انتظار پڑھو("data.txt", "utf8");

// Write
انتظار لکھو("output.txt", "اردو مواد", "utf8");

// Check existence
اگر (انتظار موجود_ہے("config.json")) {
    مستقل ترتیبات = JSON_پڑھو(انتظار پڑھو("config.json"));
}

// List directory
مستقل فائلیں = انتظار فہرست("./ڈیٹا");
کے_لیے (مستقل فائل کا فائلیں) {
    لکھو(فائل.نام);
}

اردو/لاگ — Logging

اردو: لاگنگ — منظم لاگ پیغامات کے لیے:

درآمد { لاگر, سطح } سے "اردو/لاگ";

مستقل لاگ = نیا لاگر({
    سطح: سطح.معلومات,
    فارمیٹ: "json",
    فائل: "app.log"
});

لاگ.معلومات("سرور شروع ہوا", { بندرگاہ: 3000 });
لاگ.انتباہ("پرانا API استعمال ہو رہا ہے", { راستہ: "/old-api" });
لاگ.غلطی("ڈیٹا بیس سے رابطہ نہیں", { غلطی: "connection refused" });

اردو/دھاگہ — Threading / Workers

اردو: دھاگے — بھاری حسابات کو الگ دھاگے میں چلانے کے لیے:

درآمد { دھاگہ, پول } سے "اردو/دھاگہ";

// Run heavy computation off main thread
مستقل نتیجہ = انتظار دھاگہ.چلاؤ(غیر_متزامن () => {
    // Runs in worker thread
    واپس ہاوی_حساب();
});

// Thread pool
مستقل ورکر_پول = نیا پول({ سائز: 4 });
مستقل نتائج = انتظار Promise.all(
    ڈیٹا.تبدیل(شے => ورکر_پول.چلاؤ(() => پروسیس_کرو(شے)))
);

اردو/تاریخ — Date and Time

اردو: تاریخ اور وقت کے آپریشنز:

درآمد { تاریخ, وقت_منطقہ, فارمیٹ } سے "اردو/تاریخ";

مستقل اب = نیا تاریخ();
لکھو(فارمیٹ(اب, "YYYY-MM-DD"));            // 2024-01-15
لکھو(فارمیٹ(اب, "DD/MM/YYYY hh:mm"));      // 15/01/2024 14:30

مستقل کل = تاریخ.اب() + 86400000;
مستقل پاکستان = وقت_منطقہ("Asia/Karachi");
لکھو(پاکستان.فارمیٹ(اب));

اردو/سوکٹ — WebSockets

اردو: ویب ساکٹس — حقیقی وقت دو طرفہ مواصلت کے لیے:

درآمد { سوکٹ_سرور, سوکٹ_کلائنٹ } سے "اردو/سوکٹ";

// Server
مستقل سرور = نیا سوکٹ_سرور({ بندرگاہ: 8080 });

سرور.رابطہ_پر(غیر_متزامن (سوکٹ) => {
    لکھو("نیا کلائنٹ آیا");

    سوکٹ.پیغام_پر(غیر_متزامن (ڈیٹا) => {
        لکھو(`ملا: ${ڈیٹا}`);
        سوکٹ.بھیجو(`آپ نے کہا: ${ڈیٹا}`);
    });

    سوکٹ.بند_پر(() => لکھو("کلائنٹ چلا گیا"));
});

// Client
مستقل کلائنٹ = نیا سوکٹ_کلائنٹ("ws://localhost:8080");
انتظار کلائنٹ.جوڑو();
کلائنٹ.بھیجو("مرحبا سرور!");

Module availability summary — ماڈیولز کا خلاصہ

Module Purpose Install required?
اردو/ویب HTTP server, routing Yes
اردو/ذہین AI / LLM integration Yes
اردو/ڈیٹا_بیس ORM, SQL/NoSQL Yes
اردو/رمز Hashing, encryption Yes
اردو/کرل HTTP client Yes
اردو/کھرچنی Web scraping Yes
اردو/فائلیں File I/O Built-in
اردو/لاگ Structured logging Built-in
اردو/دھاگہ Worker threads Built-in
اردو/تاریخ Date / time Built-in
اردو/سوکٹ WebSocket Yes

Installing Library Dependencies — لائبریری انحصارات نصب کرنا

Use the urdu نصب command to install modules that require dependencies.

اردو: انحصارات کی ضرورت والے ماڈیولز نصب کرنے کے لیے urdu نصب کمانڈ استعمال کریں۔

python -m urdu نصب "اردو/ویب"
python -m urdu نصب "اردو/ذہین"
python -m urdu نصب "اردو/ڈیٹا_بیس"
python -m urdu نصب "اردو/رمز"
python -m urdu نصب "اردو/کرل"
python -m urdu نصب "اردو/کھرچنی"
python -m urdu نصب "اردو/سوکٹ"

Install multiple at once:

اردو: ایک ساتھ کئی نصب کریں:

python -m urdu نصب "اردو/ویب" "اردو/ذہین" "اردو/ڈیٹا_بیس"

Dynamic Imports — متحرک درآمد

Import a module at runtime based on a condition or variable. Returns a Promise.

اردو: کسی شرط یا متغیر کی بنیاد پر رن ٹائم میں ماڈیول درآمد کریں۔ یہ ایک وعدہ واپس کرتا ہے۔

// Load module only when needed
غیر_متزامن فنکشن پی_ڈی_ایف_بنائیں(ڈیٹا) {
    مستقل { پی_ڈی_ایف_رائٹر } = انتظار متحرک_چلاؤ("اردو/پی_ڈی_ایف");
    واپس پی_ڈی_ایف_رائٹر.بنائیں(ڈیٹا);
}
// Load locale-specific module
غیر_متزامن فنکشن ترجمہ_لوڈ(زبان) {
    کوشش {
        مستقل ماڈیول = انتظار متحرک_چلاؤ(`./ترجمہ/${زبان}`);
        واپس ماڈیول.پہلے_سے_طے;
    } پکڑو {
        مستقل پہلے_سے_طے = انتظار متحرک_چلاؤ("./ترجمہ/اردو");
        واپس پہلے_سے_طے.پہلے_سے_طے;
    }
}

مستقل لغت = انتظار ترجمہ_لوڈ("اردو");
لکھو(لغت.خوش_آمدید);    // مرحبا
// Conditional feature loading
متغیر رپورٹ_ماڈیول;

اگر (process.env.ENABLE_REPORTS === "true") {
    رپورٹ_ماڈیول = انتظار متحرک_چلاؤ("./رپورٹیں");
}

اگر (رپورٹ_ماڈیول) {
    انتظار رپورٹ_ماڈیول.ماہانہ_رپورٹ();
}

Module Examples — ماڈیول کی مثالیں

A complete multi-file application structure — مکمل کثیر فائل ایپلیکیشن ڈھانچہ

اردو: ایک مکمل کثیر فائل ایپلیکیشن کی ساخت:

ماڈل/صارف.urdu — User model

درآمد { ڈیٹا_بیس, میدان } سے "اردو/ڈیٹا_بیس";
درآمد { ہیش } سے "اردو/رمز";

برآمد کلاس صارف_ماڈل {
    جامد غیر_متزامن بنائیں(ڈیٹا) {
        ڈیٹا.پاس_ورڈ = انتظار ہیش("bcrypt", ڈیٹا.پاس_ورڈ);
        واپس ڈیٹا_بیس.داخل_کرو("صارفین", ڈیٹا);
    }

    جامد غیر_متزامن تلاش_کرو(ای_میل) {
        واپس ڈیٹا_بیس.ایک_حاصل_کرو("صارفین", { ای_میل });
    }
}

راستے/تصدیق.urdu — Auth routes

درآمد { روٹر, JSON_جواب } سے "اردو/ویب";
درآمد { صارف_ماڈل } سے "../ماڈل/صارف";

مستقل راستہ = روٹر();

راستہ.پوسٹ("/رجسٹر", غیر_متزامن (درخواست, جواب) => {
    کوشش {
        مستقل صارف = انتظار صارف_ماڈل.بنائیں(درخواست.جسم);
        JSON_جواب(جواب, { پیغام: "رجسٹریشن کامیاب", id: صارف.id }, 201);
    } پکڑو (غ) {
        JSON_جواب(جواب, { غلطی: غ.message }, 400);
    }
});

برآمد پہلے_سے_طے راستہ;

مرکز.urdu — Main entry point

درآمد { ایپ_بنائیں } سے "اردو/ویب";
درآمد { لاگر } سے "اردو/لاگ";
درآمد تصدیق_راستہ سے "./راستے/تصدیق";

مستقل ایپ = ایپ_بنائیں();
مستقل لاگ = نیا لاگر();

ایپ.استعمال("/تصدیق", تصدیق_راستہ);

ایپ.سنو(3000, () => {
    لاگ.معلومات("سرور شروع ہوا", { بندرگاہ: 3000 });
});

Utility module pattern — یوٹیلٹی ماڈیول طریقہ

اردو: مددگار فنکشنز کو ایک علیحدہ ماڈیول میں منظم کریں:

// utils/validation.urdu
برآمد فنکشن ای_میل_درست(ای_میل) {
    واپس /^[^\s@]+@[^\s@]+\.[^\s@]+$/.تجربہ(ای_میل);
}

برآمد فنکشن فون_درست(نمبر) {
    واپس /^((\+92)|(0))(3\d{9})$/.تجربہ(نمبر);
}

برآمد فنکشن پاس_ورڈ_درست(پاس_ورڈ) {
    واپس پاس_ورڈ.لمبائی >= 8 اور
           /[A-Z]/.تجربہ(پاس_ورڈ) اور
           /[0-9]/.تجربہ(پاس_ورڈ);
}

// Usage in another file
درآمد { ای_میل_درست, فون_درست, پاس_ورڈ_درست } سے "./utils/validation";

لکھو(ای_میل_درست("test@example.com"));   // true
لکھو(فون_درست("03001234567"));            // true
لکھو(پاس_ورڈ_درست("Secure123"));         // true