twnet_parser/README.md

94 lines
2.9 KiB
Markdown
Raw Normal View History

2023-03-16 13:49:55 +00:00
A teeworlds network protocol library, designed according to sans I/O (http://sans-io.readthedocs.io/) principles
2023-03-12 21:12:07 +00:00
2023-03-19 10:44:40 +00:00
# THIS LIBRARY IS IN EARLY DEVELOPMENT
Do not get bamboozled by the mature looking readme!
This project is not in a very usable state yet. It is in very early development!
APIs might change and many essential features are missing!
## install
```bash
pip install twnet_parser
```
2023-03-16 09:26:36 +00:00
## sample usage
2023-03-12 21:12:07 +00:00
```python
import twnet_parser.packet
packet = twnet_parser.packet.parse7(b'\x04\x0a\x00\xcf\x2e\xde\x1d\04') # 0.7 close
2023-03-16 11:08:02 +00:00
print(packet) # => <class: 'TwPacket'>: {'version': '0.7', 'header': <class: 'Header'>, 'messages': [<class: 'CtrlMessage'>]}
print(packet.header) # => <class: 'Header'>: {'flags': <class: 'PacketFlags7, 'size': 0, 'ack': 10, 'token': b'\xcf.\xde\x1d', 'num_chunks': 0}
print(packet.header.flags) # => <class: 'PacketFlags7'>: {'control': True, 'resend': False, 'compression': False, 'connless': False}
for msg in packet.messages:
print(msg.message_name) # => close
2023-03-12 21:12:07 +00:00
```
2023-03-14 21:58:06 +00:00
2023-03-18 08:35:43 +00:00
## Features
| Feature | Status |
| ------------------------------ | ------------------ |
| Deserialize 0.7 packet headers | :heavy_check_mark: |
| Deserialize 0.7 chunk headers | |
| Deserialize 0.7 messages | |
| Serialize 0.7 packet headers | |
| Serialize 0.7 chunk headers | |
| Serialize 0.7 messages | |
| Deserialize 0.6 packet headers | |
| Deserialize 0.6 chunk headers | |
| Deserialize 0.6 messages | |
| Serialize 0.6 packet headers | |
| Serialize 0.6 chunk headers | |
| Serialize 0.6 messages | |
## Non-Features (also not planned for this library)
| Feature | Status | Where to find it |
| ------------------------------ | ------- | ------------------------------------------- |
| Networking | :x: | TODO: link if someone implemented it on top |
| Protocol version detection | :x: | TODO: link if someone implemented it on top |
Look elsewhere for these features. Or use this library to implement them on top.
## development setup
2023-03-14 21:58:06 +00:00
```bash
git clone https://gitlab.com/teeworlds-network/twnet_parser
cd twnet_parser
python -m venv venv
source venv/bin/activate
2023-03-16 16:08:27 +00:00
pip install -r requirements/dev.txt
2023-03-14 21:58:06 +00:00
```
2023-03-16 13:04:48 +00:00
## tests and linting
```bash
2023-03-16 13:49:55 +00:00
# dev dependencies
pip install -r requirements/dev.txt
2023-03-16 13:04:48 +00:00
# run unit tests
pytest .
# run style linter
pylint src/
# run type checker
mypy src/
```
2023-03-16 13:49:55 +00:00
## package and release
```bash
2023-03-16 15:43:53 +00:00
# manual
2023-03-16 13:49:55 +00:00
pip install -r requirements/dev.txt
2023-03-16 15:43:53 +00:00
version=0.0.2
sed "s/^version =.*/version = $version/" setup.cfg
2023-03-16 13:49:55 +00:00
python -m build
2023-03-16 15:43:53 +00:00
git tag -a "v$version" -m "# version $version"
2023-03-16 13:49:55 +00:00
python -m twine upload dist/*
2023-03-16 15:43:53 +00:00
# or use the interactive convience script
./scripts/release.sh
2023-03-16 13:49:55 +00:00
```