Skip to content

Commit 74a9ee4

Browse files
authored
Merge branch 'main' into protocol_listening
2 parents 50dcf11 + 5f5a59b commit 74a9ee4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+3120
-340
lines changed

CHANGELOG.md

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,188 @@
22

33
<!-- version list -->
44

5+
## v4.8.0 (2026-01-27)
6+
7+
### Features
8+
9+
- Add the ability to set q7 mode
10+
([#748](https://github.com/Python-roborock/python-roborock/pull/748),
11+
[`bf1f8af`](https://github.com/Python-roborock/python-roborock/commit/bf1f8af7bf39a15d546fbd420ff3979f7014042c))
12+
13+
14+
## v4.7.2 (2026-01-20)
15+
16+
### Bug Fixes
17+
18+
- Handle different error format for map status
19+
([#744](https://github.com/Python-roborock/python-roborock/pull/744),
20+
[`9897379`](https://github.com/Python-roborock/python-roborock/commit/98973795af550ed7940c9c637c85adc84ec5a511))
21+
22+
23+
## v4.7.1 (2026-01-19)
24+
25+
### Bug Fixes
26+
27+
- Add rooms from map_info which is occassionally available
28+
([#750](https://github.com/Python-roborock/python-roborock/pull/750),
29+
[`814054e`](https://github.com/Python-roborock/python-roborock/commit/814054ee4200c5f172d3f658843a9c8ee99c7f52))
30+
31+
32+
## v4.7.0 (2026-01-18)
33+
34+
### Chores
35+
36+
- Address PR comments ([#747](https://github.com/Python-roborock/python-roborock/pull/747),
37+
[`a97e90a`](https://github.com/Python-roborock/python-roborock/commit/a97e90aa11b4e60732014d8d65265a334568f32c))
38+
39+
- Include snapshots ([#747](https://github.com/Python-roborock/python-roborock/pull/747),
40+
[`a97e90a`](https://github.com/Python-roborock/python-roborock/commit/a97e90aa11b4e60732014d8d65265a334568f32c))
41+
42+
- **deps-dev**: Bump ruff from 0.14.10 to 0.14.11
43+
([#742](https://github.com/Python-roborock/python-roborock/pull/742),
44+
[`9274642`](https://github.com/Python-roborock/python-roborock/commit/92746429ddb029e20073dab127598645a223c856))
45+
46+
### Features
47+
48+
- Add from diagnostics ([#747](https://github.com/Python-roborock/python-roborock/pull/747),
49+
[`a97e90a`](https://github.com/Python-roborock/python-roborock/commit/a97e90aa11b4e60732014d8d65265a334568f32c))
50+
51+
- Improve device_info ([#747](https://github.com/Python-roborock/python-roborock/pull/747),
52+
[`a97e90a`](https://github.com/Python-roborock/python-roborock/commit/a97e90aa11b4e60732014d8d65265a334568f32c))
53+
54+
55+
## v4.6.0 (2026-01-18)
56+
57+
### Chores
58+
59+
- **deps**: Bump aiohttp from 3.13.2 to 3.13.3
60+
([#732](https://github.com/Python-roborock/python-roborock/pull/732),
61+
[`e438364`](https://github.com/Python-roborock/python-roborock/commit/e438364e7619b2e9658cdffeace9b2b6e4e19269))
62+
63+
### Features
64+
65+
- Add 2 new states for zeostate in zeo_code_mappings
66+
([#689](https://github.com/Python-roborock/python-roborock/pull/689),
67+
[`3482e4e`](https://github.com/Python-roborock/python-roborock/commit/3482e4eaafcea7dbc004c28e094e260cdf822e79))
68+
69+
70+
## v4.5.0 (2026-01-14)
71+
72+
### Chores
73+
74+
- Add test ([#743](https://github.com/Python-roborock/python-roborock/pull/743),
75+
[`e26e351`](https://github.com/Python-roborock/python-roborock/commit/e26e351474a006485c6a7b5a5dcdbbe9fab8572e))
76+
77+
### Features
78+
79+
- Raise no account error when bad login
80+
([#743](https://github.com/Python-roborock/python-roborock/pull/743),
81+
[`e26e351`](https://github.com/Python-roborock/python-roborock/commit/e26e351474a006485c6a7b5a5dcdbbe9fab8572e))
82+
83+
84+
## v4.4.0 (2026-01-12)
85+
86+
### Features
87+
88+
- Iterate possible iot domains on 3030 error
89+
([#733](https://github.com/Python-roborock/python-roborock/pull/733),
90+
[`f2e1d51`](https://github.com/Python-roborock/python-roborock/commit/f2e1d5156dd905e296d5ed38605d4fd6f97bfbb4))
91+
92+
93+
## v4.3.0 (2026-01-10)
94+
95+
### Chores
96+
97+
- Add function to create field metadata
98+
([#740](https://github.com/Python-roborock/python-roborock/pull/740),
99+
[`bdc1591`](https://github.com/Python-roborock/python-roborock/commit/bdc159192cfb2afa02199171288a20b228abb7f6))
100+
101+
- Simplify supported_schema_codes
102+
([#740](https://github.com/Python-roborock/python-roborock/pull/740),
103+
[`bdc1591`](https://github.com/Python-roborock/python-roborock/commit/bdc159192cfb2afa02199171288a20b228abb7f6))
104+
105+
- Update pydoc for DeviceFeaturesTrait
106+
([#740](https://github.com/Python-roborock/python-roborock/pull/740),
107+
[`bdc1591`](https://github.com/Python-roborock/python-roborock/commit/bdc159192cfb2afa02199171288a20b228abb7f6))
108+
109+
- Update test descrition ([#740](https://github.com/Python-roborock/python-roborock/pull/740),
110+
[`bdc1591`](https://github.com/Python-roborock/python-roborock/commit/bdc159192cfb2afa02199171288a20b228abb7f6))
111+
112+
- Update to use StrEnum ([#740](https://github.com/Python-roborock/python-roborock/pull/740),
113+
[`bdc1591`](https://github.com/Python-roborock/python-roborock/commit/bdc159192cfb2afa02199171288a20b228abb7f6))
114+
115+
### Features
116+
117+
- Add an approach for determining if a dataclass field is supported
118+
([#740](https://github.com/Python-roborock/python-roborock/pull/740),
119+
[`bdc1591`](https://github.com/Python-roborock/python-roborock/commit/bdc159192cfb2afa02199171288a20b228abb7f6))
120+
121+
122+
## v4.2.2 (2026-01-09)
123+
124+
### Bug Fixes
125+
126+
- Decrease home data rate limits
127+
([#741](https://github.com/Python-roborock/python-roborock/pull/741),
128+
[`29eb984`](https://github.com/Python-roborock/python-roborock/commit/29eb984d22494b08f26ec6e220b7c823b67d3242))
129+
130+
### Chores
131+
132+
- Add additional Home data to diagnostics
133+
([#723](https://github.com/Python-roborock/python-roborock/pull/723),
134+
[`c29dfc8`](https://github.com/Python-roborock/python-roborock/commit/c29dfc81f4de1bb293b2918482cf681197ef3698))
135+
136+
- Add CONTRIBUTING.md ([#734](https://github.com/Python-roborock/python-roborock/pull/734),
137+
[`881b7d6`](https://github.com/Python-roborock/python-roborock/commit/881b7d687789c57eec20bf9011a195b4befff129))
138+
139+
- Add CONTRIBUTINGmd ([#734](https://github.com/Python-roborock/python-roborock/pull/734),
140+
[`881b7d6`](https://github.com/Python-roborock/python-roborock/commit/881b7d687789c57eec20bf9011a195b4befff129))
141+
142+
- Add s5e device and product data examples
143+
([#737](https://github.com/Python-roborock/python-roborock/pull/737),
144+
[`586bb3f`](https://github.com/Python-roborock/python-roborock/commit/586bb3f77e4655d4aae2d201746980b1c227160d))
145+
146+
- Add Saros 10R API response data
147+
([#726](https://github.com/Python-roborock/python-roborock/pull/726),
148+
[`fafc8d8`](https://github.com/Python-roborock/python-roborock/commit/fafc8d86833a2aac3ee69c7a1f353f83551eeb6f))
149+
150+
- Fix diagnostic lint issues ([#723](https://github.com/Python-roborock/python-roborock/pull/723),
151+
[`c29dfc8`](https://github.com/Python-roborock/python-roborock/commit/c29dfc81f4de1bb293b2918482cf681197ef3698))
152+
153+
- Fix mock data lint ([#726](https://github.com/Python-roborock/python-roborock/pull/726),
154+
[`fafc8d8`](https://github.com/Python-roborock/python-roborock/commit/fafc8d86833a2aac3ee69c7a1f353f83551eeb6f))
155+
156+
- Fix schema redaction ([#723](https://github.com/Python-roborock/python-roborock/pull/723),
157+
[`c29dfc8`](https://github.com/Python-roborock/python-roborock/commit/c29dfc81f4de1bb293b2918482cf681197ef3698))
158+
159+
- Improve redaction logic to support more complex paths
160+
([#723](https://github.com/Python-roborock/python-roborock/pull/723),
161+
[`c29dfc8`](https://github.com/Python-roborock/python-roborock/commit/c29dfc81f4de1bb293b2918482cf681197ef3698))
162+
163+
- Remove duplicate data in test_q7_device
164+
([#736](https://github.com/Python-roborock/python-roborock/pull/736),
165+
[`cd6cbbe`](https://github.com/Python-roborock/python-roborock/commit/cd6cbbe1be22a619a88d76783c60c936dbbc744d))
166+
167+
- Update device snapshots and lint errors
168+
([#723](https://github.com/Python-roborock/python-roborock/pull/723),
169+
[`c29dfc8`](https://github.com/Python-roborock/python-roborock/commit/c29dfc81f4de1bb293b2918482cf681197ef3698))
170+
171+
- Update e2e tests for q7 to use different product data
172+
([#736](https://github.com/Python-roborock/python-roborock/pull/736),
173+
[`cd6cbbe`](https://github.com/Python-roborock/python-roborock/commit/cd6cbbe1be22a619a88d76783c60c936dbbc744d))
174+
175+
- Update end to end q7 tests ([#736](https://github.com/Python-roborock/python-roborock/pull/736),
176+
[`cd6cbbe`](https://github.com/Python-roborock/python-roborock/commit/cd6cbbe1be22a619a88d76783c60c936dbbc744d))
177+
178+
- Update steps to activate virtual environment
179+
([#734](https://github.com/Python-roborock/python-roborock/pull/734),
180+
[`881b7d6`](https://github.com/Python-roborock/python-roborock/commit/881b7d687789c57eec20bf9011a195b4befff129))
181+
182+
- Use built-in as_dict method for creating diagnostic data
183+
([#723](https://github.com/Python-roborock/python-roborock/pull/723),
184+
[`c29dfc8`](https://github.com/Python-roborock/python-roborock/commit/c29dfc81f4de1bb293b2918482cf681197ef3698))
185+
186+
5187
## v4.2.1 (2026-01-05)
6188

7189
### Bug Fixes

CONTRIBUTING.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Contributing to python-roborock
2+
3+
Thank you for your interest in contributing to `python-roborock`! We welcome contributions from the community.
4+
5+
## Getting Started
6+
7+
1. **Fork the repository** on GitHub.
8+
2. **Clone your fork** locally:
9+
```bash
10+
git clone https://github.com/your-username/python-roborock.git
11+
cd python-roborock
12+
```
13+
3. **Set up your environment**. This project typically tries to stay on the most recent python versions (e.g. latest 2 or 3 versions). We use `uv` for dependency management:
14+
```bash
15+
# Create virtual environment and install dependencies
16+
uv venv
17+
uv sync
18+
```
19+
4. **Activate the virtual environment**. This is required for running `pre-commit` hooks and `pytest`:
20+
```bash
21+
source .venv/bin/activate
22+
```
23+
24+
5. **Install pre-commit hooks**. This ensures your code meets our quality standards. Once installed, these hooks run automatically on staged files when you commit:
25+
```bash
26+
pre-commit install
27+
```
28+
29+
## Development Workflow
30+
31+
### Code Style
32+
33+
We use several tools to enforce code quality and consistency. These are configured via `pre-commit` and generally run automatically.
34+
35+
* **Ruff**: Used for linting and formatting.
36+
* **Mypy**: Used for static type checking.
37+
* **Codespell**: Checks for common misspellings.
38+
39+
You can verify your changes manually before committing (checks all files):
40+
41+
```bash
42+
# Run all pre-commit hooks
43+
pre-commit run --all-files
44+
```
45+
46+
### Testing
47+
48+
We use `pytest` for testing. Please ensure all tests pass and add new tests for your changes.
49+
50+
```bash
51+
# Run tests
52+
pytest
53+
```
54+
55+
## Pull Requests
56+
57+
1. **Create a branch** for your changes.
58+
2. **Make your changes**. Keep your changes focused and atomic.
59+
3. **Commit your changes**.
60+
* **Important**: We use [Conventional Commits](https://www.conventionalcommits.org/). Please format your commit messages accordingly (e.g., `feat: add new vacuum model`, `fix: handle connection timeout`). This is required for our automated release process.
61+
* Allowed types: `chore`, `docs`, `feat`, `fix`, `refactor`.
62+
4. **Push to your fork** and submit a **Pull Request**.
63+
64+
## Adding New Devices or Features
65+
66+
If you are adding support for a new device or feature, please follow these steps:
67+
68+
1. **Update Device Info**: Use the CLI to discover and fetch device features.
69+
```bash
70+
roborock get-device-info
71+
```
72+
Arguments and output will be printed to the console. **Manually copy the YAML output** from this command into the `device_info.yaml` file.
73+
74+
2. **Add Test Data**:
75+
* **Home API Data**: Capture device information from Home API responses and save as `tests/testdata/home_data_<device>.json`. This helps test device discovery and initialization.
76+
* **Protocol/Feature Data**: Capture actual device responses or protocol data. You can often see these messages in the DEBUG logs when interacting with the device. Create JSON files in `tests/protocols/testdata/` that reflect these responses. This ensures protocol parsing works correctly against real-world data.
77+
78+
## Code of Conduct
79+
80+
Please be respectful and considerate in your interactions.

0 commit comments

Comments
 (0)