syncgate 0.8.1__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 (82) hide show
  1. syncgate-0.8.1/.github/workflows/ci.yml +97 -0
  2. syncgate-0.8.1/.github/workflows/daily-promo.yml +44 -0
  3. syncgate-0.8.1/.github/workflows/daily-promotion.yml +29 -0
  4. syncgate-0.8.1/.github/workflows/publish.yml +38 -0
  5. syncgate-0.8.1/.gitignore +16 -0
  6. syncgate-0.8.1/CHANGELOG.md +336 -0
  7. syncgate-0.8.1/CONTRIBUTING.md +92 -0
  8. syncgate-0.8.1/DEMO_OUTPUT.md +73 -0
  9. syncgate-0.8.1/DEMO_README.md +27 -0
  10. syncgate-0.8.1/HN_SUBMISSION.md +43 -0
  11. syncgate-0.8.1/HN_SUBMISSION_V2.md +51 -0
  12. syncgate-0.8.1/KANBAN.md +72 -0
  13. syncgate-0.8.1/LICENSE +21 -0
  14. syncgate-0.8.1/MARKETING.md +90 -0
  15. syncgate-0.8.1/PKG-INFO +158 -0
  16. syncgate-0.8.1/PROJECT.md +1197 -0
  17. syncgate-0.8.1/PROMO.md +91 -0
  18. syncgate-0.8.1/QUICK_START.md +84 -0
  19. syncgate-0.8.1/README.md +140 -0
  20. syncgate-0.8.1/REDDIT_POST.md +51 -0
  21. syncgate-0.8.1/RELEASE.md +98 -0
  22. syncgate-0.8.1/RELEASE_CHECKLIST.md +101 -0
  23. syncgate-0.8.1/USAGE.md +433 -0
  24. syncgate-0.8.1/ai_demo.py +97 -0
  25. syncgate-0.8.1/auto_promo.py +81 -0
  26. syncgate-0.8.1/cli_init.py +63 -0
  27. syncgate-0.8.1/demo.html +199 -0
  28. syncgate-0.8.1/demo.py +52 -0
  29. syncgate-0.8.1/demo_complete.py +123 -0
  30. syncgate-0.8.1/demo_v2.py +89 -0
  31. syncgate-0.8.1/devto-blog.md +79 -0
  32. syncgate-0.8.1/docs/config-design.md +38 -0
  33. syncgate-0.8.1/feedback-form.md +59 -0
  34. syncgate-0.8.1/hn-submission.txt +28 -0
  35. syncgate-0.8.1/outreach-template.md +65 -0
  36. syncgate-0.8.1/promote.sh.py +82 -0
  37. syncgate-0.8.1/pyproject.toml +56 -0
  38. syncgate-0.8.1/reddit-post.txt +39 -0
  39. syncgate-0.8.1/syncgate/__init__.py +3 -0
  40. syncgate-0.8.1/syncgate/ai/__init__.py +213 -0
  41. syncgate-0.8.1/syncgate/api.py +193 -0
  42. syncgate-0.8.1/syncgate/backend/__init__.py +8 -0
  43. syncgate-0.8.1/syncgate/backend/base.py +71 -0
  44. syncgate-0.8.1/syncgate/backend/ftp.py +138 -0
  45. syncgate-0.8.1/syncgate/backend/http.py +67 -0
  46. syncgate-0.8.1/syncgate/backend/local.py +70 -0
  47. syncgate-0.8.1/syncgate/backend/protocol.py +43 -0
  48. syncgate-0.8.1/syncgate/backend/s3.py +119 -0
  49. syncgate-0.8.1/syncgate/backend/sftp.py +137 -0
  50. syncgate-0.8.1/syncgate/backend/webdav.py +178 -0
  51. syncgate-0.8.1/syncgate/batch.py +193 -0
  52. syncgate-0.8.1/syncgate/cli.py +191 -0
  53. syncgate-0.8.1/syncgate/error_handler.py +216 -0
  54. syncgate-0.8.1/syncgate/gateway/__init__.py +5 -0
  55. syncgate-0.8.1/syncgate/gateway/gateway.py +84 -0
  56. syncgate-0.8.1/syncgate/monitor.py +193 -0
  57. syncgate-0.8.1/syncgate/utils.py +141 -0
  58. syncgate-0.8.1/syncgate/vfs/__init__.py +5 -0
  59. syncgate-0.8.1/syncgate/vfs/fs.py +153 -0
  60. syncgate-0.8.1/syncgate/vfs/optimized.py +323 -0
  61. syncgate-0.8.1/syncgate/vfs/streaming.py +303 -0
  62. syncgate-0.8.1/syncgate/webhook.py +99 -0
  63. syncgate-0.8.1/tests/__init__.py +6 -0
  64. syncgate-0.8.1/tests/benchmark_streaming.py +124 -0
  65. syncgate-0.8.1/tests/debug_list.py +25 -0
  66. syncgate-0.8.1/tests/test_ai.py +177 -0
  67. syncgate-0.8.1/tests/test_api.py +85 -0
  68. syncgate-0.8.1/tests/test_backend.py +112 -0
  69. syncgate-0.8.1/tests/test_batch.py +141 -0
  70. syncgate-0.8.1/tests/test_ftp.py +84 -0
  71. syncgate-0.8.1/tests/test_gateway.py +97 -0
  72. syncgate-0.8.1/tests/test_monitor.py +189 -0
  73. syncgate-0.8.1/tests/test_performance.py +117 -0
  74. syncgate-0.8.1/tests/test_streaming.py +216 -0
  75. syncgate-0.8.1/tests/test_vfs.py +82 -0
  76. syncgate-0.8.1/tests/test_webdav.py +107 -0
  77. syncgate-0.8.1/tests/test_webhook.py +193 -0
  78. syncgate-0.8.1/tweet.txt +7 -0
  79. syncgate-0.8.1/twitter-thread.md +60 -0
  80. syncgate-0.8.1/user-survey.md +46 -0
  81. syncgate-0.8.1/video-script.md +52 -0
  82. syncgate-0.8.1/virtual/test/file.txt.link +4 -0
@@ -0,0 +1,97 @@
1
+ name: SyncGate CI/CD
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths-ignore:
7
+ - '**.md'
8
+ pull_request:
9
+ branches: [main]
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ python-version: ['3.10', '3.11', '3.12']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Set up Python ${{ matrix.python-version }}
22
+ uses: actions/setup-python@v5
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+ cache: 'pip'
26
+
27
+ - name: Install dependencies
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install -e ".[dev]"
31
+
32
+ - name: Run tests
33
+ run: pytest -v
34
+
35
+ - name: Upload coverage
36
+ uses: codecov/codecov-action@v4
37
+ with:
38
+ files: ./coverage.xml
39
+ fail_ci_if_error: true
40
+ token: ${{ secrets.CODECOV_TOKEN }}
41
+
42
+ lint:
43
+ runs-on: ubuntu-latest
44
+
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+
48
+ - name: Set up Python
49
+ uses: actions/setup-python@v5
50
+ with:
51
+ python-version: '3.12'
52
+ cache: 'pip'
53
+
54
+ - name: Install linting tools
55
+ run: |
56
+ pip install black mypy
57
+
58
+ - name: Check code formatting
59
+ run: black --check syncgate/ tests/
60
+
61
+ - name: Type checking
62
+ run: mypy syncgate/
63
+
64
+ build:
65
+ runs-on: ubuntu-latest
66
+ needs: [test, lint]
67
+ if: github.ref == 'refs/heads/main'
68
+
69
+ steps:
70
+ - uses: actions/checkout@v4
71
+
72
+ - name: Set up Python
73
+ uses: actions/setup-python@v5
74
+ with:
75
+ python-version: '3.12'
76
+ cache: 'pip'
77
+
78
+ - name: Build package
79
+ run: |
80
+ pip install build
81
+ python -m build
82
+
83
+ - name: Publish to PyPI
84
+ uses: pypa/gh-action-pypi-publish@release/v1
85
+ with:
86
+ password: ${{ secrets.PYPI_API_TOKEN }}
87
+
88
+ notify:
89
+ runs-on: ubuntu-latest
90
+ needs: [test, lint]
91
+ if: always()
92
+
93
+ steps:
94
+ - name: Send notification
95
+ run: |
96
+ echo "✅ Tests: ${{ needs.test.result }}"
97
+ echo "✅ Lint: ${{ needs.lint.result }}"
@@ -0,0 +1,44 @@
1
+ name: Daily SyncList Promotion
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 8 * * *' # 每天 8:00 UTC
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ promote:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - name: Set up Python
15
+ uses: actions/setup-python@v5
16
+ with:
17
+ python-version: '3.11'
18
+
19
+ - name: Install dependencies
20
+ run: |
21
+ pip install requests
22
+
23
+ - name: Run auto promotion
24
+ env:
25
+ TWITTER_TOKEN: ${{ secrets.TWITTER_TOKEN }}
26
+ REDDIT_CLIENT_ID: ${{ secrets.REDDIT_CLIENT_ID }}
27
+ REDDIT_CLIENT_SECRET: ${{ secrets.REDDIT_CLIENT_SECRET }}
28
+ run: |
29
+ python auto_promo.py
30
+
31
+ - name: Post daily stats
32
+ run: |
33
+ echo "## 📊 SyncList 每日推广" >> $GITHUB_STEP_SUMMARY
34
+ echo "- 时间: $(date)" >> $GITHUB_STEP_SUMMARY
35
+ echo "- 任务: Twitter + Reddit 推广" >> $GITHUB_STEP_SUMMARY
36
+ echo "" >> $GITHUB_STEP_SUMMARY
37
+ echo "## 🔗 链接" >> $GITHUB_STEP_SUMMARY
38
+ echo "- GitHub: https://github.com/cyydark/syncgate" >> $GITHUB_STEP_SUMMARY
39
+ echo "- 演示: python3 ai_demo.py" >> $GITHUB_STEP_SUMMARY
40
+ echo "" >> $GITHUB_STEP_SUMMARY
41
+ echo "## 📝 待手动执行" >> $GITHUB_STEP_SUMMARY
42
+ echo "- [ ] 制作视频: video-script.md" >> $GITHUB_STEP_SUMMARY
43
+ echo "- [ ] 收集反馈: feedback-form.md" >> $GITHUB_STEP_SUMMARY
44
+ echo "- [ ] 提交 HN: hn-submission.txt" >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,29 @@
1
+ name: Daily Promotion
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 8 * * *' # 每天 8:00 UTC
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ promote:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Send reminder
13
+ run: |
14
+ echo "🤖 Auto-Company Promotion Reminder"
15
+ echo ""
16
+ echo "SyncGate v0.1.0 is live!"
17
+ echo "GitHub: https://github.com/cyydark/syncgate"
18
+ echo ""
19
+ echo "TODO today:"
20
+ echo "1. [ ] Share on Twitter/X"
21
+ echo "2. [ ] Submit to Hacker News"
22
+ echo "3. [ ] Post on Reddit"
23
+ echo "4. [ ] Share on LinkedIn"
24
+ echo ""
25
+ echo "Marketing assets ready:"
26
+ echo "- twitter-thread.md"
27
+ echo "- hn-submission.txt"
28
+ echo "- reddit-post.txt"
29
+ echo "- devto-blog.md"
@@ -0,0 +1,38 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [created]
6
+ push:
7
+ branches:
8
+ - main
9
+ paths:
10
+ - 'syncgate/**'
11
+ - 'pyproject.toml'
12
+
13
+ jobs:
14
+ pypi-publish:
15
+ name: Publish to PyPI
16
+ runs-on: ubuntu-latest
17
+ permissions:
18
+ id-token: write
19
+ contents: read
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ with:
23
+ python-version: '3.11'
24
+ - name: Set up Python
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: '3.11'
28
+ - name: Install dependencies
29
+ run: |
30
+ python -m pip install --upgrade pip
31
+ pip install build
32
+ - name: Build package
33
+ run: |
34
+ python -m build
35
+ - name: Publish to PyPI
36
+ uses: pypa/gh-action-pypi-publish@release/v1
37
+ with:
38
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,16 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.so
5
+ .Python
6
+ .env
7
+ .venv
8
+ env/
9
+ venv/
10
+ *.egg-info/
11
+ dist/
12
+ build/
13
+ .pytest_cache/
14
+ *.db
15
+ *.log
16
+ .DS_Store
@@ -0,0 +1,336 @@
1
+ # CHANGELOG
2
+
3
+ ## [0.8.1] - 2025-01-20
4
+
5
+ ### Added
6
+
7
+ - **文档完善** - Cycle #38
8
+ - `USAGE.md` - 完整使用指南
9
+ - `QUICK_START.md` - 5 分钟快速开始
10
+
11
+ ### Documentation
12
+
13
+ | 文档 | 说明 |
14
+ |------|------|
15
+ | README.md | 项目介绍 |
16
+ | QUICK_START.md | **5 分钟快速开始** |
17
+ | USAGE.md | **完整使用指南** |
18
+ | PROJECT.md | 架构设计 |
19
+
20
+ ---
21
+
22
+ ## [0.8.0] - 2025-01-20
23
+
24
+ ### Added
25
+
26
+ - **功能补齐** - Cycle #37
27
+ - `syncgate/batch.py` - 批量操作
28
+ - `syncgate/monitor.py` - 监控和统计
29
+ - `syncgate/error_handler.py` - 错误处理和重试
30
+ - `tests/test_batch.py` - 7 个测试
31
+ - `tests/test_monitor.py` - 12 个测试
32
+
33
+ ### 新功能
34
+
35
+ | 模块 | 功能 |
36
+ |------|------|
37
+ | Batch | 批量创建/删除/验证链接 |
38
+ | Batch | 导入/导出配置 |
39
+ | Monitor | 统计收集和健康评分 |
40
+ | Monitor | 性能监控 |
41
+ | Error | 重试机制 |
42
+ | Error | 熔断器 |
43
+ | Error | 错误日志 |
44
+
45
+ ---
46
+
47
+ ## [0.7.0] - 2025-01-20
48
+
49
+ ### Added
50
+
51
+ - **Webhook 通知** - 支持外部通知
52
+ - `syncgate/webhook.py` - Webhook 管理器
53
+ - `tests/test_webhook.py` - 10 个测试
54
+
55
+ ### Webhook 功能
56
+
57
+ | 功能 | 说明 |
58
+ |------|------|
59
+ | 事件通知 | link.created, link.deleted, validate |
60
+ | 多 webhook | 支持多个通知端点 |
61
+ | 事件过滤 | 只订阅需要的事件 |
62
+
63
+ ---
64
+
65
+ ## [0.6.1] - 2025-01-20
66
+
67
+ ### Added
68
+
69
+ - **推广执行** - Cycle #35
70
+ - `promote.sh.py` - 一键推广脚本
71
+ - `HN_SUBMISSION_V2.md` - HN 提交内容
72
+
73
+ ### Changed
74
+
75
+ - 执行推广计划
76
+
77
+ ---
78
+
79
+ ## [0.6.0] - 2025-01-20
80
+
81
+ ### Added
82
+
83
+ - **REST API Server** - 支持程序化访问
84
+ - `syncgate/api.py` - REST API 服务器
85
+ - `tests/test_api.py` - 6 个 API 测试
86
+ - 支持 CRUD 操作 (创建/读取/更新/删除链接)
87
+
88
+ ### API 端点
89
+
90
+ | 方法 | 端点 | 说明 |
91
+ |------|------|------|
92
+ | GET | /api/stats | 获取统计 |
93
+ | GET | /api/links/<path> | 获取链接信息 |
94
+ | POST | /api/links | 创建链接 |
95
+ | DELETE | /api/links/<path> | 删除链接 |
96
+
97
+ ### 运行 API
98
+
99
+ ```bash
100
+ python -m syncgate.api --port 8080
101
+ ```
102
+
103
+ ---
104
+
105
+ ## [0.5.0] - 2025-01-20
106
+
107
+ ### Added
108
+
109
+ - **CLI Enhancement** - 增强命令行工具
110
+ - `syncgate/utils.py` - 配置管理和日志工具
111
+ - Config 类 - 配置文件管理
112
+ - ProgressBar 类 - 进度条
113
+ - Logger 类 - 彩色日志输出
114
+ - config 命令 - 管理配置
115
+
116
+ ### Changed
117
+
118
+ - CLI 支持新的 config 子命令
119
+
120
+ ---
121
+
122
+ ## [0.4.0] - 2025-01-20
123
+
124
+ ### Added
125
+
126
+ - **FTP Backend** - 支持 FTP 服务器
127
+ - `syncgate/backend/ftp.py` - FTP 后端实现
128
+ - `tests/test_ftp.py` - 5 个测试
129
+
130
+ - **SFTP Backend** - 支持 SFTP 服务器
131
+ - `syncgate/backend/sftp.py` - SFTP 后端实现
132
+ - 依赖: paramiko>=3.0.0
133
+
134
+ ### Changed
135
+
136
+ - **Total Tests: 33** (新增 5 个 FTP 测试)
137
+
138
+ ---
139
+
140
+ ## [0.3.0] - 2025-01-20
141
+
142
+ ### Added
143
+
144
+ - **WebDAV Backend** - 支持 NAS/云存储
145
+ - `syncgate/backend/webdav.py` - WebDAV 后端实现
146
+ - `tests/test_webdav.py` - 6 个测试
147
+ - 支持 PROPFIND/PUT/HEAD/MKCOL 等 WebDAV 方法
148
+
149
+ ### Changed
150
+
151
+ - **Total Tests: 28** (新增 6 个 WebDAV 测试)
152
+ - 修复 pyproject.toml 重复配置
153
+
154
+ ---
155
+
156
+ ## [0.2.4] - 2025-01-20
157
+
158
+ ### Changed
159
+
160
+ - **推广执行** - Cycle #30
161
+ - Twitter 推广准备就绪
162
+ - Hacker News 提交准备就绪
163
+ - Reddit 发布准备就绪
164
+
165
+ ### 推广状态
166
+
167
+ | 渠道 | 状态 |
168
+ |------|------|
169
+ | Twitter | ✅ 推文已准备 |
170
+ | Hacker News | ✅ 提交内容已准备 |
171
+ | Reddit | ✅ 帖子已准备 |
172
+
173
+ ---
174
+
175
+ ## [0.2.3] - 2025-01-20
176
+
177
+ ### Changed
178
+
179
+ - **CI/CD 优化**
180
+ - 添加 coverage 配置 (pyproject.toml)
181
+ - 优化工作流 (notify job)
182
+ - 支持多 Python 版本 (3.10, 3.11, 3.12)
183
+ - 添加 codecov 集成
184
+
185
+ ### CI/CD Features
186
+
187
+ | 功能 | 状态 |
188
+ |------|------|
189
+ | 多版本测试 | ✅ 3.10, 3.11, 3.12 |
190
+ | Lint (black/mypy) | ✅ |
191
+ | Coverage | ✅ |
192
+ | Auto PyPI Publish | ✅ |
193
+ | Notifications | ✅ |
194
+
195
+ ---
196
+
197
+ ## [0.2.2] - 2025-01-20
198
+
199
+ ### Added
200
+
201
+ - **AI Module Tests** - 9 new tests for AI functionality
202
+ - test_simple_embedding
203
+ - test_embedding_vector
204
+ - test_ai_module_init
205
+ - test_extract_metadata
206
+ - test_index_content
207
+ - test_search
208
+ - test_cosine_similarity
209
+ - test_get_metadata
210
+ - test_list_indexed
211
+
212
+ ### Changed
213
+
214
+ - **Total Tests: 22 passing** (9 new + 13 existing)
215
+
216
+ ---
217
+
218
+ ## [0.2.1] - 2025-01-20
219
+
220
+ ### Changed
221
+
222
+ - **代码重构** - 提取 BaseBackend 基类
223
+ - **代码减少 25%** - 437 行 → 327 行
224
+ - **减少重复代码** - 数据库操作集中到 BaseBackend
225
+
226
+ ### Optimization
227
+
228
+ | 文件 | 优化前 | 优化后 | 减少 |
229
+ |------|--------|--------|------|
230
+ | local.py | 135 行 | 70 行 | 48% |
231
+ | http.py | 125 行 | 67 行 | 46% |
232
+ | s3.py | 177 行 | 119 行 | 33% |
233
+ | base.py | - | 71 行 | - |
234
+ | **总计** | **437 行** | **327 行** | **25%** |
235
+
236
+ ---
237
+
238
+ ## [0.2.0] - 2025-01-20
239
+
240
+ ### Added
241
+
242
+ - **AI Module** - 元数据管理和语义搜索
243
+ - `syncgate/ai/__init__.py` - AI 模块核心
244
+ - `ai_demo.py` - 演示脚本
245
+ - 元数据提取 (大小、字数、编码)
246
+ - 简单向量嵌入 (词袋模型)
247
+ - 语义搜索 (余弦相似度)
248
+
249
+ ### Changed
250
+
251
+ - 代码提交统计: 6 次提交 (Cycle #22-26)
252
+
253
+ ---
254
+
255
+ ## [0.1.4] - 2025-01-20
256
+
257
+ ### Added
258
+
259
+ - **PROMO.md** - 推广文案 (Twitter/HN/Reddit)
260
+ - **DEMO_OUTPUT.md** - 演示输出截图
261
+ - **README.md v2** - 优化后的项目介绍
262
+
263
+ ### Changed
264
+
265
+ - README: SyncList → SyncGate
266
+ - README: 添加支持存储类型表格
267
+ - README: 添加使用示例
268
+
269
+ ---
270
+
271
+ ## [0.1.2] - 2025-01-20
272
+
273
+ ### Added
274
+
275
+ - **demo_complete.py** - Complete demo with all backends
276
+ - **S3Backend 测试** - Verified S3 URL parsing works
277
+ - **多后端演示** - Local + HTTP + S3
278
+
279
+ ### Verified
280
+
281
+ - ✅ LocalBackend - 本地存储
282
+ - ✅ HTTPBackend - HTTP/HTTPS
283
+ - ✅ S3Backend - AWS S3
284
+
285
+ ---
286
+
287
+ ## [0.1.1] - 2025-01-20
288
+
289
+ ### Added
290
+
291
+ - **demo_v2.py** - New complete demo script
292
+ - **演示验证** - Core functionality verified working
293
+
294
+ ### Fixed
295
+
296
+ - Demo script parameter order
297
+ - LocalBackend initialization
298
+
299
+ ---
300
+
301
+ ## [0.1.0] - 2025-01-20
302
+
303
+ ### Added
304
+
305
+ - Initial release
306
+ - VirtualFS core with memory index
307
+ - Local backend (local filesystem)
308
+ - HTTP backend (HTTP/HTTPS read-only)
309
+ - S3 backend (AWS S3)
310
+ - Gateway with CLI commands:
311
+ - `ls` - List directory contents
312
+ - `tree` - Display tree structure
313
+ - `link` - Create a link
314
+ - `unlink` - Remove a link
315
+ - `validate` - Validate links
316
+ - `status` - Show link status
317
+
318
+ ### Features
319
+
320
+ - Memory index for O(1) directory listing
321
+ - Link validation with status tracking
322
+ - SQLite-based status storage
323
+ - Support for multiple storage backends
324
+
325
+ ### Documentation
326
+
327
+ - README with quick start guide
328
+ - PROJECT.md with architecture design
329
+ - CLI help documentation
330
+
331
+ ### Tests
332
+
333
+ - 13 passing tests
334
+ - VirtualFS tests
335
+ - Backend tests
336
+ - Gateway tests
@@ -0,0 +1,92 @@
1
+ # Contributing to SyncGate
2
+
3
+ Thank you for your interest in contributing to SyncGate! This document outlines the process for contributing.
4
+
5
+ ## Getting Started
6
+
7
+ ### Prerequisites
8
+
9
+ - Python 3.10+
10
+ - pip or poetry
11
+
12
+ ### Setting Up Development Environment
13
+
14
+ ```bash
15
+ # Clone the repository
16
+ git clone https://github.com/yourusername/syncgate.git
17
+ cd syncgate
18
+
19
+ # Install in development mode
20
+ pip install -e ".[dev]"
21
+
22
+ # Run tests
23
+ pytest tests/
24
+ ```
25
+
26
+ ### Code Style
27
+
28
+ We use:
29
+ - **Black** for code formatting
30
+ - **mypy** for type checking
31
+ - **pytest** for testing
32
+
33
+ ```bash
34
+ # Format code
35
+ black syncgate/ tests/
36
+
37
+ # Type check
38
+ mypy syncgate/
39
+
40
+ # Run tests with coverage
41
+ pytest --cov=syncgate tests/
42
+ ```
43
+
44
+ ## Submitting Changes
45
+
46
+ ### 1. Fork the Repository
47
+
48
+ Fork the repository on GitHub and clone your fork.
49
+
50
+ ### 2. Create a Feature Branch
51
+
52
+ ```bash
53
+ git checkout -b feature/your-feature-name
54
+ ```
55
+
56
+ ### 3. Make Changes
57
+
58
+ - Write clean, documented code
59
+ - Add tests for new functionality
60
+ - Run the full test suite
61
+
62
+ ### 4. Submit a Pull Request
63
+
64
+ - Describe your changes
65
+ - Link any related issues
66
+ - Ensure CI passes
67
+
68
+ ## Issue Reporting
69
+
70
+ ### Bug Reports
71
+
72
+ When reporting bugs, include:
73
+ - Steps to reproduce
74
+ - Expected behavior
75
+ - Actual behavior
76
+ - Python version
77
+ - Operating system
78
+
79
+ ### Feature Requests
80
+
81
+ When requesting features, include:
82
+ - Use case description
83
+ - Proposed solution
84
+ - Any relevant examples
85
+
86
+ ## Code of Conduct
87
+
88
+ This project follows the [Contributor Covenant](https://www.contributor-covenant.org/).
89
+
90
+ ## Questions?
91
+
92
+ Open an issue for discussion.