Metadata-Version: 2.4
Name: sdk369
Version: 0.0.1
Summary: sdk369 - a minimal, dependency-free Python package.
Author: sdk369 maintainers
License-Expression: MIT
Keywords: sdk369
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# sdk369

一个最小化、零依赖的 Python 包，已发布到 PyPI。

- 版本：0.0.1（Pre-Alpha）
- 依赖：无
- 支持：Python >= 3.9

```bash
pip install sdk369
```

> 名称说明：PyPI 会把 `sdk369`、`sdk-369`、`SDK369`、`sdk_369` 统统归一化成同一个项目名，
> 所以占住 `sdk369` 等于把这几种写法一起占了。

## 为什么不做纯空包？

PyPI 官方策略把「空包占名」列为无效项目：

> **Invalid projects** … project is name squatting (**package has no functionality or is empty**) …
> 这类项目会被直接从索引中移除。
> —— <https://docs.pypi.org/project-management/name-retention/>

所以这里的做法是：保持体积最小的同时让它是一个真实可用的包——
能 import、有公开 API、有命令行入口、有测试，不落进 "no functionality or is empty" 的判定。

## 发布前先改这几处

1. `pyproject.toml` 里的 `description`、`authors`，以及被注释掉的 `[project.urls]`（填仓库地址）。
2. `LICENSE` 里的版权主体。
3. `README.md` 改成你项目真正的内容。

## 本地安装与使用

```bash
python -m pip install -e .
python -m sdk369          # 打印包信息（JSON）
python -m sdk369 --version
sdk369                    # console script
```

跑测试：

```bash
python -m pip install pytest
python -m pytest -q
```

## 发布新版本

```bash
python -m pip install --upgrade build twine
rm -rf dist build src/*.egg-info
# 先把 pyproject.toml 里的 version 改成 0.0.2 之类的新版本号
python -m build
python -m twine check dist/*
TWINE_USERNAME=__token__ TWINE_PASSWORD='pypi-你的token' python -m twine upload dist/*
```

> PyPI 上的版本号**只前进、不可复用**，同一个版本号删除后也无法重传。

## 目录结构

```
sdk369/
├─ pyproject.toml          # 包元数据 + 构建配置
├─ README.md               # 本文件（即 PyPI 项目页正文）
├─ LICENSE                 # MIT
├─ .gitignore
├─ src/sdk369/
│  ├─ __init__.py          # 公开 API：__version__ / info()
│  ├─ __main__.py          # CLI 入口
│  └─ py.typed             # 声明带类型标注
└─ tests/test_smoke.py
```

## License

MIT
