semvec/pypi-packages huggingface dataset:
airflow-calendar 0.4.1
A sleek, Google Calendar-inspired global view for Apache Airflow DAGs.

# 📅 Airflow Calendar

A sleek, intuitive, and modern calendar interface for visualizing your global DAG schedule in Apache Airflow. Stop guessing when your DAGs will run; see them all in a high-fidelity time grid inspired by the Google Calendar experience.

---

## ✨ Key Features

* **Global Timeline View**: Visualize all your DAG schedules in clear weekly or daily grids, making it easy to spot execution windows and potential load spikes.
* **Smart Info-Popup**: Instant access to critical DAG run details upon clicking an event.
    * Displays **Execution Time**, **Cron Expression**, **Estimated Duration**, and **Last Status**.
* **Intelligent Viewport Positioning**: The popup automatically detects screen edges and flips its position (up/down/left/right) to prevent being cut off by the browser window or taskbar.
* **Dynamic Precision**: Maintains close proximity to the mouse cursor for a better UX while ensuring no empty gaps between the event and the info card.
* **Color-Coded Status**: Immediate visual identification of success, failure, or "no-run" states through dynamic colors and borders.
* **Native Deep Linking**: Directly jump to the native Airflow Grid View for any specific DAG with a single click.

---

## 🚀 Installation

The recommended way to install **Airflow Calendar** is via pip to ensure all templates and metadata are correctly registered.

```bash
# Clone the repository
git clone [https://github.com/your-user/airflow-calendar.git](https://github.com/your-user/airflow-calendar.git)
cd airflow-calendar

# Install the package
pip install .
```

## Roadmap
This project is still in its early stages, and there are many improvements planned for the future. Some of the features we're considering include:

- Change event colors based on Dag Tags.
- Search page to filter specific events and DAGs.
- Add a visual DAG execution history.

If you’d like to suggest a feature or report a bug, please open a new issue!

## Contributing
This project is open to contributions! If you want to collaborate to improve the tool, please follow these steps:

1.  Open a new issue to discuss the feature or bug you want to address.
2.  Once approved, fork the repository and create a new branch.
3.  Implement the changes.
4.  Create a pull request with a detailed description of the changes.
edgygraph 0.0.86
Graph-based Pipeline Builder
Requires Python: >=3.13

# Typed Graph-based Pipeline Builder

[![Pipy](https://img.shields.io/pypi/v/edgygraph)](https://pypi.org/project/edgygraph/)
[![Downloads](https://img.shields.io/pypi/dm/edgygraph)](https://pypi.org/project/edgygraph/#files)
[![Issues](https://img.shields.io/github/issues/mathisxy/edgygraph)](https://github.com/mathisxy/edgygraph/issues)
[![Type Check](https://github.com/mathisxy/edgygraph/actions/workflows/typecheck.yml/badge.svg?branch=main)](https://github.com/mathisxy/Edgy-Graph/actions/workflows/typecheck.yml)
[![Deploy Docs](https://github.com/mathisxy/edgygraph/actions/workflows/docs.yml/badge.svg)](https://github.com/mathisxy/Edgy-Graph/actions/workflows/docs.yml)
[![Documentation](https://img.shields.io/badge/Docs-GitHub%20Pages-blue)](https://mathisxy.github.io/edgygraph/)

A **pydantically** typed, lightweight **graph framework** for Python that combines features from [Langgraph](https://github.com/langchain-ai/langgraph) with **static type security**.

A community collection of nodes will be available [here](https://www.github.com/mathisxy/edgynodes/).

## Overview

- **Pydantic Typing**: <br> Built on Pydantic and Generics for complete static type safety.
- **Inheritance and Variance**: <br> Easily extend and specialize state and node classes.
- **Parallel Task Processing**: <br> Multiple nodes can run simultaneously
- **Dual State Management**:
    - State with automatic change extraction and conflict detection
    - Shared state accessible by all nodes, protected via explicit locking
- **Flexible Routing**: <br> Define simple node-to-node edges or dynamic routing based on functions.
- **Streaming**: <br> A standardized interface for streaming data between nodes.

## Installation

### PyPI
```bash
pip install edgygraph
```
> Python 3.13+ is required


## Example Workflow

### Import Classes

```python
from edgygraph import State, Shared, Node, START, END, Graph
import asyncio
```

### Create a State

```python
class MyState(State):

    capslock: bool = False
```

### Create a Node

```python
class MyNode(Node[MyState, Shared]):

    async def __call__(self, state: MyState, shared: Shared) -> None:

        if state.capslock:
            print("HELLO WORLD!")
        else:
            print("Hello World!")
```

### Create Instances

```python
state = MyState(capslock=True)
shared = Shared()

node = MyNode()
```

### Create a Graph

```python
Graph[MyState, Shared](
    edges=[
        (
            START,
            node
        ),
        (
            node,
            END
        )
    ]
)
```

### Run Graph

```python
asyncio.run(graph(state, shared))
```

<br>

 > More examples can be found in the examples folder