semvec/pypi-packages huggingface dataset:
air-labs-helpers 0.1.1
Shared helper utilities for Airflow Xtra plugins.
License: MIT
Requires Python: >=3.9

# 🧰 Air-Labs Helpers

The **Helpers** module provides shared utilities used across all Air-Labs plugins.  
It standardizes how plugins interact with the Airflow REST API and connection management.

---

## 🔧 Features

- Centralized API client (`AirflowClient`) for REST API interaction  
- Built-in authentication support using `/auth/token`  
- Simplified connection management via Airflow’s `conn_id`  
- Consistent response formatting and error handling

---

## 🧮 Usage Example

```python
from air_labs_helpers.client import AirflowClient

client = AirflowClient(conn_id="airflow_api_conn")
report = client.pause_dags(name_prefix="etl_")
print(report)
```

### Connection Setup (Required)

Before using the client, **create a connection** in the Airflow UI → *Admin → Connections*.

| Field | Description | Example |
|--------|--------------|----------|
| Conn Id | Used in code | `airflow_api_conn` |
| Conn Type | `http` or `https` | `http` |
| Host | Airflow Webserver | `http://localhost:8080` |
| Login | Username / Service Account | `admin` |
| Password | Password or API token | `mysecret` |

---

### How It Works

1. Loads the Airflow connection from `conn_id`  
2. Authenticates via `/auth/token`  
3. Sends REST API requests to `/api/v1/...`  
4. Returns structured results

---

## 🧾 License

MIT © [Rahul Rajasekharan](https://github.com/rahulrajasekharan)
air-labs-bulk-pause-unpause-ui 0.1.9
Airflow UI plugin to bulk pause/unpause DAGs.
License: MIT
Requires Python: >=3.11

# 🧩 Bulk Pause / Unpause UI Plugin

The **Bulk Pause / Unpause UI** plugin provides a visual React-based interface inside Airflow for bulk pausing and unpausing DAGs.

---

## 🖥️ Overview

- React + Tailwind frontend embedded in the Airflow webserver  
- Interacts with the Bulk Pause API through `/api/airflow_bulk_pause_api/...`  
- Displays DAG list with filters and action buttons  
- Built using the Airflow Plugin AppBuilder integration

---

## 🎥 Demo

![Bulk Pause Demo](../../../demos/bulk_pause.gif)

---

## 🧮 Features

- Search and filter DAGs by name or tags  
- Bulk select and perform pause/unpause actions  
- Displays success and failure statuses inline  
- Responsive and styled using Tailwind CSS

---

## 🧱 Architecture

| Layer | Description |
|--------|--------------|
| React Frontend | Built using modern React (hooks + JSX) |
| FastAPI Backend | Handles REST communication via `AirflowClient` |
| Airflow Webserver | Hosts the static frontend under `/static/plugins/` |

---

## 🧾 License

MIT © [Rahul Rajasekharan](https://github.com/rahulrajasekharan)
air-labs-bulk-pause-api 0.1.1
FastAPI plugin to pause/unpause Airflow DAGs in bulk.
License: MIT
Requires Python: >=3.9

# 🧩 Bulk Pause / Unpause API Plugin

The **Bulk Pause / Unpause API** provides REST endpoints to manage DAGs programmatically — enabling bulk control over DAGs using prefix or tag-based filters.

---

## ⚙️ Overview

- Built using **FastAPI**  
- Communicates with Airflow’s **core REST API**  
- Provides endpoints to pause, unpause, or list DAGs  
- Integrated authentication via Airflow’s `/auth/token`

---

## 🔧 Features

- Centralized API client (`AirflowClient`) for REST API interaction  
- Built-in authentication support using `/auth/token`  
- Simplified connection management via Airflow’s `conn_id`  
- Consistent response formatting and error handling

---


### Connection Setup (Required)

Before using the client, **create a connection** in the Airflow UI → *Admin → Connections*.

| Field | Description | Example |
|--------|--------------|----------|
| Conn Id | Used in code | `airflow_api_conn` |
| Conn Type | `http` or `https` | `http` |
| Host | Airflow Webserver | `http://localhost:8080` |
| Login | Username / Service Account | `admin` |
| Password | Password or API token | `mysecret` |

---


## 🧱 High-Level Architecture

```mermaid
flowchart TD
    U[User or Script] --> X[Airflow Xtra API]
    subgraph Airflow Webserver
      X --> A[Auth Token Endpoint]
      X --> R[Airflow REST API v2]
    end
    R --> S[Scheduler or Executor]
    S --> D[DAGs and Tasks]

    subgraph Airflow Connection
      C1[Conn Type http or https]
      C2[Host webserver]
      C3[Port optional]
      C4[Login Password]
      C5[Conn id airflow_api_conn]
    end
    X -. uses .-> C1
    X -. uses .-> C2
    X -. uses .-> C3
    X -. uses .-> C4
    X -. uses .-> C5
```


## 🧩 Component View

```mermaid
flowchart LR
    subgraph Plugin
      H[Helpers AirflowClient<br/>resolve conn id<br/>token auth<br/>REST calls]
      F[FastAPI Routes<br/>pause unpause list]
    end

    UI[React UI optional] --> F
    S[Scripts or CLI] --> F

    F --> H
    H --> AR[Airflow REST API v2]
    H --> AT[Auth Token Endpoint]

    AR --> SCH[Scheduler or Executor]
    SCH --> DAG[DAGs and Tasks]
```

## 🧩 Example Endpoints

| Endpoint | Method | Description |
|-----------|---------|--------------|
| `/api/airflow_bulk_pause_api/pause` | POST | Pause matching DAGs |
| `/api/airflow_bulk_pause_api/unpause` | POST | Unpause matching DAGs |
| `/api/airflow_bulk_pause_api/list` | GET | List all active DAGs |

---

## 🧪 Example Usage

```bash
curl -X POST http://localhost:8080/api/airflow_bulk_pause_api/pause -d '{"name_prefix": "etl_"}'
```

Response:

```json
{
  "paused": ["etl_orders", "etl_customers"],
  "skipped": ["daily_cleanup"]
}
```

---

## 🧱 Architecture

- FastAPI routes registered through the Airflow plugin manager  
- Uses `AirflowClient` (from helpers) for backend communication  
- Returns structured JSON responses for UI or automation scripts

---

## 🧾 License

MIT © [Rahul Rajasekharan](https://github.com/rahulrajasekharan)
pydecodr 0.1.4
A modular CTF/crypto library toolkit for encodings, classic ciphers, and autodetection. CLI included :3.
License: MIT
Requires Python: >=3.8
Keywords: cryptography, ctf, encoding, cipher, python3

<div align="center">
  <a href="https://moonshot.hackclub.com" target="_blank">
    <img src="https://hc-cdn.hel1.your-objectstorage.com/s/v3/35ad2be8c916670f3e1ac63c1df04d76a4b337d1_moonshot.png" 
         alt="This project is part of Moonshot, a 4-day hackathon in Florida visiting Kennedy Space Center and Universal Studios!" 
         style="width: 100%;">
  </a>
</div>

# pydecodr
> A modular CTF/crypto library toolkit for encodings, classic ciphers, and autodetection. CLI included :3.


`pydecodr` is a Python package that lets you **encode, decode, encrypt or decrypt text** using classical, polyalphabetic, modern, and stream ciphers, all through a **Python API** and a **CLI interface**

---
## Features:
- classical ciphers: (caesar, atbash, affine, rot13, substitution, hill, polybius, 4square, bacon)
- polyalphabetic: (vigenere, autokey_vigenere, beaufort, playfair, gronsfeld)
- fractionation: (bifid, ADFGX, trifid, ADFGVX)
- transposition: (railfence, columnar, double transposition, myszkowski, route)
- stream: (xor, repeating xor, rc4)
- modern: (aes, rsa, hash utilities)
- encodings: (b32, b64, hex, URL-safe, morse, base85)
- detection & utils: (file magic detection, I/O helpers)
- cli interface

---

## Installation
```bash
pip install pydecodr
```

--- 

## Usage
### CLI interface
You can use any cipher module directly with Python's `-m` flag:

```python
# caesar cipher
python3 -m pydecodr.ciphers.classical.caesar encrypt "HELLO" 3
# -> KHOOR

python3 -m pydecodr.ciphers.classical.caesar decrypt "KHOOR" 3
# -> HELLO
```

### Python API
```python
from pydecodr.ciphers.classical import caesar
from pydecodr.ciphers.polyalphabetic import vigenere

print(caesar.encrypt("HELLO", 3))
# KHOOR

print(vigenere.encrypt("HELLOWORLD", "KEY"))
# RIJVSUYVJN
```
Or load dynamically using the global registry:
```python
from pydecodr import load_module

mod = load_module("adfgx")
ciphertext = mod.encrypt("DEFEND THE EAST WALL", "FORTIFICATION", "CIPHER")
print(mod.decrypt(ciphertext, "FORTIFICATION", "CIPHER"))
```
Check this for more usage: [usage](https://xndadelin.me/pydecodr/)