semvec/pypi-packages huggingface dataset:
extrac 0.8.0
One magic word to unpack archive.
License: MIT
Requires Python: >=3.8

# extrac
[![PyPI version](https://img.shields.io/pypi/v/extrac?style=for-the-badge)](https://pypi.org/project/extrac/) [![License](https://img.shields.io/github/license/belingud/python_extrac.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) ![Static Badge](https://img.shields.io/badge/language-Python-%233572A5?style=for-the-badge) ![PyPI - Downloads](https://img.shields.io/pypi/dm/extrac?logo=pypi&style=for-the-badge)
![Pepy Total Downlods](https://img.shields.io/pepy/dt/extrac?style=for-the-badge&logo=python)


Homepage: https://github.com/belingud/python_extrac

One magic word to unpack archive, pure python implementation, no command-line tools required.

一个命令解压所有压缩文件，纯Python实现，不依赖任何命令行工具。

> Support 7z(.7z),AR(.a,.ar),RAR(.rar),ZIP(.zip,.jar),TAR(.tar.gz,.tgz,.tar.bz
  ,.tar.bz2,.tbz,.tbz2,.tar.xz,.txz),GZIP(.gz),compress(.Z),CAB(.cab),XZ(.xz,.
  lzma),BZIP2(.bz2),BZIP(.bz),ZSTD(.zstd,.zst),DEB(deb) archives for now.
>
> 目前支持7z(.7z),AR(.a,.ar),RAR(.rar),ZIP(.zip,.jar),TAR(.tar.gz,.tgz,.tar.bz
  ,.tar.bz2,.tbz,.tbz2,.tar.xz,.txz),GZIP(.gz),compress(.Z),CAB(.cab),XZ(.xz,.
  lzma),BZIP2(.bz2),BZIP(.bz),ZSTD(.zstd,.zst),DEB(deb) 后缀的压缩文件。

# Install

Recommended installation with pipx:

```shell
$ pipx install extrac
  installed package extrac x.x.x, installed using Python 3.12.3
  These apps are now globally available
    - extrac
    - x
done! ✨ 🌟 ✨
```

Support Format:

- [x] .ar/.a
- [x] .bz2/.bz/.dmg
- [x] .cab
- [x] .gz
- [x] .xz
- [x] .7z
- [x] .Z
- [x] .tar.gz/.tgz
- [x] .tar.bz/.tbz
- [x] .tar.xz/.txz
- [x] .tar
- [x] .rar
- [x] .zip/.jar
- [x] .zstd/.zst
- [x] .deb
- [x] .xz/.lzma
- [ ] .arj
- [ ] .rp
- [ ] .pkg

Usage:

Contains two commands x and extrac.

> Not support specified output filename yet

```shell
# Auto extract to current directory as sample/
x test/archives/sample.zip
extrac test/archives/sample.zip
# Specified output directory as test/sample/
x test/archives/sample.tar.bz test/
extrac test/archives/sample.tar.bz test/
```

# encoding

Encoding support types:

- zip
- xz

example:

```shell
x test/archives/sample.zip --encoding gbk
```

# TO BE CONTINUE

# 未完待续
Zeraora 0.4.0a2
A personal utility package, with long time supports.
License: MIT
Requires Python: >=3.7

<div align="center">
    <p><img src="./logo.svg"/></p>
    <a href="https://docs.python.org/zh-cn/3/whatsnew/index.html"><img src="https://img.shields.io/pypi/pyversions/zeraora?logo=python&logoColor=yellow"></a>
    <a href="https://pypi.org/project/Zeraora/"><img src="https://img.shields.io/pypi/v/zeraora?color=darkgreen"></a>
    <a href=""><img src="https://img.shields.io/conda/v/conda-forge/zeraora"></a>
    <a href=""><img src="https://img.shields.io/pypi/status/Zeraora"></a>
    <a href=""><img src="https://img.shields.io/pypi/dm/zeraora?color=C72777"></a>
</div>
<div align="center">
    <i>长期维护的个人实用工具包</i>
    <br>
    <i>A personal practical utility Python package, with long time support.</i>
</div>

## 特性／Features

- 支持 `with`、注解和实例化三种方式调用的计时器 `BearTimer` ；
- 自动为 Django 模型生成下划线小写（即蛇形）数据表名的 `SnakeModel` ；
- 受 Django 的 `Choices` 启发和 Java 原生枚举影响的、可为枚举添加任意属性的 `Items` ；
- 允许用 `curd` 等字符简化 `ViewSet.as_view()` 参数的 `EasyViewSetMixin` ；
- 继承标准库 `datetime` 的增强型日期时间对象 `Datetime` ；
- 不强制依赖任何非[标准库](https://docs.python.org/zh-cn/3/library/index.html)；
- 更多……

## 安装／Install

使用 pip 直接安装：

```shell
pip install zeraora
```

安装最新的版本（预发布）

```shell
pip install zeraora --pre
```

或者移步 PyPI 在
[Release history](https://pypi.org/project/Zeraora/#history)
选定版本后 Download files 手动下载 .whl 文件并安装

```shell
pip install ./Zeraora-0.4.0.0a-none-any.whl
```

因为暂时没有需求，所以还没创建 conda 版。

## 兼容／Compatibility

> - 每个 0.x 之间并不兼容，请务必选择最新的发布版。
> - 依赖包版本仅考虑单独依赖时的情况。

- Zeraora 0.4.x
  - [Python](https://www.python.org/) 3.7｜3.8｜3.9｜3.10｜3.11｜3.12
  - [Django](https://www.djangoproject.com/) 2.x｜3.x｜4.x｜5.0
  - [Django REST Framework](https://www.django-rest-framework.org/) 2.3.0+
  - [requests](https://requests.readthedocs.io/) 0.8.3+

| Zeraora | Python                     |
|---------|----------------------------|
| 0.4.x   | 3.7，3.8，3.9，3.10，3.11，3.12 |
| 0.3.x   | 3.7，3.8，3.9，3.10           |
| 0.2.x   | 3.7，3.8，3.9，3.10           |
| 0.1.x   | 3.7，3.8，3.9，3.10           |

## 文档／Document

参见 [Wiki](https://github.com/aixcyi/zeraora/wiki)

## 链接／Links

- GitHub [Discussions](https://github.com/aixcyi/zeraora/discussions)
- QQ群 [418751161](https://qm.qq.com/q/ou4RdUFMTm)
- GitHub [Issues](https://github.com/aixcyi/zeraora/issues)
- 码云 [Issues](https://gitee.com/aixcyi/zeraora/issues)
pypaya-pgn-parser 0.1.1
A lightweight Python package that provides efficient parsing capabilities for Portable Game Notation (PGN) chess files
License: MIT
Requires Python: <4.0,>=3.7
Keywords: chess, pgn, parser

# pypaya-pgn-parser

A lightweight Python package that provides efficient parsing capabilities for Portable Game Notation (PGN) chess files.

## Features

- Fast and memory-efficient PGN parsing
- Robust handling of various PGN formats and edge cases
- Easy-to-use API for integrating into your chess applications
- No external dependencies for core functionality

## Installation

You can install pypaya-pgn-parser using pip:

```bash
pip install pypaya-pgn-parser
```

## Usage

Here's a quick example of how to use pypaya-pgn-parser:

```python
from io import StringIO
from pypaya_pgn_parser.pgn_parser import PGNParser


def process_pgn_file(file_path):
    # Initialize the parser
    parser = PGNParser()

    # Read the entire file into a StringIO object
    with open(file_path, 'r') as file:
        file_content = file.read()
    pgn_stringio = StringIO(file_content)

    game_count = 0

    while True:
        # Parse the next game
        result = parser.parse(pgn_stringio)

        # Check if we've reached the end of the file or encountered an error
        if result is None:
            print(f"Reached end of file or encountered an error after processing {game_count} games.")
            break

        game_info, game_moves = result

        # Process the game
        process_game(game_count, game_info, game_moves)
        game_count += 1

    print(f"Total games processed: {game_count}")


def process_game(game_number, game_info, game_moves):
    print(f"\nGame {game_number + 1} information:")
    for header, value in zip(["Event", "Site", "Date", "Round", "White", "Black", "Result"], game_info):
        print(f"{header}: {value}")

    print("\nMoves:")
    print(game_moves)

    # You can add more processing here, such as analyzing the moves,
    # storing the data, or any other operation you need to perform on each game


# Usage
file_path = "example.pgn"
process_pgn_file(file_path)
```

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.