zsynctech-studio-sdk 0.1.0__tar.gz

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.
Files changed (25) hide show
  1. zsynctech_studio_sdk-0.1.0/.github/workflows/deploy.yml +61 -0
  2. zsynctech_studio_sdk-0.1.0/.gitignore +10 -0
  3. zsynctech_studio_sdk-0.1.0/.python-version +1 -0
  4. zsynctech_studio_sdk-0.1.0/PKG-INFO +289 -0
  5. zsynctech_studio_sdk-0.1.0/README.md +276 -0
  6. zsynctech_studio_sdk-0.1.0/log.log +0 -0
  7. zsynctech_studio_sdk-0.1.0/pyproject.toml +28 -0
  8. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/__init__.py +21 -0
  9. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/client.py +39 -0
  10. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/enums/__init__.py +10 -0
  11. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/enums/execution.py +11 -0
  12. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/enums/step.py +8 -0
  13. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/enums/task.py +9 -0
  14. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/execution.py +156 -0
  15. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/models/__init__.py +12 -0
  16. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/models/base.py +47 -0
  17. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/models/config.py +32 -0
  18. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/models/execution.py +18 -0
  19. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/models/step.py +28 -0
  20. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/models/task.py +29 -0
  21. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/start.py +88 -0
  22. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/step.py +90 -0
  23. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/task.py +103 -0
  24. zsynctech_studio_sdk-0.1.0/src/zsynctech_studio_sdk/utils.py +21 -0
  25. zsynctech_studio_sdk-0.1.0/uv.lock +264 -0
@@ -0,0 +1,61 @@
1
+ name: Deploy
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ workflow_dispatch: # permite rodar manualmente
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout repository
14
+ uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+
23
+ - name: Install uv
24
+ run: pip install uv
25
+
26
+ - name: Install dependencies
27
+ run: uv sync --all-extras --dev
28
+
29
+ - name: Build package
30
+ run: uv build
31
+
32
+ - name: Get project version
33
+ id: version
34
+ run: |
35
+ VERSION=$(uv run python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
36
+ echo "VERSION=$VERSION" >> $GITHUB_ENV
37
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
38
+
39
+ - name: Create git tag if not exists
40
+ run: |
41
+ if git ls-remote --tags origin | grep -q "refs/tags/v${{ env.VERSION }}"; then
42
+ echo "Tag v${{ env.VERSION }} already exists, skipping tag creation."
43
+ else
44
+ git config user.name "github-actions[bot]"
45
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
46
+ git tag v${{ env.VERSION }}
47
+ git push origin v${{ env.VERSION }}
48
+ fi
49
+
50
+ - name: Publish package
51
+ env:
52
+ UV_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
53
+ UV_TEST_PYPI_TOKEN: ${{ secrets.TEST_PYPI_TOKEN }}
54
+ run: |
55
+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
56
+ echo "Publishing to TestPyPI..."
57
+ uv publish --username __token__ --password $UV_TEST_PYPI_TOKEN --index-url https://test.pypi.org/legacy/
58
+ else
59
+ echo "Publishing to PyPI..."
60
+ uv publish --username __token__ --password $UV_PYPI_TOKEN
61
+ fi
@@ -0,0 +1,10 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,289 @@
1
+ Metadata-Version: 2.4
2
+ Name: zsynctech-studio-sdk
3
+ Version: 0.1.0
4
+ Summary: Lib
5
+ Author-email: ZSync Tech LTDA <contato@zsynctech.com>
6
+ Requires-Python: >=3.13
7
+ Requires-Dist: httpx>=0.28.1
8
+ Requires-Dist: pika>=1.3.2
9
+ Requires-Dist: pydantic>=2.11.7
10
+ Requires-Dist: rich>=14.1.0
11
+ Requires-Dist: uuid7>=0.1.0
12
+ Description-Content-Type: text/markdown
13
+
14
+ # ZSync Tech Studio SDK
15
+
16
+ SDK oficial da ZSync Tech para integração com o ZSync Tech Studio, uma plataforma de automação de processos. Este SDK permite que você desenvolva robôs de automação que se integram perfeitamente com o ecossistema ZSync Tech.
17
+
18
+ ![PyPI](https://img.shields.io/badge/version-0.1.0-green)
19
+
20
+ ## 📋 Índice
21
+
22
+ - [Instalação](#instalação)
23
+ - [Configuração Inicial](#configuração-inicial)
24
+ - [Conceitos Básicos](#conceitos-básicos)
25
+ - [Guia de Uso](#guia-de-uso)
26
+ - [StartService - Recebendo Configurações](#startservice---recebendo-configurações)
27
+ - [Execution - Gerenciando Execuções](#execution---gerenciando-execuções)
28
+ - [Task - Gerenciando Tarefas](#task---gerenciando-tarefas)
29
+ - [Step - Gerenciando Passos](#step---gerenciando-passos)
30
+ - [Exemplo Completo](#exemplo-completo)
31
+ - [API Reference](#api-reference)
32
+ - [Dependências](#dependências)
33
+ - [Suporte](#suporte)
34
+
35
+ ## 🚀 Instalação via pip
36
+
37
+ ```bash
38
+ pip install zsynctech-studio-sdk
39
+ ```
40
+
41
+ ## 🚀 Instalação via uv
42
+
43
+ ```bash
44
+ uv add zsynctech-studio-sdk
45
+ ```
46
+
47
+ ## ⚙️ Configuração Inicial
48
+
49
+ Antes de usar o SDK, você precisa configurar suas credenciais:
50
+
51
+ ```python
52
+ from zsynctech_studio_sdk import set_credentials
53
+
54
+ # Configure suas credenciais
55
+ set_credentials(
56
+ secret_key="sua_secret_key",
57
+ instance_id="seu_instance_id",
58
+ server="https://seu-servidor.com"
59
+ )
60
+ ```
61
+
62
+ ## 🧠 Conceitos Básicos
63
+
64
+ O ZSync Tech Studio SDK trabalha com uma hierarquia de conceitos:
65
+
66
+ 1. **Execution (Execução)**: Representa uma execução completa de um robô
67
+ 2. **Task (Tarefa)**: Uma tarefa específica dentro de uma execução
68
+ 3. **Step (Passo)**: Um passo individual dentro de uma tarefa
69
+
70
+ Cada nível pode ter diferentes status e observações para rastreamento detalhado.
71
+
72
+ ## 📖 Guia de Uso
73
+
74
+ ### StartService - Recebendo Configurações
75
+
76
+ O `StartService` permite que seu robô receba configurações via RabbitMQ:
77
+
78
+ ```python
79
+ from zsynctech_studio_sdk import StartService
80
+
81
+ # Configure o serviço
82
+ start_service = StartService(
83
+ rabbitmq_url="amqp://usuario:senha@servidor:5672/",
84
+ heartbeat=5400
85
+ )
86
+
87
+ # Verificar se há configurações disponíveis
88
+ config = start_service.get_start_config()
89
+ if config:
90
+ print(f"Execução recebida: {config.executionId}")
91
+ # Processar a configuração...
92
+
93
+ # Ou usar um listener contínuo
94
+ def process_config(config):
95
+ print(f"Processando execução: {config.executionId}")
96
+ # Sua lógica aqui...
97
+
98
+ start_service.start_listener(process_config)
99
+ ```
100
+
101
+ ### Execution - Gerenciando Execuções
102
+
103
+ A classe `Execution` gerencia o ciclo de vida de uma execução:
104
+
105
+ ```python
106
+ from zsynctech_studio_sdk import Execution, ExecutionStatus
107
+
108
+ # Criar uma execução
109
+ execution = Execution(config.executionId)
110
+
111
+ # Iniciar a execução
112
+ execution.start("Iniciando processamento...")
113
+
114
+ # Atualizar progresso
115
+ execution.set_total_task_count(100)
116
+ execution.update_current_task_count(50)
117
+
118
+ # Atualizar observação
119
+ execution.update_observation("Processando dados...")
120
+
121
+ # Finalizar com sucesso
122
+ execution.finished("Processamento concluído com sucesso!")
123
+
124
+ # Ou em caso de erro
125
+ execution.error("Erro ao processar dados")
126
+ ```
127
+
128
+ ### Task - Gerenciando Tarefas
129
+
130
+ A classe `Task` gerencia tarefas individuais:
131
+
132
+ ```python
133
+ from zsynctech_studio_sdk import Task
134
+
135
+ # Criar uma tarefa
136
+ task = Task(
137
+ execution_id=execution.execution_id,
138
+ code="TASK_001",
139
+ description="Processar arquivo de dados"
140
+ )
141
+
142
+ # Usar como context manager (recomendado)
143
+ with task:
144
+ # Sua lógica aqui
145
+ process_file()
146
+ # Status será automaticamente SUCCESS ou FAIL
147
+
148
+ # Ou gerenciar manualmente
149
+ task.start("Iniciando processamento do arquivo")
150
+ try:
151
+ process_file()
152
+ task.success("Arquivo processado com sucesso")
153
+ except Exception as e:
154
+ task.fail(f"Erro ao processar arquivo: {str(e)}")
155
+ ```
156
+
157
+ ### Step - Gerenciando Passos
158
+
159
+ A classe `Step` gerencia passos individuais dentro de uma tarefa:
160
+
161
+ ```python
162
+ from zsynctech_studio_sdk import Step
163
+
164
+ # Criar um passo
165
+ step = Step(
166
+ task_id=task.task_id,
167
+ code="STEP_001",
168
+ observation="Validando dados"
169
+ )
170
+
171
+ # Usar como context manager (recomendado)
172
+ with step:
173
+ # Sua lógica aqui
174
+ validate_data()
175
+ # Status será automaticamente SUCCESS ou FAIL
176
+
177
+ # Ou gerenciar manualmente
178
+ step._start("Iniciando validação")
179
+ try:
180
+ validate_data()
181
+ step.success("Dados validados com sucesso")
182
+ except Exception as e:
183
+ step.fail(f"Erro na validação: {str(e)}")
184
+ ```
185
+
186
+ ## 💡 Exemplo Completo
187
+
188
+ ```python
189
+ from zsynctech_studio_sdk import (
190
+ set_credentials, StartService, Execution, Task, Step
191
+ )
192
+
193
+ # 1. Configurar credenciais
194
+ set_credentials(
195
+ secret_key="sua_secret_key",
196
+ instance_id="seu_instance_id",
197
+ server="https://seu-servidor.com"
198
+ )
199
+
200
+ # 2. Configurar StartService
201
+ start_service = StartService("amqp://usuario:senha@servidor:5672/")
202
+
203
+ def process_automation(config):
204
+ """Função principal de processamento"""
205
+
206
+ # 3. Criar execução
207
+ execution = Execution(config.executionId)
208
+ execution.start("Iniciando automação")
209
+
210
+ try:
211
+ # 4. Definir total de tarefas
212
+ execution.set_total_task_count(3)
213
+
214
+ # 5. Processar cada tarefa
215
+ for i, data in enumerate(data_to_process):
216
+ with Task(execution.execution_id, f"TASK_{i:03d}", f"Processar {data}") as task:
217
+
218
+ # 6. Processar passos da tarefa
219
+ with Step(task.task_id, "VALIDATE", "Validando arquivo") as step:
220
+ validate_file(data)
221
+
222
+ with Step(task.task_id, "PROCESS", "Processando dados") as step:
223
+ process_file(data)
224
+
225
+ with Step(task.task_id, "SAVE", "Salvando resultado") as step:
226
+ save_result(data)
227
+
228
+ # 7. Atualizar progresso
229
+ execution.update_current_task_count(i)
230
+
231
+ # 8. Finalizar com sucesso
232
+ execution.finished("Automação concluída com sucesso!")
233
+
234
+ except Exception as e:
235
+ execution.error(f"Erro na automação: {str(e)}")
236
+
237
+ # 9. Iniciar listener
238
+ start_service.start_listener(process_automation)
239
+ ```
240
+
241
+ ## 📚 API Reference
242
+
243
+ ### StartService
244
+
245
+ - `__init__(rabbitmq_url: str, heartbeat: int = 5400)`: Inicializa o serviço
246
+ - `get_start_config() -> Optional[Config]`: Obtém configuração disponível
247
+ - `start_listener(callback: Callable)`: Inicia listener contínuo
248
+ - `close()`: Fecha conexão
249
+
250
+ ### Execution
251
+
252
+ - `start(observation: Optional[str] = None)`: Inicia execução
253
+ - `finished(observation: Optional[str] = None)`: Finaliza com sucesso
254
+ - `error(observation: Optional[str] = None)`: Marca como erro
255
+ - `waiting(observation: Optional[str] = None)`: Marca como aguardando
256
+ - `set_total_task_count(count: int)`: Define total de tarefas
257
+ - `update_current_task_count(count: int)`: Atualiza progresso
258
+ - `update_observation(observation: str)`: Atualiza observação
259
+
260
+ ### Task
261
+
262
+ - `start(observation: Optional[str] = None)`: Inicia tarefa
263
+ - `success(observation: Optional[str] = None)`: Marca como sucesso
264
+ - `fail(observation: Optional[str] = None)`: Marca como falha
265
+ - Suporte a context manager (`with`)
266
+
267
+ ### Step
268
+
269
+ - `_start(observation: Optional[str] = None)`: Inicia passo
270
+ - `success(observation: Optional[str] = None)`: Marca como sucesso
271
+ - `fail(observation: Optional[str] = None)`: Marca como falha
272
+ - Suporte a context manager (`with`)
273
+
274
+ ## 📦 Dependências
275
+
276
+ - `httpx>=0.28.1` - Cliente HTTP
277
+ - `pika>=1.3.2` - Cliente RabbitMQ
278
+ - `pydantic>=2.11.7` - Validação de dados
279
+ - `rich>=14.1.0` - Interface rica
280
+ - `uuid7>=0.1.0` - Geração de UUIDs
281
+
282
+ ## 🆘 Suporte
283
+
284
+ Para suporte técnico, entre em contato:
285
+
286
+ - **Email**: contato@zsynctech.com
287
+ - **Empresa**: ZSync Tech LTDA
288
+
289
+ ---
@@ -0,0 +1,276 @@
1
+ # ZSync Tech Studio SDK
2
+
3
+ SDK oficial da ZSync Tech para integração com o ZSync Tech Studio, uma plataforma de automação de processos. Este SDK permite que você desenvolva robôs de automação que se integram perfeitamente com o ecossistema ZSync Tech.
4
+
5
+ ![PyPI](https://img.shields.io/badge/version-0.1.0-green)
6
+
7
+ ## 📋 Índice
8
+
9
+ - [Instalação](#instalação)
10
+ - [Configuração Inicial](#configuração-inicial)
11
+ - [Conceitos Básicos](#conceitos-básicos)
12
+ - [Guia de Uso](#guia-de-uso)
13
+ - [StartService - Recebendo Configurações](#startservice---recebendo-configurações)
14
+ - [Execution - Gerenciando Execuções](#execution---gerenciando-execuções)
15
+ - [Task - Gerenciando Tarefas](#task---gerenciando-tarefas)
16
+ - [Step - Gerenciando Passos](#step---gerenciando-passos)
17
+ - [Exemplo Completo](#exemplo-completo)
18
+ - [API Reference](#api-reference)
19
+ - [Dependências](#dependências)
20
+ - [Suporte](#suporte)
21
+
22
+ ## 🚀 Instalação via pip
23
+
24
+ ```bash
25
+ pip install zsynctech-studio-sdk
26
+ ```
27
+
28
+ ## 🚀 Instalação via uv
29
+
30
+ ```bash
31
+ uv add zsynctech-studio-sdk
32
+ ```
33
+
34
+ ## ⚙️ Configuração Inicial
35
+
36
+ Antes de usar o SDK, você precisa configurar suas credenciais:
37
+
38
+ ```python
39
+ from zsynctech_studio_sdk import set_credentials
40
+
41
+ # Configure suas credenciais
42
+ set_credentials(
43
+ secret_key="sua_secret_key",
44
+ instance_id="seu_instance_id",
45
+ server="https://seu-servidor.com"
46
+ )
47
+ ```
48
+
49
+ ## 🧠 Conceitos Básicos
50
+
51
+ O ZSync Tech Studio SDK trabalha com uma hierarquia de conceitos:
52
+
53
+ 1. **Execution (Execução)**: Representa uma execução completa de um robô
54
+ 2. **Task (Tarefa)**: Uma tarefa específica dentro de uma execução
55
+ 3. **Step (Passo)**: Um passo individual dentro de uma tarefa
56
+
57
+ Cada nível pode ter diferentes status e observações para rastreamento detalhado.
58
+
59
+ ## 📖 Guia de Uso
60
+
61
+ ### StartService - Recebendo Configurações
62
+
63
+ O `StartService` permite que seu robô receba configurações via RabbitMQ:
64
+
65
+ ```python
66
+ from zsynctech_studio_sdk import StartService
67
+
68
+ # Configure o serviço
69
+ start_service = StartService(
70
+ rabbitmq_url="amqp://usuario:senha@servidor:5672/",
71
+ heartbeat=5400
72
+ )
73
+
74
+ # Verificar se há configurações disponíveis
75
+ config = start_service.get_start_config()
76
+ if config:
77
+ print(f"Execução recebida: {config.executionId}")
78
+ # Processar a configuração...
79
+
80
+ # Ou usar um listener contínuo
81
+ def process_config(config):
82
+ print(f"Processando execução: {config.executionId}")
83
+ # Sua lógica aqui...
84
+
85
+ start_service.start_listener(process_config)
86
+ ```
87
+
88
+ ### Execution - Gerenciando Execuções
89
+
90
+ A classe `Execution` gerencia o ciclo de vida de uma execução:
91
+
92
+ ```python
93
+ from zsynctech_studio_sdk import Execution, ExecutionStatus
94
+
95
+ # Criar uma execução
96
+ execution = Execution(config.executionId)
97
+
98
+ # Iniciar a execução
99
+ execution.start("Iniciando processamento...")
100
+
101
+ # Atualizar progresso
102
+ execution.set_total_task_count(100)
103
+ execution.update_current_task_count(50)
104
+
105
+ # Atualizar observação
106
+ execution.update_observation("Processando dados...")
107
+
108
+ # Finalizar com sucesso
109
+ execution.finished("Processamento concluído com sucesso!")
110
+
111
+ # Ou em caso de erro
112
+ execution.error("Erro ao processar dados")
113
+ ```
114
+
115
+ ### Task - Gerenciando Tarefas
116
+
117
+ A classe `Task` gerencia tarefas individuais:
118
+
119
+ ```python
120
+ from zsynctech_studio_sdk import Task
121
+
122
+ # Criar uma tarefa
123
+ task = Task(
124
+ execution_id=execution.execution_id,
125
+ code="TASK_001",
126
+ description="Processar arquivo de dados"
127
+ )
128
+
129
+ # Usar como context manager (recomendado)
130
+ with task:
131
+ # Sua lógica aqui
132
+ process_file()
133
+ # Status será automaticamente SUCCESS ou FAIL
134
+
135
+ # Ou gerenciar manualmente
136
+ task.start("Iniciando processamento do arquivo")
137
+ try:
138
+ process_file()
139
+ task.success("Arquivo processado com sucesso")
140
+ except Exception as e:
141
+ task.fail(f"Erro ao processar arquivo: {str(e)}")
142
+ ```
143
+
144
+ ### Step - Gerenciando Passos
145
+
146
+ A classe `Step` gerencia passos individuais dentro de uma tarefa:
147
+
148
+ ```python
149
+ from zsynctech_studio_sdk import Step
150
+
151
+ # Criar um passo
152
+ step = Step(
153
+ task_id=task.task_id,
154
+ code="STEP_001",
155
+ observation="Validando dados"
156
+ )
157
+
158
+ # Usar como context manager (recomendado)
159
+ with step:
160
+ # Sua lógica aqui
161
+ validate_data()
162
+ # Status será automaticamente SUCCESS ou FAIL
163
+
164
+ # Ou gerenciar manualmente
165
+ step._start("Iniciando validação")
166
+ try:
167
+ validate_data()
168
+ step.success("Dados validados com sucesso")
169
+ except Exception as e:
170
+ step.fail(f"Erro na validação: {str(e)}")
171
+ ```
172
+
173
+ ## 💡 Exemplo Completo
174
+
175
+ ```python
176
+ from zsynctech_studio_sdk import (
177
+ set_credentials, StartService, Execution, Task, Step
178
+ )
179
+
180
+ # 1. Configurar credenciais
181
+ set_credentials(
182
+ secret_key="sua_secret_key",
183
+ instance_id="seu_instance_id",
184
+ server="https://seu-servidor.com"
185
+ )
186
+
187
+ # 2. Configurar StartService
188
+ start_service = StartService("amqp://usuario:senha@servidor:5672/")
189
+
190
+ def process_automation(config):
191
+ """Função principal de processamento"""
192
+
193
+ # 3. Criar execução
194
+ execution = Execution(config.executionId)
195
+ execution.start("Iniciando automação")
196
+
197
+ try:
198
+ # 4. Definir total de tarefas
199
+ execution.set_total_task_count(3)
200
+
201
+ # 5. Processar cada tarefa
202
+ for i, data in enumerate(data_to_process):
203
+ with Task(execution.execution_id, f"TASK_{i:03d}", f"Processar {data}") as task:
204
+
205
+ # 6. Processar passos da tarefa
206
+ with Step(task.task_id, "VALIDATE", "Validando arquivo") as step:
207
+ validate_file(data)
208
+
209
+ with Step(task.task_id, "PROCESS", "Processando dados") as step:
210
+ process_file(data)
211
+
212
+ with Step(task.task_id, "SAVE", "Salvando resultado") as step:
213
+ save_result(data)
214
+
215
+ # 7. Atualizar progresso
216
+ execution.update_current_task_count(i)
217
+
218
+ # 8. Finalizar com sucesso
219
+ execution.finished("Automação concluída com sucesso!")
220
+
221
+ except Exception as e:
222
+ execution.error(f"Erro na automação: {str(e)}")
223
+
224
+ # 9. Iniciar listener
225
+ start_service.start_listener(process_automation)
226
+ ```
227
+
228
+ ## 📚 API Reference
229
+
230
+ ### StartService
231
+
232
+ - `__init__(rabbitmq_url: str, heartbeat: int = 5400)`: Inicializa o serviço
233
+ - `get_start_config() -> Optional[Config]`: Obtém configuração disponível
234
+ - `start_listener(callback: Callable)`: Inicia listener contínuo
235
+ - `close()`: Fecha conexão
236
+
237
+ ### Execution
238
+
239
+ - `start(observation: Optional[str] = None)`: Inicia execução
240
+ - `finished(observation: Optional[str] = None)`: Finaliza com sucesso
241
+ - `error(observation: Optional[str] = None)`: Marca como erro
242
+ - `waiting(observation: Optional[str] = None)`: Marca como aguardando
243
+ - `set_total_task_count(count: int)`: Define total de tarefas
244
+ - `update_current_task_count(count: int)`: Atualiza progresso
245
+ - `update_observation(observation: str)`: Atualiza observação
246
+
247
+ ### Task
248
+
249
+ - `start(observation: Optional[str] = None)`: Inicia tarefa
250
+ - `success(observation: Optional[str] = None)`: Marca como sucesso
251
+ - `fail(observation: Optional[str] = None)`: Marca como falha
252
+ - Suporte a context manager (`with`)
253
+
254
+ ### Step
255
+
256
+ - `_start(observation: Optional[str] = None)`: Inicia passo
257
+ - `success(observation: Optional[str] = None)`: Marca como sucesso
258
+ - `fail(observation: Optional[str] = None)`: Marca como falha
259
+ - Suporte a context manager (`with`)
260
+
261
+ ## 📦 Dependências
262
+
263
+ - `httpx>=0.28.1` - Cliente HTTP
264
+ - `pika>=1.3.2` - Cliente RabbitMQ
265
+ - `pydantic>=2.11.7` - Validação de dados
266
+ - `rich>=14.1.0` - Interface rica
267
+ - `uuid7>=0.1.0` - Geração de UUIDs
268
+
269
+ ## 🆘 Suporte
270
+
271
+ Para suporte técnico, entre em contato:
272
+
273
+ - **Email**: contato@zsynctech.com
274
+ - **Empresa**: ZSync Tech LTDA
275
+
276
+ ---
File without changes
@@ -0,0 +1,28 @@
1
+ [project]
2
+ name = "zsynctech-studio-sdk"
3
+ version = "0.1.0"
4
+ description = "Lib"
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "ZSync Tech LTDA", email = "contato@zsynctech.com" }
8
+ ]
9
+ requires-python = ">=3.13"
10
+ dependencies = [
11
+ "httpx>=0.28.1",
12
+ "pika>=1.3.2",
13
+ "pydantic>=2.11.7",
14
+ "rich>=14.1.0",
15
+ "uuid7>=0.1.0",
16
+ ]
17
+
18
+ [project.scripts]
19
+ zsynctech-studio-sdk = "zsynctech_studio_sdk:master"
20
+
21
+ [build-system]
22
+ requires = ["hatchling"]
23
+ build-backend = "hatchling.build"
24
+
25
+ [dependency-groups]
26
+ dev = [
27
+ "bumpversion>=0.6.0",
28
+ ]
@@ -0,0 +1,21 @@
1
+ from zsynctech_studio_sdk.client import set_credentials
2
+ from zsynctech_studio_sdk.models.config import Config
3
+ from zsynctech_studio_sdk.start import StartService
4
+ from zsynctech_studio_sdk.execution import Execution
5
+ from zsynctech_studio_sdk.task import Task
6
+ from zsynctech_studio_sdk.step import Step
7
+ import tomllib
8
+
9
+ with open("pyproject.toml", "rb") as f:
10
+ config = tomllib.load(f)
11
+
12
+ __version__ = config.get("project").get("version")
13
+
14
+ __all__ = [
15
+ "set_credentials",
16
+ "StartService",
17
+ "Execution",
18
+ "Task",
19
+ "Step",
20
+ "Config"
21
+ ]