starrocks-br 0.2.0__py3-none-any.whl → 0.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
starrocks_br/planner.py CHANGED
@@ -1,5 +1,6 @@
1
1
  from typing import List, Dict, Optional
2
2
  import datetime
3
+ import hashlib
3
4
 
4
5
  from starrocks_br import logger, timezone
5
6
 
@@ -232,7 +233,7 @@ def build_full_backup_command(db, group_name: str, repository: str, label: str,
232
233
 
233
234
  def record_backup_partitions(db, label: str, partitions: List[Dict[str, str]]) -> None:
234
235
  """Record partition metadata for a backup in ops.backup_partitions table.
235
-
236
+
236
237
  Args:
237
238
  db: Database connection
238
239
  label: Backup label
@@ -240,12 +241,15 @@ def record_backup_partitions(db, label: str, partitions: List[Dict[str, str]]) -
240
241
  """
241
242
  if not partitions:
242
243
  return
243
-
244
+
244
245
  for partition in partitions:
246
+ composite_key = f"{label}|{partition['database']}|{partition['table']}|{partition['partition_name']}"
247
+ key_hash = hashlib.md5(composite_key.encode('utf-8')).hexdigest()
248
+
245
249
  db.execute(f"""
246
- INSERT INTO ops.backup_partitions
247
- (label, database_name, table_name, partition_name)
248
- VALUES ('{label}', '{partition['database']}', '{partition['table']}', '{partition['partition_name']}')
250
+ INSERT INTO ops.backup_partitions
251
+ (key_hash, label, database_name, table_name, partition_name)
252
+ VALUES ('{key_hash}', '{label}', '{partition['database']}', '{partition['table']}', '{partition['partition_name']}')
249
253
  """)
250
254
 
251
255
 
starrocks_br/schema.py CHANGED
@@ -71,8 +71,9 @@ def get_table_inventory_schema() -> str:
71
71
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
72
72
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
73
73
  )
74
- PRIMARY KEY (inventory_group, database_name, table_name)
74
+ UNIQUE KEY (inventory_group, database_name, table_name)
75
75
  COMMENT "Inventory groups mapping to databases/tables (supports '*' wildcard)"
76
+ DISTRIBUTED BY HASH(inventory_group)
76
77
  """
77
78
 
78
79
 
@@ -133,12 +134,14 @@ def get_backup_partitions_schema() -> str:
133
134
  """Get CREATE TABLE statement for backup_partitions."""
134
135
  return """
135
136
  CREATE TABLE IF NOT EXISTS ops.backup_partitions (
137
+ key_hash STRING NOT NULL COMMENT "MD5 hash of composite key (label, database_name, table_name, partition_name)",
136
138
  label STRING NOT NULL COMMENT "The backup label this partition belongs to. FK to ops.backup_history.label.",
137
139
  database_name STRING NOT NULL COMMENT "The name of the database the partition belongs to.",
138
140
  table_name STRING NOT NULL COMMENT "The name of the table the partition belongs to.",
139
141
  partition_name STRING NOT NULL COMMENT "The name of the specific partition.",
140
142
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT "Timestamp when this record was created."
141
143
  )
142
- PRIMARY KEY (label, database_name, table_name, partition_name)
144
+ PRIMARY KEY (key_hash)
143
145
  COMMENT "Tracks every partition included in a backup snapshot."
146
+ DISTRIBUTED BY HASH(key_hash)
144
147
  """
@@ -0,0 +1,456 @@
1
+ Metadata-Version: 2.4
2
+ Name: starrocks-br
3
+ Version: 0.3.0
4
+ Summary: StarRocks Backup and Restore automation tool
5
+ Requires-Python: >=3.9
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: click<9,>=8.1.7
8
+ Requires-Dist: PyYAML<7,>=6.0.1
9
+ Requires-Dist: mysql-connector-python<10,>=9.0.0
10
+ Provides-Extra: dev
11
+ Requires-Dist: pytest<9,>=8.3.2; extra == "dev"
12
+ Requires-Dist: pytest-mock<4,>=3.14.0; extra == "dev"
13
+ Requires-Dist: pytest-cov<6,>=5.0.0; extra == "dev"
14
+
15
+ # StarRocks Backup & Restore - CLI Usage Guide
16
+
17
+ ## Overview
18
+
19
+ The StarRocks Backup & Restore tool provides production-grade automation for backup and restore operations.
20
+
21
+ **Important:** This tool requires StarRocks 3.5 or later. Earlier versions are not supported due to differences in the `SHOW FRONTENDS` and `SHOW BACKENDS` command output formats, which are used for cluster health checks.
22
+
23
+ **📋 [View Release Notes & Changelog](CHANGELOG.md)**
24
+
25
+ ## Summary
26
+
27
+ - [Installation](#installation)
28
+ - [Quick Start](#quick-start)
29
+ - [Configuration](#configuration)
30
+ - [Password Management](#password-management)
31
+ - [Connecting with TLS/SSL](#connecting-with-tlsssl)
32
+ - [Commands](#commands)
33
+ - [Example Usage Scenarios](#example-usage-scenarios)
34
+ - [Error Handling](#error-handling)
35
+ - [Monitoring](#monitoring)
36
+ - [Changelog](CHANGELOG.md)
37
+
38
+ ## Installation
39
+
40
+ ### Option 1: Install from PyPI (Recommended for Production)
41
+
42
+ We recommend using a virtual environment to ensure proper script availability and dependency isolation:
43
+
44
+ ```bash
45
+ # Create and activate a virtual environment
46
+ python3 -m venv .venv
47
+ source .venv/bin/activate # On Linux/Mac
48
+ # .venv\Scripts\activate # On Windows
49
+
50
+ # Install the package from PyPI
51
+ pip install starrocks-br
52
+
53
+ # Verify the installation
54
+ starrocks-br --help
55
+ ```
56
+
57
+ **Note:** Always activate the virtual environment before using the tool. The `starrocks-br` command will only be available when the virtual environment is activated.
58
+
59
+ ### Option 2: Download Pre-built Standalone Executable
60
+
61
+ If you prefer not to manage Python environments, you can download a bundled executable that includes the Python runtime and all dependencies.
62
+
63
+ 1. **Download the artifact** for your platform from the latest [Build Executables workflow run](https://github.com/deep-bi/starrocks-br/actions/workflows/build-executables.yml) (Artifacts section).
64
+ - `starrocks-br-linux-x86_64` → Linux (Intel/AMD)
65
+ - `starrocks-br-windows-x86_64` → Windows (Intel/AMD)
66
+ - `starrocks-br-macos-arm64` → macOS on Apple Silicon (M1/M2/M3)
67
+ - `starrocks-br-macos-x86_64` → macOS on Intel chips
68
+
69
+ 2. **Extract the ZIP file** (artifacts are delivered as ZIPs).
70
+
71
+ 3. **Make the file executable (Linux/macOS):**
72
+ ```bash
73
+ chmod +x starrocks-br
74
+ ```
75
+
76
+ 4. **Run it directly:**
77
+ ```bash
78
+ ./starrocks-br --help # Linux/macOS
79
+ .\starrocks-br.exe --help # Windows (PowerShell)
80
+ ```
81
+
82
+ 5. **Keep it updated:** Download the latest artifact whenever a new release is published. (Future releases will bundle executables automatically.)
83
+
84
+ **Need to build it yourself?** Clone the repo and run `./build_executable.sh` to recreate the executable locally (see script for details).
85
+
86
+ ### Option 3: Using Devbox (Recommended for Development)
87
+
88
+ **Note:** This requires cloning the repository first.
89
+
90
+ [Devbox](https://www.jetify.com/devbox) is a reproducible development environment that installs all required tools (Python, dependencies, virtualenv) in one step.
91
+
92
+ ```bash
93
+ # Clone the repository
94
+ git clone https://github.com/deep-bi/starrocks-br
95
+ cd starrocks-br
96
+
97
+ # Install devbox (if not already installed)
98
+ curl -fsSL https://get.jetpack.io/devbox | bash
99
+
100
+ # Start devbox shell - this automatically:
101
+ # - Installs Python 3.11 and dependencies
102
+ # - Creates a virtual environment (.venv)
103
+ # - Installs the package in editable mode
104
+ # - Installs development dependencies
105
+ devbox shell
106
+
107
+ # Once inside the devbox shell, you're ready to go:
108
+ starrocks-br --help
109
+ pytest
110
+ ```
111
+
112
+ ### Option 4: Manual Development Setup
113
+
114
+ ```bash
115
+ # Clone the repository
116
+ git clone https://github.com/deep-bi/starrocks-br
117
+ cd starrocks-br
118
+
119
+ # Create and activate virtual environment
120
+ python3 -m venv .venv
121
+ source .venv/bin/activate
122
+
123
+ # Install in editable mode with development dependencies
124
+ pip install -e ".[dev]"
125
+
126
+ # The CLI is now available as: starrocks-br
127
+ ```
128
+
129
+ ## Quick Start
130
+
131
+ After installing the CLI (via PyPI, executable download, Devbox, or manual setup), follow these steps:
132
+
133
+ 1. **Activate your virtual environment** (if not already active):
134
+ ```bash
135
+ source .venv/bin/activate # On Linux/Mac
136
+ # .venv\Scripts\activate # On Windows
137
+ ```
138
+
139
+ 2. **Verify installation:**
140
+ ```bash
141
+ starrocks-br --help
142
+ ```
143
+
144
+ 3. **Create your `config.yaml` file** (see Configuration section below)
145
+
146
+ 4. **Set your password as an environment variable:**
147
+ ```bash
148
+ export STARROCKS_PASSWORD="your_password"
149
+ ```
150
+
151
+ On Windows (PowerShell):
152
+ ```powershell
153
+ $env:STARROCKS_PASSWORD="your_password"
154
+ ```
155
+
156
+ On Windows (Command Prompt):
157
+ ```cmd
158
+ set STARROCKS_PASSWORD=your_password
159
+ ```
160
+
161
+ 5. **Initialize the ops schema:**
162
+ ```bash
163
+ starrocks-br init --config config.yaml
164
+ ```
165
+
166
+ 6. **Start using the tool** - see Commands section below for details
167
+
168
+ ## Configuration
169
+
170
+ **Important:** After installing the package, you need to create your own `config.yaml` file. This file is **not included in the package** - each user creates it with their own StarRocks connection details. You can place it anywhere and reference it using the `--config` parameter.
171
+
172
+ Create a `config.yaml` file in your working directory (or any location you prefer) with your StarRocks connection details:
173
+
174
+ ```yaml
175
+ host: "127.0.0.1"
176
+ port: 9030
177
+ user: "root"
178
+ database: "your_database"
179
+ repository: "your_repo_name"
180
+ ```
181
+
182
+ **Password Management**
183
+
184
+ The database password must be provided via the `STARROCKS_PASSWORD` environment variable. This is a security measure to prevent storing credentials in configuration files.
185
+
186
+ ```bash
187
+ export STARROCKS_PASSWORD="your_password"
188
+ ```
189
+
190
+ ### Connecting with TLS/SSL
191
+
192
+ The tool can make secure connections to StarRocks using TLS. Add an optional `tls` section to your `config.yaml` when you need encryption.
193
+
194
+ #### Scenario 1: Server Authentication (Most Common)
195
+
196
+ Use this setup when the client only needs to verify the StarRocks server certificate.
197
+
198
+ ```yaml
199
+ host: "127.0.0.1"
200
+ port: 9030
201
+ user: "root"
202
+ database: "your_database"
203
+ repository: "your_repo_name"
204
+
205
+ tls:
206
+ enabled: true
207
+ ca_cert: "/path/to/ca.pem"
208
+ ```
209
+
210
+ - `enabled`: Turns TLS on or off.
211
+ - `ca_cert`: Certificate Authority file used to validate the server certificate.
212
+ - `verify_server_cert` (optional, default `true`): Disable only if you need to skip certificate validation.
213
+
214
+ #### Scenario 2: Mutual TLS (mTLS)
215
+
216
+ Use this when both the client and server must present certificates.
217
+
218
+ ```yaml
219
+ host: "127.0.0.1"
220
+ port: 9030
221
+ user: "root"
222
+ database: "your_database"
223
+ repository: "your_repo_name"
224
+
225
+ tls:
226
+ enabled: true
227
+ ca_cert: "/path/to/ca.pem"
228
+ client_cert: "/path/to/client-cert.pem"
229
+ client_key: "/path/to/client-key.pem"
230
+ ```
231
+
232
+ - `client_cert`: Client certificate presented to the server.
233
+ - `client_key`: Private key paired with the client certificate.
234
+
235
+ Regardless of the scenario, the connection defaults to modern TLS versions (`TLSv1.2`, `TLSv1.3`). Provide a `tls_versions` list if you need different protocol settings.
236
+
237
+ **Note:** The repository must be created in StarRocks using the `CREATE REPOSITORY` command before running backups. For example:
238
+
239
+ ```sql
240
+ CREATE REPOSITORY `your_repo_name`
241
+ WITH S3
242
+ ON LOCATION "s3://your-backup-bucket/backups/"
243
+ PROPERTIES (
244
+ "aws.s3.access_key" = "your-access-key",
245
+ "aws.s3.secret_key" = "your-secret-key",
246
+ "aws.s3.endpoint" = "https://s3.amazonaws.com"
247
+ );
248
+ ```
249
+
250
+ ## Commands
251
+
252
+ ### Initialize Schema
253
+
254
+ Before running backups, initialize the ops database and control tables:
255
+
256
+ ```bash
257
+ starrocks-br init --config config.yaml
258
+ ```
259
+
260
+ **What it does:**
261
+ - Creates `ops` database
262
+ - Creates `ops.table_inventory`: Inventory groups mapping to databases/tables
263
+ - Creates `ops.backup_history`: Backup operation history
264
+ - Creates `ops.restore_history`: Restore operation history
265
+ - Creates `ops.run_status`: Job concurrency control
266
+ - Creates `ops.backup_partitions`: Partition manifest for each backup (enables intelligent restore)
267
+
268
+ **Next step:** Populate `ops.table_inventory` with your backup groups. For example:
269
+ ```sql
270
+ INSERT INTO ops.table_inventory (inventory_group, database_name, table_name)
271
+ VALUES
272
+ ('daily_facts', 'your_db', 'fact_sales'),
273
+ ('weekly_dims', 'your_db', 'dim_users'),
274
+ ('weekly_dims', 'your_db', 'dim_products'),
275
+ ('full_db_backup', 'your_db', '*'); -- Wildcard for all tables
276
+ ```
277
+
278
+ **Note:** If you skip this step, the ops schema will be auto-created on your first backup/restore operation (with a warning).
279
+
280
+ ### Backup Commands
281
+
282
+ Backups are managed through "inventory groups" defined in `ops.table_inventory`. This provides a flexible way to schedule different backup strategies for different sets of tables.
283
+
284
+ #### 1. Full Backup
285
+
286
+ Runs a full backup for all tables within a specified inventory group.
287
+
288
+ ```bash
289
+ starrocks-br backup full --config config.yaml --group <group_name>
290
+ ```
291
+
292
+ **Parameters:**
293
+ - `--group`: The inventory group to back up.
294
+
295
+ **Internal flow:**
296
+ 1. Load config → verify cluster health → ensure repository exists
297
+ 2. Reserve job slot (prevent concurrent backups)
298
+ 3. Query `ops.table_inventory` for all tables in the specified group.
299
+ 4. Generate a unique backup label.
300
+ 5. Build and execute the `BACKUP` command for the resolved tables.
301
+ 6. Poll `SHOW BACKUP` until completion and log results.
302
+
303
+ #### 2. Incremental Backup
304
+
305
+ Backs up only the partitions that have changed since the last successful full backup for a given inventory group.
306
+
307
+ ```bash
308
+ starrocks-br backup incremental --config config.yaml --group <group_name>
309
+ ```
310
+
311
+ **Parameters:**
312
+ - `--group`: The inventory group to back up.
313
+ - `--baseline-backup` (Optional): Specify a backup label to use as the baseline instead of the latest full backup.
314
+
315
+ **Internal flow:**
316
+ 1. Load config → verify cluster health → ensure repository exists
317
+ 2. Reserve job slot
318
+ 3. Find the latest successful full backup for the group to use as a baseline.
319
+ 4. Find recent partitions from `information_schema.partitions` for tables in the group.
320
+ 5. Generate a unique backup label.
321
+ 6. Build and execute the `BACKUP` command for the new partitions.
322
+ 7. Poll `SHOW BACKUP` until completion and log results.
323
+
324
+ ### Restore Commands
325
+
326
+ #### Intelligent Point-in-Time Restore
327
+
328
+ Restores data to a specific point in time using intelligent backup chain resolution. This command automatically determines the correct sequence of backups needed for restore.
329
+
330
+ ```bash
331
+ starrocks-br restore \
332
+ --config config.yaml \
333
+ --target-label my_db_20251016_inc \
334
+ --group daily_facts \
335
+ --rename-suffix _restored
336
+ ```
337
+
338
+ **Parameters:**
339
+ - `--config`: Path to config YAML file (required)
340
+ - `--target-label`: Backup label to restore to (required)
341
+ - `--group`: Optional inventory group to filter tables to restore (cannot be used with `--table`)
342
+ - `--table`: Optional table name to restore (table name only, database comes from config). Cannot be used with `--group`
343
+ - `--rename-suffix`: Suffix for temporary tables during restore (default: `_restored`)
344
+
345
+ **How it works:**
346
+ - **For full backups**: Restores directly from the target backup
347
+ - **For incremental backups**: Automatically restores the base full backup first, then applies the incremental
348
+ - **Safety mechanism**: Uses temporary tables with the specified suffix, then performs atomic rename to make restored data live
349
+
350
+ **Three Restore Modes:**
351
+ - **Disaster Recovery**: Restore all tables from a backup (omit both `--group` and `--table` parameters)
352
+ - **Surgical Restore by Group**: Restore only specific table groups (use `--group` parameter)
353
+ - **Single Table Restore**: Restore a specific table (use `--table` parameter). The table name should not include the database prefix - the database comes from the config file.
354
+
355
+ **Table Name Format:**
356
+ When using `--table`, provide only the table name (e.g., `fact_sales`), not `database.table_name`. The database is taken from the `database` field in your config file. For multiple tables, set up an inventory group and use `--group` instead.
357
+
358
+ **Purpose of `--rename-suffix`:**
359
+ The restore process creates temporary tables with the specified suffix (e.g., `table_restored`) to avoid conflicts with existing tables. Once the restore is complete and verified, the tool performs atomic renames to swap the original tables with the restored data. This ensures data safety and allows for rollback if needed.
360
+
361
+ **Internal flow:**
362
+ 1. Load config → verify cluster health → ensure repository exists
363
+ 2. Find the correct restore sequence (full backup + optional incremental)
364
+ 3. Get tables from backup manifest (optionally filtered by group)
365
+ 4. Execute restore flow with atomic renames
366
+ 5. Log to `ops.restore_history`
367
+
368
+ ## Example Usage Scenarios
369
+
370
+ ### Initial Setup
371
+
372
+ ```bash
373
+ # 1. Initialize ops schema (run once)
374
+ starrocks-br init --config config.yaml
375
+
376
+ # 2. Populate table inventory with your groups (in StarRocks)
377
+ INSERT INTO ops.table_inventory (inventory_group, database_name, table_name)
378
+ VALUES
379
+ ('daily_incrementals', 'sales_db', 'fact_orders'),
380
+ ('weekly_full', 'sales_db', 'dim_customers'),
381
+ ('weekly_full', 'sales_db', 'dim_products');
382
+ ```
383
+
384
+ ### Daily Incremental Backup (Mon-Sat)
385
+
386
+ ```bash
387
+ # Run via cron at 01:00
388
+ 0 1 * * 1-6 cd /path/to/starrocks-br && source .venv/bin/activate && starrocks-br backup incremental --config config.yaml --group daily_incrementals
389
+ ```
390
+
391
+ ### Weekly Full Backup (Sunday)
392
+
393
+ ```bash
394
+ # Run via cron at 01:00 on Sundays
395
+ 0 1 * * 0 cd /path/to/starrocks-br && source .venv/bin/activate && starrocks-br backup full --config config.yaml --group weekly_full
396
+ ```
397
+
398
+ ### Disaster Recovery - Point-in-Time Restore
399
+
400
+ ```bash
401
+ # Restore to a specific backup point (automatically handles full + incremental chain)
402
+ starrocks-br restore \
403
+ --config config.yaml \
404
+ --target-label sales_db_20251015_inc \
405
+ --group daily_facts
406
+
407
+ # Restore all tables from a full backup
408
+ starrocks-br restore \
409
+ --config config.yaml \
410
+ --target-label sales_db_20251014_full
411
+
412
+ # Restore a single table from a backup
413
+ starrocks-br restore \
414
+ --config config.yaml \
415
+ --target-label sales_db_20251015_inc \
416
+ --table fact_sales
417
+ ```
418
+
419
+ ## Error Handling
420
+
421
+ The CLI automatically handles:
422
+
423
+ - **Job slot conflicts**: Prevents overlapping backups/restores via `ops.run_status`
424
+ - **Label collisions**: Automatically appends `_r#` suffix if label exists
425
+ - **Cluster health**: Verifies FE/BE status before starting operations
426
+ - **Repository validation**: Ensures repository exists and is accessible
427
+ - **Graceful failures**: All errors are logged to history tables with proper status
428
+
429
+ ## Monitoring
430
+
431
+ All operations are logged to:
432
+ - `ops.backup_history`: Tracks all backup attempts with status, timestamps, and error messages
433
+ - `ops.restore_history`: Tracks all restore operations with verification checksums
434
+ - `ops.run_status`: Tracks active jobs to prevent conflicts
435
+
436
+ Query examples:
437
+
438
+ ```sql
439
+ -- Check recent backup status
440
+ SELECT label, backup_type, status, started_at, finished_at
441
+ FROM ops.backup_history
442
+ ORDER BY started_at DESC
443
+ LIMIT 10;
444
+
445
+ -- Check for failed backups
446
+ SELECT label, backup_type, error_message, started_at
447
+ FROM ops.backup_history
448
+ WHERE status = 'FAILED'
449
+ ORDER BY started_at DESC;
450
+
451
+ -- Check active jobs
452
+ SELECT scope, label, state, started_at
453
+ FROM ops.run_status
454
+ WHERE state = 'ACTIVE';
455
+ ```
456
+
@@ -8,13 +8,13 @@ starrocks_br/health.py,sha256=DpTy4uqk1UrbV0d9Wtk9Ke9K0iT4ndL-01gqqSywR_c,1050
8
8
  starrocks_br/history.py,sha256=j6eqkD1MyTvgoztffnLnr6-6VXd0gdvLxLLKxbC1AG0,3016
9
9
  starrocks_br/labels.py,sha256=D67JqIUWtFAnuj9thnC4Y7A0tzLk6d4YpBtDGhen1yc,1689
10
10
  starrocks_br/logger.py,sha256=QTfr-nC3TdeU7f1gcRTRDAQSLYpwaevd_iT1B_RbuF8,900
11
- starrocks_br/planner.py,sha256=_e65v5XRoXKJcLPX73UXKtA721TWjw2Txfet-TItXu8,10326
11
+ starrocks_br/planner.py,sha256=PB410LtUQOsu2EvMsnQhqfndQv4ess4i2YADErJ7J_Y,10541
12
12
  starrocks_br/repository.py,sha256=6uTJBYgQFEjJBlfhirriTkad80teTPcBSl_tphUExz4,1269
13
13
  starrocks_br/restore.py,sha256=_OzlQjPFkH7ySgFSSbpYZHY3A_U1Jz3-UKTwGl2AiQw,18965
14
- starrocks_br/schema.py,sha256=s_BAUhNgfQscRzhj-OB4xmp19CYZ0ZElyBfdht0_OSE,6114
14
+ starrocks_br/schema.py,sha256=yjmM2Bfu6rYLhj8-pthV6WcdwSuTWrhHr6A35E43dLs,6269
15
15
  starrocks_br/timezone.py,sha256=ONaudOgIfzPdJpZyIUSh0HF5D7oPQAtungNoUqtGM6M,3738
16
- starrocks_br-0.2.0.dist-info/METADATA,sha256=RnBcIZXdCArx1rXruABPf735XJjb3ZB1jy-egUrKBy0,419
17
- starrocks_br-0.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
18
- starrocks_br-0.2.0.dist-info/entry_points.txt,sha256=AKUt01G2MAlh85s1Q9kNQDOUio14kaTnT3dmg9gjdNg,54
19
- starrocks_br-0.2.0.dist-info/top_level.txt,sha256=CU1tGVo0kjulhDr761Sndg-oTeRKsisDnWm8UG95aBE,13
20
- starrocks_br-0.2.0.dist-info/RECORD,,
16
+ starrocks_br-0.3.0.dist-info/METADATA,sha256=Eyzq9VTf7cLzrxYmUC19hcPgbAhia9vnfdrg--CrBOs,15451
17
+ starrocks_br-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
18
+ starrocks_br-0.3.0.dist-info/entry_points.txt,sha256=AKUt01G2MAlh85s1Q9kNQDOUio14kaTnT3dmg9gjdNg,54
19
+ starrocks_br-0.3.0.dist-info/top_level.txt,sha256=CU1tGVo0kjulhDr761Sndg-oTeRKsisDnWm8UG95aBE,13
20
+ starrocks_br-0.3.0.dist-info/RECORD,,
@@ -1,12 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: starrocks-br
3
- Version: 0.2.0
4
- Summary: StarRocks Backup and Restore automation tool
5
- Requires-Python: >=3.9
6
- Requires-Dist: click<9,>=8.1.7
7
- Requires-Dist: PyYAML<7,>=6.0.1
8
- Requires-Dist: mysql-connector-python<10,>=9.0.0
9
- Provides-Extra: dev
10
- Requires-Dist: pytest<9,>=8.3.2; extra == "dev"
11
- Requires-Dist: pytest-mock<4,>=3.14.0; extra == "dev"
12
- Requires-Dist: pytest-cov<6,>=5.0.0; extra == "dev"