semvec/pypi-packages huggingface dataset:
giftool2 0.22.0
a simple tool to extract video to gif
Requires Python: >=3.9
Keywords: gif, video

# giftool2

A simple tool to create GIFs from videos.

## Features

- Upload a video file
- Select a start and end time for the GIF
- Convert video to GIF

## Usage

1. Installation: `uv add giftool2` or  `pip install giftool2`

2. Run the app:  `giftool2`

3. Navigate to the app in your web browser. The default URL is `http://127.0.0.1:5000`.

## User Interface

The app has a simple and intuitive user interface. You can upload a video file, select the start and end time for the GIF, and preview the start and end frames. Once you are satisfied with your selection, you can create and download the GIF.

![App Screenshot](https://raw.githubusercontent.com/michaeldini/giftool2/main/homepage800x600.jpg)

## License

This project is licensed under the [MIT License](LICENSE).
MIT License

Copyright (c) 2024 [Michael Dini]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
abstract-framehub-client 0.1.6
Client Python for AbstractFrameHub Server
Requires Python: >=3.7


# Abstract Frame Hub Client

**AbstractFrameHubClient** is a Python client for interacting with **AbstractFrameHub**, a secure, schema-aware, and cloud-ready data layer inspired by MongoDB. It supports document validation, user and permission management, and future AI-enhanced data features.

---

## 📦 Installation

Install via PyPI:

```bash
pip install abstract-framehub-client
```

Or install from source:

```bash
git clone https://gitlab.com/stackngo-client/abstractframehub-client-python.git
cd abstractframehub-client-python
pip install .
```

Abstract Frame Hub Server :

```bash
git clone https://gitlab.com/stackngo-client/abstractframehub-helm.git
cd docker-compose
docker-compose up -d
```

---

## 🚀 Quick Start

```python
from abstract-framehub-client import AbstractFrameHubClient

# Connect and authenticate
client = AbstractFrameHubClient()
client.login("root", "afh-password")

# Select a database and collection
db = client.database("mydb")
try:
    db.create()
except AlreadyExistsException as e:
    pass
collection = db.collection("mycollection")

# Insert a document
collection.insert_one({"title": "Hello, FrameHub!", "likes": 0})

# Query documents
results = collection.find({"likes": {"$gte": 0}})
print(results)
```

---

## 🔐 Authentication

```python
client.login("root", "afh-password")
```

Stores a session token used automatically in future requests.

---

## 🗃️ Database & Collection API

```python
db = client.database("blog")
db.create()
db.drop()

collection = db.collection("posts")
collection.insert_one({...})
collection.find_one({"key": "value"})
collection.delete_many({})
```

---

## 📐 Schema Support

Define and enforce JSON schemas per collection:

```python
collection.schema({
    "bsonType": "object",
    "required": ["title", "content"],
    "properties": {
        "title": {"bsonType": "string"},
        "content": {"bsonType": "string"}
    },
    "additionalProperties": False
})
```

---

## 👤 User Management

```python
client.add_user({
    "username": "admin",
    "password": "securepass",
    "permissions": {"blog": "*"}
})
client.drop_user("admin")
```

---

## ❗ Error Handling

All errors raise custom exceptions:

- `NotAuthenticatedException`
- `ValidationException`
- `AlreadyExistsException`
- `AfhException` (generic)

---

## 🧪 Testing Example

```python
def test_insert_and_find():
    client = AbstractFrameHubClient()
    client.login("admin", "123456")
    db = client.database("testdb")
    coll = db.collection("items")
    doc_id = coll.insert_one({"name": "test item"})
    result = coll.find_one({"_id": doc_id})
    assert result["name"] == "test item"
```

---

## 📁 Project Structure

```
├── abstract_framehub_client
│   ├── __init__.py
│   ├── client.py
│   ├── exceptions.py
│   └── wrappers
│       ├── __init__.py
│       ├── collection.py
│       └── database.py
```

---

## 📝 License

This project is licensed under the MIT License.
spatial-centrality 0.1.0
Spatial centrality scores for syntactic dependency trees
Requires Python: >=3.7

# spatial_centrality

This package provides spatial centrality scores (`D`, `coverage`, and `D'`) for syntactic dependency trees, as introduced in this publication:

> Ferrer-i-Cancho, R., & Arias, M. (2025). *Who is the root in a syntactic dependency structure?* [arXiv:2501.15188](https://arxiv.org/abs/2501.15188)

The scores are designed for use with undirected syntactic dependency trees, combined with the linear order of words in a sentence. These measures help identify the root of a dependency tree using spatial and topological information.

**This package is an independent implementation** based on the algorithms described in the paper. All credit for the concepts and theoretical work goes to the original authors. This implementation is provided under an open-source license to facilitate use and experimentation by the NLP and computational linguistics community.

## Installation

```bash
pip install .
```

## Usage

```python
import networkx as nx
from spatial_centrality import d_centrality, coverage_centrality, d_prime_centrality

# Create an undirected syntactic dependency tree
G = nx.Graph()
G.add_edges_from([(0, 1), (1, 2), (1, 3)])  # edges represent syntactic relations

# Define the linear order of words in the sentence
linear_order = [0, 1, 2, 3]  # e.g., token indices from left to right

# Compute scores
print(d_centrality(G, linear_order))
print(coverage_centrality(G, linear_order))
print(d_prime_centrality(G, linear_order))
```

## License

MIT License

---

If you use this package in academic work, please cite the original paper and feel free to mention this implementation in your acknowledgments or supplementary materials.
thsdata 0.1.3
金融行情数据查询API
Keywords: python, thsdata


# THSData

**THSData** 获取金融和市场数据


# 安装

```bash
pip install --upgrade thsdata
```

# 使用

三行代码查询股票历史数据

```python
from thsdata import THSData

with THSData() as td:
    print(td.download("600519", start=20240101, end=20250101))


```

执行结果：

```
          time     open     high      low    close   volume    turnover
0   2024-01-02  1715.00  1718.19  1678.10  1685.01  3215644  5440082500
1   2024-01-03  1681.11  1695.22  1676.33  1694.00  2022929  3411400700
2   2024-01-04  1693.00  1693.00  1662.93  1669.00  2155107  3603970100
3   2024-01-05  1661.33  1678.66  1652.11  1663.36  2024286  3373155600
4   2024-01-08  1661.00  1662.00  1640.01  1643.99  2558620  4211918600
..         ...      ...      ...      ...      ...      ...         ...
237 2024-12-25  1538.80  1538.80  1526.10  1530.00  1712339  2621061900
238 2024-12-26  1534.00  1538.78  1523.00  1527.79  1828651  2798840000
239 2024-12-27  1528.90  1536.00  1519.50  1528.97  2075932  3170191400
240 2024-12-30  1533.97  1543.96  1525.00  1525.00  2512982  3849542600
241 2024-12-31  1525.40  1545.00  1522.01  1524.00  3935445  6033540400

[242 rows x 7 columns]
```

## 分钟级别
```python
from thsdata import THSData,Interval
from datetime import datetime, time

with THSData() as td:

    now = datetime.now()
    start = datetime.combine(now.date(), time(10, 15, 0))  # 10:15:00
    end = datetime.combine(now.date(), time(10, 25, 0))  # 10:25:00
    print(td.download("600519", start=start, end=end,interval=Interval.MIN_1))
    # print(td.download("600519", count=10,interval=Interval.MIN_1))


```

执行结果：

```
                         time     open     high  ...    close  volume  turnover
0  2025-05-19 10:15:00+08:00  1581.60  1581.98  ...  1580.16   39947  63160900
1  2025-05-19 10:16:00+08:00  1580.04  1580.16  ...  1580.16   54225  85678400
2  2025-05-19 10:17:00+08:00  1580.10  1580.10  ...  1578.10   59375  93803100
3  2025-05-19 10:18:00+08:00  1578.18  1578.18  ...  1577.00   38613  60912300
4  2025-05-19 10:19:00+08:00  1576.65  1576.65  ...  1576.00   35187  55457600
5  2025-05-19 10:20:00+08:00  1576.00  1576.62  ...  1576.56   29800  46969800
6  2025-05-19 10:21:00+08:00  1576.59  1577.97  ...  1577.95   12800  20189800
7  2025-05-19 10:22:00+08:00  1578.00  1578.97  ...  1578.97    8448  13334700
8  2025-05-19 10:23:00+08:00  1578.95  1580.64  ...  1580.23   14105  22285800
9  2025-05-19 10:24:00+08:00  1579.98  1581.00  ...  1579.16   12800  20227700
10 2025-05-19 10:25:00+08:00  1579.84  1579.84  ...  1578.97   11000  17371900

[11 rows x 7 columns]
```