آنچه یاد خواهید گرفت:
بعد از این دوره، میتوانید این موارد را به رزومه و کد خود اضافه کنید: MyPy ،Ty ،PyTest ،Tox ،GitHub Actions، اسکریپتهای Pre-Commit ،Ruff (Black، Flake8 ،ISort...) و موارد دیگر!
ما اولین بستهی خود را میسازیم و سپس آن را به کدی مقاوم و در سطح صنعت تبدیل میکنیم. ما از بستههایی الگو میگیریم که ماهانه یک میلیارد دانلود دارند!
به pyproject.toml، زنجیرهی زیرپوشهی __init__.py، چگونگی ساخت دستورهای bash سفارشی برای Python Packaging، چگونگی استفاده از MANIFEST.in و موارد دیگر میپردازیم!
همه این موضوعات پیشرفته را به چیزی تبدیل میکنیم که برایتان ساده و قابلفهم باشد!
پیش نیازهای دوره
دانشجویان باید توسعهدهندگان پیشرفتهی Python با اصول محکم در Python باشند.
دانشجویان باید با فرمان اولیه خط فرمان/bash/ترمینال آشنا باشند و به یک ترمینال bash دسترسی داشته باشند. (اگر روی Windows هستید از WSL2 استفاده کنید)
دانشجویان باید آشنایی اولیهای با Git و GitHub داشته باشند.
توضیحات دوره
با یادگیری ساخت Python Packageهایی مشابه نمونههای صنعتی، مسیر حرفهای خود را تقویت کنید؛ بهطوریکه هر کسی در هر جای دنیا بتواند کد شما را با pip نصب کند و این کار را به شکلی بسیار مقاوم و مطمئن انجام دهد. فقط در چند ساعت، از ساخت یک Python Package به مرحلهای میرسید که آن را با MyPy ،Ty، PyTest ،Tox ،GitHub Actions، پایپلاینهای CI/CD، Ruff (از جمله Black ،Flake8 ،Isort ،PyLint و موارد دیگر) و خیلی چیزهای دیگر تقویت میکنید!
کار را با ساخت یک Calculator Python Package نمونه شروع میکنیم تا دوباره به روال بیفتید. دربارهی اینکه pyproject.toml چیست، چگونه packageهای خود را در PyPI آپلود کنید، چه زمانی از ایمپورت های مطلق در برابر ایمپورت های نسبی استفاده کنید و موارد دیگر صحبت میکنیم. سپس موضوعات پیشرفتهتری را اضافه میکنیم، مانند: چگونه type hinting را اضافه کنیم و آن را با type checkerهای ایستا مثل MyPy و Ty بررسی کنیم. چگونه package خود را با PyTest تست کنیم. چگونه این تستها را در محیطهای ایزوله و روی نسخههای مختلف Python با Tox اجرا کنیم. چگونه با هر git push و با استفاده از GitHub Actions تستها را خودکار کنیم. چگونه کد خود را بهصورت خودکار قالببندی کنیم و با linterهایی مثل Ruff که PyLint ،Black ،Flake8 و موارد دیگر را در خود جمع کرده است، مشکلات منطقی و سینتکس را بررسی کنیم. دربارهی نسخهبندی وابستگیها، اینکه نسخهبندی معنایی چیست و چرا مفید است، چگونگی اجرای package از خط فرمان، و چگونگی گرفتن آن badgeهای جذاب README هم کار میکنیم. و خیلی چیزهای دیگر!
این حوزه دائماً در حال تغییر است و مدرس مطمئن میشود این دوره همگام با آن تغییر کند. هر زمان تغییرات جدیدی منتشر شود، این دوره را بروزرسانی میکند، و در حوزهی Python packaging این اتفاق زیاد میافتد. مطمئن شده آخرین تغییرات PyPi دربارهی سازوکار جدید احراز هویت را هم اضافه کند. همچنین جدیدترین type checker یعنی Ty و جدیدترین linter یعنی Ruff را هم افزوده است!
از نظر پیشنیازها، این دوره برای مبتدیها نیست. این دوره برای توسعهدهندگان قوی Python است که میخواهند مهارتهای خود را به سطح پیشرفته برسانند. باید اصول محکم در Python داشته باشید و روی دستکم چند پروژهی Python شخصی کار کرده باشید. باید با Git/GitHub و فرمان های ترمینال آشنا باشید. این دوره در اصل بخش 2 از مجموعهی Python Packaging است، اما میتوانید بدون گذراندن بخش 1 هم آن را بگذرانید، چون در ابتدای دوره یک مرور سریع داریم.
این دوره بهطور خاص برای کسانی طراحی شده که میخواهند کد خود را به سطح بالاتری ببرند و آن را به اندازهی کدی که در بستههای متنباز محبوب یا در محیط صنعت میبینند، مقاوم کنند. بهطور مشخص، برای فارغالتحصیلان دانشگاه و توسعهدهندگان پیشرفته. این مهارتها کاربردی گسترده دارند و فقط به Python Packaging محدود نمیشوند؛ احتمالاً در تمام codebaseهای خود از آنها استفاده خواهید کرد.
این مهارتها بسیار مفید هستند و بدون شک هر کارفرمایی را تحت تأثیر قرار میدهند. این موضوع بهطور گسترده یکی از سختترین موضوعات در Python شناخته میشود، اگر نگوییم سختترین؛ بنابراین اگر بتوانید آن را انجام دهید، در جمع افراد بسیار محدودی خواهید بود.
لطفاً همین حالا در این دوره شرکت کنید و در این مسیر همراه مدرس باشید تا این موضوعات پیشرفته را به چیزی تبدیل کنیم که برایتان ساده و قابلفهم باشد!
این دوره برای چه کسانی مناسب است؟
توسعهدهندگان پیشرفتهای که میخواهند در کد و packageهای خود به سطحی در حد صنعت از استحکام و پایداری برسند.