tarnished-cli 0.2.1__tar.gz → 0.2.2__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. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/PKG-INFO +4 -4
  2. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/README.md +3 -3
  3. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/pyproject.toml +1 -1
  4. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/models/requests.py +6 -6
  5. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_admin_commands.py +3 -2
  6. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/uv.lock +1 -1
  7. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/.gitignore +0 -0
  8. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/LICENSE +0 -0
  9. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/current-meaning.json +0 -0
  10. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/document-text.json +0 -0
  11. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/history-correction.json +0 -0
  12. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/insights.json +0 -0
  13. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/report-intent-pipeline.json +0 -0
  14. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/report-intent.json +0 -0
  15. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/response-clear.json +0 -0
  16. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/response-record.json +0 -0
  17. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/transcript-edit.json +0 -0
  18. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/examples/evidence/transcript-paste.json +0 -0
  19. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/__init__.py +0 -0
  20. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/auth_diagnostics.py +0 -0
  21. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/auth_storage.py +0 -0
  22. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/client.py +0 -0
  23. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/__init__.py +0 -0
  24. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/admin.py +0 -0
  25. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/analytics.py +0 -0
  26. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/applications.py +0 -0
  27. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/auth.py +0 -0
  28. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/dashboard.py +0 -0
  29. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/exports.py +0 -0
  30. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/imports.py +0 -0
  31. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/job_leads.py +0 -0
  32. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/preferences.py +0 -0
  33. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/profile.py +0 -0
  34. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/reports.py +0 -0
  35. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/round_types.py +0 -0
  36. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/rounds.py +0 -0
  37. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/statuses.py +0 -0
  38. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/transcriptions.py +0 -0
  39. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/commands/user_settings.py +0 -0
  40. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/config.py +0 -0
  41. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/files.py +0 -0
  42. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/input.py +0 -0
  43. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/main.py +0 -0
  44. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/models/__init__.py +0 -0
  45. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/models/auth.py +0 -0
  46. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/output.py +0 -0
  47. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/polling.py +0 -0
  48. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/src/tarnished_cli/state.py +0 -0
  49. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/conftest.py +0 -0
  50. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_analytics_commands.py +0 -0
  51. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_applications_commands.py +0 -0
  52. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_auth_commands.py +0 -0
  53. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_auth_storage.py +0 -0
  54. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_cli_config.py +0 -0
  55. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_cli_connection_docs.py +0 -0
  56. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_client.py +0 -0
  57. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_dashboard_commands.py +0 -0
  58. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_date_requests.py +0 -0
  59. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_documented_commands.py +0 -0
  60. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_download_output.py +0 -0
  61. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_evidence_commands.py +0 -0
  62. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_evidence_requests.py +0 -0
  63. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_export_commands.py +0 -0
  64. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_help_surfaces.py +0 -0
  65. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_import_commands.py +0 -0
  66. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_import_wait.py +0 -0
  67. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_job_leads_commands.py +0 -0
  68. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_lead_capture.py +0 -0
  69. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_local_file_errors.py +0 -0
  70. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_main.py +0 -0
  71. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_output_contract.py +0 -0
  72. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_profile_commands.py +0 -0
  73. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_report_wait.py +0 -0
  74. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_reports_commands.py +0 -0
  75. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_round_types_commands.py +0 -0
  76. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_rounds_commands.py +0 -0
  77. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_shipped_promises.py +0 -0
  78. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_statuses_commands.py +0 -0
  79. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_transcript_document_commands.py +0 -0
  80. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_transcriptions_commands.py +0 -0
  81. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_transport_contract.py +0 -0
  82. {tarnished_cli-0.2.1 → tarnished_cli-0.2.2}/tests/test_user_settings_commands.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: tarnished-cli
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Command-line interface for Tarnished
5
5
  Project-URL: Homepage, https://markoonakic.github.io/tarnished/
6
6
  Project-URL: Repository, https://github.com/markoonakic/tarnished
@@ -18,7 +18,7 @@ Description-Content-Type: text/markdown
18
18
 
19
19
  # Tarnished CLI
20
20
 
21
- Command-line interface for Tarnished, version **0.2.1**. Use a matching Tarnished backend.
21
+ Command-line interface for Tarnished, version **0.2.2**. Use a matching Tarnished backend.
22
22
 
23
23
  **Documentation:** https://markoonakic.github.io/tarnished/
24
24
 
@@ -27,10 +27,10 @@ For the user-facing CLI guide, see:
27
27
 
28
28
  ## Install
29
29
 
30
- Install version 0.2.1 from PyPI once that release is available:
30
+ Install version 0.2.2 from PyPI once that release is available:
31
31
 
32
32
  ```bash
33
- uv tool install tarnished-cli==0.2.1
33
+ uv tool install tarnished-cli==0.2.2
34
34
  ```
35
35
 
36
36
  To install this checkout, including before a release is published, run from the repository root:
@@ -1,6 +1,6 @@
1
1
  # Tarnished CLI
2
2
 
3
- Command-line interface for Tarnished, version **0.2.1**. Use a matching Tarnished backend.
3
+ Command-line interface for Tarnished, version **0.2.2**. Use a matching Tarnished backend.
4
4
 
5
5
  **Documentation:** https://markoonakic.github.io/tarnished/
6
6
 
@@ -9,10 +9,10 @@ For the user-facing CLI guide, see:
9
9
 
10
10
  ## Install
11
11
 
12
- Install version 0.2.1 from PyPI once that release is available:
12
+ Install version 0.2.2 from PyPI once that release is available:
13
13
 
14
14
  ```bash
15
- uv tool install tarnished-cli==0.2.1
15
+ uv tool install tarnished-cli==0.2.2
16
16
  ```
17
17
 
18
18
  To install this checkout, including before a release is published, run from the repository root:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tarnished-cli"
3
- version = "0.2.1"
3
+ version = "0.2.2"
4
4
  description = "Command-line interface for Tarnished"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -267,14 +267,14 @@ class TranscriptEdit(BaseModel):
267
267
 
268
268
 
269
269
  def validate_new_password(password: str) -> str:
270
+ if not password:
271
+ raise ValueError("Password must not be empty")
272
+ if len(password) > 64:
273
+ raise ValueError("Use at most 64 characters.")
270
274
  try:
271
- valid = len(password) >= 12 and len(password.encode("utf-8")) <= 72
275
+ password.encode("utf-8")
272
276
  except UnicodeError:
273
- valid = False
274
- if not valid:
275
- raise ValueError(
276
- "Password must have at least 12 characters and at most 72 UTF-8 bytes"
277
- )
277
+ raise ValueError("Password cannot be encoded as UTF-8") from None
278
278
  return password
279
279
 
280
280
 
@@ -141,7 +141,7 @@ def test_admin_password_and_null_validation_does_not_echo_inputs(
141
141
  ):
142
142
  import json
143
143
 
144
- for password in ("weak-secret", "é" * 37, "😀" * 19, "", None):
144
+ for password in ("x" * 65, "é" * 65, "😀" * 65, "\ud800", "", None):
145
145
  body = tmp_path / "body.json"
146
146
  body.write_text(json.dumps({"email": "new@example.com", "password": password}))
147
147
  result = runner.invoke(
@@ -167,11 +167,12 @@ def test_admin_password_and_null_validation_does_not_echo_inputs(
167
167
  def test_admin_new_password_unicode_and_omitted_reset_contract():
168
168
  from tarnished_cli.models import AdminUserCreate, AdminUserUpdate
169
169
 
170
- for password in ("é" * 36, "😀" * 18, " " * 12):
170
+ for password in ("x", " ", "x" * 64, "é" * 64, "😀" * 50):
171
171
  assert (
172
172
  AdminUserCreate(email="new@example.com", password=password).password
173
173
  == password
174
174
  )
175
+ assert AdminUserUpdate(password=password).password == password
175
176
  assert AdminUserUpdate(is_active=False).model_dump(exclude_unset=True) == {
176
177
  "is_active": False
177
178
  }
@@ -562,7 +562,7 @@ wheels = [
562
562
 
563
563
  [[package]]
564
564
  name = "tarnished-cli"
565
- version = "0.2.1"
565
+ version = "0.2.2"
566
566
  source = { editable = "." }
567
567
  dependencies = [
568
568
  { name = "email-validator" },
File without changes
File without changes