9 مكتبات بايثون حديثة يجب أن تعرفها في عام 2025! 🚀

اكتشفت هذه المجموعة القليلة من المكتبات الحديثة التي يجب عليك معرفتها إذا كنت تريد البقاء في المقدمة في عام 2025.

Polars — مكتبة إطارات البيانات فائقة السرعة

Polars عبارة عن مكتبة DataFrame سريعة للغاية مكتوبة بلغة Rust للتعامل مع البيانات المنظمة.

لماذا يجب عليك استخدامه: أسرع من Panda بعشرة أضعاف إلى مئة ضعف. يدعم التقييم البطيء لمجموعات البيانات الكبيرة، ويعمل بشكل أصلي مع Apache Arrow.

pip install polars

هذا مثال بسيط لإنشاء إطار بيانات باستخدام Polars:

import polars as pl
import datetime as dt

df = pl.DataFrame(
    {
        "name": ["Alice Archer", "Ben Brown", "Chloe Cooper", "Daniel Donovan"],
        "birthdate": [
            dt.date(1997, 1, 10),
            dt.date(1985, 2, 15),
            dt.date(1983, 3, 22),
            dt.date(1981, 4, 30),
        ],
        "weight": [57.9, 72.5, 53.6, 83.1],  # (kg)
        "height": [1.56, 1.77, 1.65, 1.75],  # (m)
    }
)

print(df)
shape: (4, 4)
┌────────────────┬────────────┬────────┬────────┐
│ name           ┆ birthdate  ┆ weight ┆ height │
│ ---            ┆ ---        ┆ ---    ┆ ---    │
│ str            ┆ date       ┆ f64    ┆ f64    │
╞════════════════╪════════════╪════════╪════════╡
│ Alice Archer   ┆ 1997-01-10 ┆ 57.9   ┆ 1.56   │
│ Ben Brown      ┆ 1985-02-15 ┆ 72.5   ┆ 1.77   │
│ Chloe Cooper   ┆ 1983-03-22 ┆ 53.6   ┆ 1.65   │
│ Daniel Donovan ┆ 1981-04-30 ┆ 83.1   ┆ 1.75   │
└────────────────┴────────────┴────────┴────────┘

Ruff — أسرع مُنسّق في بايثون

Ruff هو برنامج linter سريع للغاية مكتوب بلغة Rust، ومصمم ليحل محل Flake8 وBlack وisort في أداة واحدة.

لماذا يجب عليك استخدامه: إنه أسرع بـ 20 مرة من Flake8، ويدعم إصلاح المشكلات تلقائيًا ويعمل كمنسق ومدقق

pip install ruff

يمكننا استخدام uv لتهيئة المشروع:

uv init --lib demo

يقوم هذا الأمر بإنشاء مشروع بايثون بالهيكل التالي:

demo
  ├── README.md
  ├── pyproject.toml
  └── src
      └── demo
          ├── __init__.py
          └── py.typed

سنقوم بعد ذلك باستبدال محتويات src/demo/init.py بالكود التالي:

from typing import Iterable

import os


def sum_even_numbers(numbers: Iterable[int]) -> int:
    """Given an iterable of integers, return the sum of all even numbers in the iterable."""
    return sum(
        num for num in numbers
        if num % 2 == 0
    )

بعد ذلك، سنضيف Ruff إلى مشروعنا:

uv add --dev ruff

يمكننا بعد ذلك تشغيل Ruff linter على مشروعنا عبر uv run ruff check:

$ uv run ruff check
src/numbers/__init__.py:3:8: F401 [*] `os` imported but unused
Found 1 error.
[*] 1 fixable with the `--fix` option.

يمكننا حل المشكلة تلقائيًا عن طريق تشغيل ruff check --fix:

$ uv run ruff check --fix
Found 1 error (1 fixed, 0 remaining).

PyScript — تشغيل بايثون في المتصفح

يتيح لك PyScript كتابة وتنفيذ كود بايثون في المتصفح، على غرار JavaScript.

لماذا يجب عليك استخدامه: يمكّن تطبيقات الويب التي تعمل بتقنية بايثون، ويعمل مباشرة في HTML ولا يحتاج إلى واجهة خلفية!

لا نحتاج إلى تثبيت PyScript، بدلاً من ذلك، أضف ببساطة علامة <script> إلى <head> في مستند HTML الخاص بك

&lt;!-- PyScript CSS -->
&lt;link rel="stylesheet" href="https://pyscript.net/releases/2025.2.4/core.css">
&lt;!-- This script tag bootstraps PyScript -->
&lt;script type="module" src="https://pyscript.net/releases/2025.2.4/core.js">&lt;/script>

قم بإنشاء ملف .html بسيط واستخدم علامة <py-script> لكتابة كود بايثون الخاص بك.

&lt;!doctype html>
&lt;html>
    &lt;head>
        &lt;!-- Recommended meta tags -->
        &lt;meta charset="UTF-8">
        &lt;meta name="viewport" content="width=device-width,initial-scale=1.0">
        &lt;!-- PyScript CSS -->
        &lt;link rel="stylesheet" href="https://pyscript.net/releases/2025.2.4/core.css">
        &lt;!-- This script tag bootstraps PyScript -->
        &lt;script type="module" src="https://pyscript.net/releases/2025.2.4/core.js">&lt;/script>
    &lt;/head>
    &lt;body>
        &lt;!-- Now you can use &lt;py-script> tag to write your python code inside-->
        &lt;py-script>
          import sys
          from pyscript import display
          
          display(sys.version)
        &lt;/py-script>
    &lt;/body>
&lt;/html>

Pandera – التحقق من صحة البيانات لـ Pandas

يساعد Pandera في التحقق من صحة إطارات بيانات Pandas وSeries باستخدام التحقق المستند إلى المخطط.

لماذا يجب عليك استخدامه: فهو يلتقط أخطاء البيانات قبل معالجتها، ويعمل مثل Pydantic، ولكن بالنسبة لـ Pandas ويدعم اختبار الوحدة للبيانات!

import pandas as pd
import pandera as pa

# Data to validate
df = pd.DataFrame({
    "column1": [1, 4, 0, 10, 9],
    "column2": [-1.3, -1.4, -2.9, -10.1, -20.4],
    "column3": ["value_1", "value_2", "value_3", "value_2", "value_1"],
})

# Define schema
schema = pa.DataFrameSchema({
    "column1": pa.Column(int, checks=pa.Check.le(10)),
    "column2": pa.Column(float, checks=pa.Check.lt(-1.2)),
    "column3": pa.Column(str, checks=[
        pa.Check.str_startswith("value_"),
        # define custom checks as functions that take a series as input and
        # outputs a boolean or boolean Series
        pa.Check(lambda s: s.str.split("_", expand=True).shape[1] == 2)
    ]),
})

validated_df = schema(df)
print(validated_df)
   column1  column2  column3
0        1     -1.3  value_1
1        4     -1.4  value_2
2        0     -2.9  value_3
3       10    -10.1  value_2
4        9    -20.4  value_1

JAX – تعلّم عميق أسرع مع Google Magic

JAX هي مكتبة عالية الأداء لتعلم الآلة والحوسبة الرقمية، تم إنشاؤها بواسطة Google.

لماذا يجب عليك استخدامه: إنه أسرع من NumPy باستخدام تسريع GPU/TPU، ويدعم التمييز التلقائي ويُستخدم في مشاريع الذكاء الاصطناعي من Google

مثال بسيط لإنشاء مصفوفة على غرار numPy.

import jax.numpy as jnp

def selu(x, alpha=1.67, lmbda=1.05):
  return lmbda * jnp.where(x > 0, x, alpha * jnp.exp(x) - alpha)

x = jnp.arange(5.0)
print(selu(x))

[0.        1.05      2.1       3.1499999 4.2      ]

Textual — إنشاء تطبيقات TUI في بايثون

يتيح لك Textual إنشاء تطبيقات واجهة مستخدم طرفية حديثة (TUI) في بايثون مع مكونات غنية.

لماذا يجب عليك استخدامه: لإنشاء تطبيقات طرفية جميلة، ويعمل مع Rich للتصميم ولا يحتاج إلى خبرة في الواجهة الأمامية!

مثال بسيط لإنشاء تطبيقات TUI.

from textual.app import App, ComposeResult
from textual.widgets import Label, Button


class QuestionApp(App[str]):
    def compose(self) -> ComposeResult:
        yield Label("Do you love Textual?")
        yield Button("Yes", id="yes", variant="primary")
        yield Button("No", id="no", variant="error")

    def on_button_pressed(self, event: Button.Pressed) -> None:
        self.exit(event.button.id)


if __name__ == "__main__":
    app = QuestionApp()
    reply = app.run()
    print(reply)

سيؤدي تشغيل هذا التطبيق إلى إعطائك النتيجة التالية:

LlamaIndex – إنشاء مساعدي الذكاء الاصطناعي المخصصين

يقوم LlamaIndex بتبسيط عملية الفهرسة والاستعلام عن مجموعات البيانات الكبيرة لتطبيقات LLM.

لماذا يجب عليك استخدامه: يتم استخدامه لـ RAG (Retrieval-Augmented Generation)، ويعمل مع نماذج OpenAI GPT ويتعامل مع البيانات المنظمة وغير المنظمة.

لنبدأ بمثال بسيط باستخدام وكيل يمكنه إجراء عملية ضرب أساسية عن طريق استدعاء أداة. أنشئ ملفًا باسم starter.py:

قم بتعيين متغير بيئي يسمى OPENAI_API_KEY باستخدام مفتاح API OpenAI.

import asyncio
from llama_index.core.agent.workflow import AgentWorkflow
from llama_index.llms.openai import OpenAI


# Define a simple calculator tool
def multiply(a: float, b: float) -> float:
    """Useful for multiplying two numbers."""
    return a * b


# Create an agent workflow with our calculator tool
agent = AgentWorkflow.from_tools_or_functions(
    [multiply],
    llm=OpenAI(model="gpt-4o-mini"),
    system_prompt="You are a helpful assistant that can multiply two numbers.",
)


async def main():
    # Run the agent
    response = await agent.run("What is 1234 * 4567?")
    print(str(response))


# Run the agent
if __name__ == "__main__":
    asyncio.run(main())
The result of \( 1234 \times 4567 \) is \( 5,678,678 \).

Robyn – أسرع إطار عمل ويب بايثون

Robyn هو بديل عالي الأداء لـ Flask وFastAPI، وهو محسّن للمعالجة متعددة النواة.

لماذا يجب عليك استخدامه: أسرع بخمس مرات من FastAPI. يدعم التشغيل غير المتزامن ومتعدد الخيوط، ويستخدم Rust للسرعة.

دعنا ننشئ مشروعًا بسيطًا باستخدام هذا الأمر:

$ python -m robyn --create

سيؤدي هذا إلى النتيجة التالية.

$ python3 -m robyn --create
? Directory Path: .
? Need Docker? (Y/N) Y
? Please select project type (Mongo/Postgres/Sqlalchemy/Prisma):
❯ No DB
  Sqlite
  Postgres
  MongoDB
  SqlAlchemy
  Prisma

سيؤدي هذا إلى إنشاء تطبيق جديد بالهيكل التالي.

├── src
│   ├── app.py
├── Dockerfile

يمكنك الآن كتابة الكود في ملف app.py:

from robyn import Request

@app.get("/")
async def h(request: Request) -> str:
    return "Hello, world"

يمكنك استخدام هذا الأمر لتشغيل الخادم:

python -m robyn app.py

DuckDB — قاعدة بيانات فائقة السرعة في الذاكرة

DuckDB عبارة عن قاعدة بيانات SQL في الذاكرة وهي أسرع من SQLite للتحليلات.

لماذا يجب عليك استخدامه: إنه سريع للغاية للتحليلات، ويعمل بدون خادم ويتكامل بسهولة مع Pandas وPolars

مثال بسيط مع إطار بيانات pandas:

import duckdb
import pandas as pd

pandas_df = pd.DataFrame({"a": [42]})
duckdb.sql("SELECT * FROM pandas_df")

┌───────┐
│   a   │
│ int64 │
├───────┤
│    42 │
└───────┘

ستعمل هذه المكتبات التسعة الحديثة على تعزيز سير عملك في عام 2025.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading