semvec/pypi-packages huggingface dataset:
crimson-types 0.1.6
Your package description.
Requires Python: >=3.9

**Template README.md**\
This file is from the [template repository](https://github.com/crimson206/template/blob/main/README.md).
Rewrite it for your own package.

## Python Package Setup

### Setup Base

To install required pip modules for `generate_toml.py`, run
``` bash
source scripts/setup_base.sh
```

### User Setup

- go to `generate_toml.py` file, and complete the setup in the `User Setup` session.

```python
options = Options(
    # Will you use the discussion session in your repo?
    discussion=False
)

# Define the general information of your package
kwargs = Kwargs(
    name_space="None",
    module_name="None",
    description="None",
)
```

If you wrote all the information, run
```
python generate_toml.py
```

#### Template

If you want to understand the generation process, check the `template` variable in `generate_toml.py`.

### Setup Env

#### Prerequisite

Finish [User Setup](#user-setup) first.
Of course, conda command must be available.

#### Setup Env

Run
``` bash
source scripts/setup_env.sh
```

steps
- create an conda environment named as your $MODULE_NAME
- activate the environment.
- install requirements.txt

#### Generate Private Env
Generate a private repository in this repo.
I recommend you to write all the unstructured codes in this repo.

``` bash
source scripts/generate_dev_repo.sh
```

It will ask you the name of your repo, and then, generate a repo named f'{your_repo_name}-dev'.

**Usage Tip**

If you wrote your codes in a wrong branch,
- backup the files to the dev repo
- remove changes in your main(not main branch) repo
- move to your correct branch
- place back the backup codes


## Workflows

I currently setup test and release workflows.

**Test**

If you make a PR with the patterns [ main, develop, 'release/*', 'feature/*' ],

It will perform your unittest in ["3.9", "3.10", "3.11"]

**Release**

required secret : PYPI_API_TOKEN

I usually make PRs only when I start release branches.
release workflow is not conducted automatically. If you think your branch is ready to be published, 

- go to https://github.com/{github_id}/{repo_name}/actions/workflows/release.yaml
- find the button, 'Run workflow'
- select the branch to publish. In my case, release/x.x.x
t4wefan-tomldb 0.1.9
A simple db using toml and pickle and dill.
Requires Python: >=3.10

# TomlDB

`TomlDB` 是一个基于 TOML 文件的简单数据库库，它支持 `JSON` 和 `pickle/dill` 序列化，并可以选择将大型对象存储到文件系统中。该库提供了线程安全的读写操作，确保多个进程可以安全地访问同一个数据库文件。

## 安装

推荐使用`uv`在已经初始化的项目中

```bash
uv add t4wefan-tomldb
```

或者

```bash
pip install t4wefan-tomldb
```

## 功能描述

## 功能

- **存储和检索数据**：使用 `set` 方法存储键值对，使用 `get` 方法检索数据。
- **序列化支持**：自动选择 `JSON` 或 `pickle` 序列化方法存储数据。
- **文件系统存储**：对于大型或无法 JSON 序列化的对象，可以选择使用文件系统存储。
- **线程安全**：使用文件锁，确保多线程和多进程的安全访问。
- **基本数据库操作**：支持 `set`、`get`、`delete`、`exists` 和 `keys` 操作。

## 使用示例

```python
from tomldb import TomlDB

# 创建一个数据库实例，选择是否将大型对象存储到文件系统
db = TomlDB() # 默认 use_pickle=False, store_to_fs=True，无法直接原生存进toml的对象会转为dill然后存入本地的文件，可以通过参数存为pickle

# 存储一个复杂的字典
db.set('user', {'name': 'Alice', 'age': 30, 'emails': ['alice@example.com', 'a.smith@example.com']})

# 检查键是否存在
if 'user' in db:
    print('user key exists in the database.')

# 检索数据
user_data = db.get('user')
print(user_data)  # 输出: {'name': 'Alice', 'age': 30, 'emails': ['alice@example.com', 'a.smith@example.com']}

# 删除数据
db.delete('user')

# 获取所有键
keys = db.keys()
print(keys)  # 输出: 所有存在的键的列表

db.clear_database() # 清空数据库，这会删除toml文件和所有存储的文件
```

## 注意事项

- 如果选择将对象存储到文件系统中（`store_to_fs=True`），则会自动创建一个隐藏目录，用于存储 `pickle/dill` 文件。
- 确保对数据库文件有读写权限。
- 在多进程环境中使用时，建议使用 `FileLock` 提供的锁机制来确保线程安全。

## 许可证

本项目使用 MIT 许可证。有关更多信息，请参见 LICENSE 文件。