প্রকল্প সম্পর্কে

## এটি কী `liege` হলো বেলজিয়ামের Liège-এর Open Data Platform দ্বারা প্রকাশিত ওপেন ডেটাসেটগুলোর জন্য একটি asynchronous Python ক্লায়েন্ট। এটি প্ল্যাটফর্মের API-কে র‍্যাপ (wrap) করে যাতে Python কোড — সাধারণত একটি async ইভেন্ট লুপের ভেতরে — raw HTTP রিকোয়েস্ট এবং JSON পার্সিংয়ের ঝামেলা ছাড়াই টাইপড অবজেক্ট হিসেবে রেকর্ডগুলো সংগ্রহ করতে পারে। প্যাকেজটি মূলত শুধুমাত্র পার্কিং ডেটা সংগ্রহের জন্য লেখা হয়েছিল, তবে README-তে উল্লেখ করা হয়েছে যে কোডবেসটি এমনভাবে সাজানো হয়েছে যাতে একই প্ল্যাটফর্মের অতিরিক্ত ডেটাসেট সহজেই যোগ করা যায়। ## ইনস্টলেশন ```bash pip install liege ``` ## কভার করা ডেটাসেট README-তে দুটি ডেটাসেটের কথা উল্লেখ করা হয়েছে: - **Disabled parking spaces / Stationnement PMR** — ১০৬২টি লোকেশন। - **Garages / Les parkings voitures hors voirie** — ৩২টি লোকেশন। প্রতিটি ডেটাসেট একটি `limit` প্যারামিটার (ডিফল্ট ১০) দিয়ে কুয়েরি করা হয়, যা কতটি ফলাফল ফেরত আসবে তা নিয়ন্ত্রণ করে। ### প্রতিবন্ধী পার্কিং ফিল্ডসমূহ `spot_id` (int), `number` (int), `address` (str), `municipality` (str), `city` (str), `status` (str), `longitude` (float), `latitude` (float), `created_at` (datetime), `updated_at` (datetime)। ### গ্যারেজ ফিল্ডসমূহ `name` (string), `capacity` (int), `charging_stations` (int), `address` (string), `municipality` (string), `city` (string), `provider` (string), `schedule` (string), `longitude` (float), `latitude` (float), `created_at` (datetime), `updated_at` (datetime)। ## ব্যবহারের উদাহরণ ক্লায়েন্টটি একটি async context manager হিসেবে ডিজাইন করা হয়েছে: ```python import asyncio from liege import ODPLiege async def main() -> None: async with ODPLiege() as client: garages = await client.garages(limit=10) disabled_parkings = await client.disabled_parkings(limit=10) print(garages) print(disabled_parkings) asyncio.run(main()) ``` ## নথিভুক্ত ব্যবহারের ক্ষেত্র README-তে NIPKaart.nl-এর কথা উল্লেখ করা হয়েছে, যা ব্যবহারকারী এবং পৌরসভার দেওয়া ডেটা ব্যবহার করে প্রতিবন্ধী পার্কিং স্পেসের ম্যাপ তৈরি করে। এটি মূলত নেদারল্যান্ডসে কাজ করে তবে বিদেশ থেকে ডেটা প্রসেস করার পরিকল্পনা জানিয়েছে, যেখানে এই ক্লায়েন্টটি কার্যকর হবে। ## ডেভেলপমেন্ট সেটআপ প্রজেক্টটি ডিপেন্ডেন্সি ম্যানেজমেন্টের জন্য Poetry ব্যবহার করে এবং এর জন্য Python 3.12+ এবং Poetry প্রয়োজন। ক্লোন করার পর: ```bash poetry install ``` Poetry ডিফল্টভাবে ডিপেন্ডেন্সিগুলোর জন্য একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করে। লিন্টিং এবং টেস্টিং `prek` ফ্রেমওয়ার্কের মাধ্যমে সংযুক্ত, যা প্রতিটি কমিটে চেক চালায়: ```bash poetry run prek install poetry run prek run --all-files ``` টেস্টের জন্য pytest ব্যবহৃত হয় এবং স্ন্যাপশট টেস্ট syrupy দ্বারা পরিচালিত হয়: ```bash poetry run pytest poetry run pytest --snapshot-update ``` একটি Dev Container কনফিগারেশন প্রদান করা হয়েছে, যাতে এনভায়রনমেন্টটি সরাসরি Visual Studio Code বা GitHub CodeSpace-এ শুরু করা যায়। ## README-তে প্রজেক্ট সংকেত ব্যাজ ব্লকটি নির্দেশ করে যে এটি একটি পরীক্ষামূলক প্রজেক্ট পর্যায়, চলমান রক্ষণাবেক্ষণ, সক্রিয় কমিট অ্যাক্টিভিটি, GitHub-এ প্রকাশিত রিলিজ, PyPI-তে ডাউনলোড পরিসংখ্যানসহ ডিস্ট্রিবিউশন, বিল্ড এবং টাইপিং ওয়ার্কফ্লো স্ট্যাটাস, কোড কভারেজ রিপোর্টিং এবং একটি OpenSSF Scorecard ব্যাজ। প্রজেক্টটি একটি আলাদা CONTRIBUTING.md-এ কন্ট্রিবিউশন নির্দেশিকা নথিভুক্ত করেছে এবং MIT লাইসেন্সের (কপিরাইট ২০২২–২০২৬ Klaas Schoute) অধীনে প্রকাশিত হয়েছে। ## উপযোগিতা এটি একটি ছোট, একক-উদ্দেশ্যের API ক্লায়েন্ট লাইব্রেরি: যখন আপনার একটি async Python অ্যাপ্লিকেশনের ভেতরে Liège ওপেন ডেটা (বর্তমানে পার্কিং-সম্পর্কিত) প্রয়োজন হয়, তখন এটি কার্যকর। এছাড়াও একই ODP প্ল্যাটফর্মের অন্যান্য ডেটাসেট র‍্যাপ করার জন্য এটি একটি টেমপ্লেট হিসেবে উপযোগী। এটি কোনো ডেটা স্টোর, সার্ভার বা এন্ড-ইউজার অ্যাপ্লিকেশন নয়।