semvec/pypi-packages huggingface dataset:
ssl-renewal-client 0.1.0
Client library for SSL Auto-Renewal Service - Monitor and auto-update SSL certificates
Requires Python: >=3.7
Keywords: ssl, tls, certificate, renewal, letsencrypt, security, monitoring

# SSL Renewal Client Library

A lightweight Python library designed to integrate with the **SSL Auto-Renewal Service API**.

This library allows any Python application to:
1. Automatically monitor SSL certificates
2. Validate their status against a central service
3. Download and update certificates automatically if they have been renewed

## Installation

```bash
pip install ssl-renewal-client
```

## Quick Start

### 1. Automatic Monitoring (Recommended)

The easiest way is to start the monitor in the background when your application starts.

```python
from ssl_renewal_client import SSLMonitor
import os

def reload_web_server():
    """
    Callback that executes when certificates are updated.
    Here you can restart your web server (Nginx, Gunicorn, etc).
    """
    print("Certificates updated! Reloading server...")
    # Example: os.system("systemctl reload nginx")

# Configuration
monitor = SSLMonitor(
    api_url="http://your-ssl-api.com",
    domains=["yourdomain.com"],
    cert_dir="/etc/letsencrypt/live",  # Where to save certificates
    check_interval_hours=12,
    on_update_callback=reload_web_server
)

# Start in background (doesn't block your app)
monitor.start(block=False)

# ... Your application continues running here ...
```

### 2. Manual Usage (API Client)

If you prefer full control over when to check:

```python
from ssl_renewal_client import SSLAPIClient, CertificateManager

client = SSLAPIClient("http://your-ssl-api.com")
manager = CertificateManager("/etc/letsencrypt/live")

domain = "yourdomain.com"

# 1. Validate and renew if necessary
result = client.validate_certificate(domain, auto_renew=True)

if result.get("action") == "renewed":
    # 2. Download files
    files_data = client.get_certificate_files(domain)
    
    # 3. Save to disk
    manager.update_certificates(domain, files_data["files"])
    print("Certificates renewed and downloaded.")
else:
    print("Certificate valid, no action required.")
```

## Generated File Structure

The library will save certificates in the specified directory (`cert_dir`) with the following structure:

```
/etc/letsencrypt/live/
└── yourdomain.com/
    ├── fullchain.pem
    ├── privkey.pem
    ├── cert.pem
    └── chain.pem
```

## Requirements

- Python 3.7+
- `requests>=2.25.0`

## Features

- ✅ Automatic certificate monitoring
- ✅ Background thread execution (non-blocking)
- ✅ Automatic certificate download on renewal
- ✅ Callback support for service reload
- ✅ Lightweight and easy to integrate
- ✅ Thread-safe operations

## License

MIT License

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.
cetragm 0.2.0
Cetra Grand Master | An oddly familiar block stacker in the command line!
Requires Python: >=3.12

# cgm
### Cetra Grand Master!

A block stacker game that you might find very familiar. Built with similar design to Tetris Grand Master in mind, but runs entirely in your terminal with much more modern mechanics.

What's Tetris Grand Master? It's a really old Japanese arcade franchise that used a lot of nonstandard features and was regarded as being incredibly hard. Your goal is to survive from levels 500 to 999 in 20g (pieces instantly falling to the bottom) and achieve the rank of Grandmaster. Yeah uh... nobody here is doing that, so it's just really hard Tetris. If anyone gets an S1+ rank, DM me @qwik!

## how
`pip install cetragm`, or `pipx install cetragm` if you're on an externally managed system like Arch Linux. You may need the `pygame` module if you don't have it or if pip doesn't install it for you. Run `cgm`.

## demo


Additions from last week:
- Entire UI system
- Rebindable controls
- SRS (Super Rotation System)
- DAS/ARR/SDF customization
- New input system, allowing said changes
- Improved game loop
- Tweaks to difficulty and progression

how does it fit the theme?
uuh technically the main gameplay of tetris is avoiding SPACEs in your stack... yeah, it's a stretch, but I had no time to do better.

## what
Features:
- Supports any terminal emulator, Windows or Linux. (Not tested on Mac but may work.)
- Rebindable controls, including hard and soft drops as well as holds.
- Grade system, up to the Gm grade (which I guarantee you won't get)
- Full color!
- Dynamic gravity (speed) as your level increases
- Scoring system
- Gameplay timer
- 7-bag piece drawing
- 5-piece next queue and level display
- Persistent TLS (or shadow piece)
- TGM's 20G gravity after level 500
- Proper ARE, lock delay, and line clear delay
- Real-time gravity (not tied to frame rates)
- The standard Super Rotation System and all its janky kicks!
- Full UI system
- Fixed, fully rebindable controls

To add:
- T-spins and detection for them
- IHS and IRS (Inital Hold/Rotation System)

## controls
There's a menu for that! I recommend you pick your own controls - they'll save automatically.

DAS: Delayed Auto Shift, how long until keys start to repeat.\n
ARR: Auto Repeat Rate, how quickly keys repeat.\n
SDF: Soft Drop Force, how fast your soft drop key goes down.

## why
Built for [Hack Club](https://hack.club)'s [Siege](https://siege.hackclub.com) program (week 10 and 11). Also, I like block stackers.
streamlit-emoji-float 0.1.0
Streamlit component that animates emojis, making them float on your Streamlit app.
Requires Python: >=3.10
Keywords: streamlit, emoji, animation, component

# streamlit-emoji-float

`streamlit-emoji-float` is a fun custom Streamlit component that animates emojis, making them float on your Streamlit app.

![Demo GIF](https://github.com/j-ncel/streamlit-emoji-float/blob/main/sample/emoji-float-sample.gif?raw=true)

## Installation

```bash
pip install streamlit-emoji-float
```

## Usage

```python
from streamlit_emoji_float import emoji_float

# Usage with default emojis
emoji_float()

# Usage with custom parameters
emoji_float(
    emojis=["🔥", "🚀", "🎉"],
    count=20,
    minSize=50,
    maxSize=100,
    animationLength=5
)
```

`emojis:` List of emoji characters to animate (default: ["⭐", "😊", "🎈"])  
`count:` Number of emojis to spawn (default: 50)  
`minSize:` Minimum size in pixels (default: 50)  
`maxSize:` Maximum size in pixels (default: 100)  
`animationLength:` Duration of floating animation (default: 3)  
`key:` Streamlit component key for uniqueness

<a href="https://coff.ee/jncel">
  <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" width="100" height="" alt="Buy Me a Coffee">
</a>