roksta 0.3.4__cp313-cp313-macosx_10_13_universal2.whl → 0.3.6__cp313-cp313-macosx_10_13_universal2.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.

Potentially problematic release.


This version of roksta might be problematic. Click here for more details.

Files changed (71) hide show
  1. roksta/ai/gemini.cpython-313-darwin.so +0 -0
  2. roksta/ai/generic.cpython-313-darwin.so +0 -0
  3. roksta/ai/llm.cpython-313-darwin.so +0 -0
  4. roksta/ai/openai.cpython-313-darwin.so +0 -0
  5. roksta/ai/tools/__init__.cpython-313-darwin.so +0 -0
  6. roksta/ai/tools/read_file.cpython-313-darwin.so +0 -0
  7. roksta/ai/tools/shell_any.cpython-313-darwin.so +0 -0
  8. roksta/ai/tools/tool_defs.cpython-313-darwin.so +0 -0
  9. roksta/ai/tools/web_fetch.cpython-313-darwin.so +0 -0
  10. roksta/build_project.cpython-313-darwin.so +0 -0
  11. roksta/chat_workflow.cpython-313-darwin.so +0 -0
  12. roksta/check_for_updates.cpython-313-darwin.so +0 -0
  13. roksta/clarify_goal.cpython-313-darwin.so +0 -0
  14. roksta/command_handlers/handle_help_command.cpython-313-darwin.so +0 -0
  15. roksta/env.cpython-313-darwin.so +0 -0
  16. roksta/fix_tests.cpython-313-darwin.so +0 -0
  17. roksta/goal_workflow.cpython-313-darwin.so +0 -0
  18. roksta/init_codebase.cpython-313-darwin.so +0 -0
  19. roksta/main.cpython-313-darwin.so +0 -0
  20. roksta/new_features.cpython-313-darwin.so +0 -0
  21. roksta/propose_solution.cpython-313-darwin.so +0 -0
  22. roksta/roksta.cpython-313-darwin.so +0 -0
  23. roksta/save_chat_transcript.cpython-313-darwin.so +0 -0
  24. roksta/select_files.cpython-313-darwin.so +0 -0
  25. roksta/tips.cpython-313-darwin.so +0 -0
  26. roksta/utils.cpython-313-darwin.so +0 -0
  27. roksta/write_code.cpython-313-darwin.so +0 -0
  28. {roksta-0.3.4.dist-info → roksta-0.3.6.dist-info}/METADATA +2 -1
  29. roksta-0.3.6.dist-info/RECORD +85 -0
  30. {roksta-0.3.4.dist-info → roksta-0.3.6.dist-info}/top_level.txt +0 -1
  31. roksta-0.3.4.dist-info/RECORD +0 -122
  32. tests/__init__.py +0 -2
  33. tests/conftest.py +0 -211
  34. tests/functions/__init__.py +0 -2
  35. tests/functions/api_v1_00/__init__.py +0 -2
  36. tests/functions/api_v1_00/test__analytics.py +0 -416
  37. tests/functions/api_v1_00/test__gemini_proxy.py +0 -352
  38. tests/functions/api_v1_00/test__generic_proxy.py +0 -428
  39. tests/functions/api_v1_00/test__get_payment_details.py +0 -356
  40. tests/functions/api_v1_00/test__openai_proxy.py +0 -449
  41. tests/functions/api_v1_00/test__redeem_credit_code.py +0 -167
  42. tests/functions/api_v1_00/test__sync_emails.py +0 -325
  43. tests/functions/api_v1_00/test__take_payment.py +0 -491
  44. tests/functions/api_v1_00/test__use_activation_code.py +0 -438
  45. tests/functions/api_v1_01/__init__.py +0 -2
  46. tests/functions/api_v1_01/test__analytics.py +0 -416
  47. tests/functions/api_v1_01/test__gemini_proxy.py +0 -352
  48. tests/functions/api_v1_01/test__generic_proxy.py +0 -428
  49. tests/functions/api_v1_01/test__get_payment_details.py +0 -356
  50. tests/functions/api_v1_01/test__openai_proxy.py +0 -449
  51. tests/functions/api_v1_01/test__redeem_credit_code.py +0 -167
  52. tests/functions/api_v1_01/test__sync_emails.py +0 -325
  53. tests/functions/api_v1_01/test__take_payment.py +0 -491
  54. tests/functions/api_v1_01/test__use_activation_code.py +0 -438
  55. tests/functions/api_v1_02/__init__.py +0 -2
  56. tests/functions/api_v1_02/test__analytics.py +0 -416
  57. tests/functions/api_v1_02/test__gemini_proxy.py +0 -352
  58. tests/functions/api_v1_02/test__generic_proxy.py +0 -428
  59. tests/functions/api_v1_02/test__get_payment_details.py +0 -356
  60. tests/functions/api_v1_02/test__openai_proxy.py +0 -449
  61. tests/functions/api_v1_02/test__redeem_credit_code.py +0 -167
  62. tests/functions/api_v1_02/test__sync_emails.py +0 -325
  63. tests/functions/api_v1_02/test__take_payment.py +0 -491
  64. tests/functions/api_v1_02/test__use_activation_code.py +0 -438
  65. tests/functions/api_v1_02/test_proxy_keyword_replacement.py +0 -557
  66. tests/functions/api_v1_02/test_replace_keywords.py +0 -74
  67. tests/functions/test_auth.py +0 -24
  68. tests/functions/test_main.py +0 -73
  69. tests/functions/test_utils.py +0 -484
  70. {roksta-0.3.4.dist-info → roksta-0.3.6.dist-info}/WHEEL +0 -0
  71. {roksta-0.3.4.dist-info → roksta-0.3.6.dist-info}/entry_points.txt +0 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: roksta
3
- Version: 0.3.4
3
+ Version: 0.3.6
4
4
  Summary: An AI coding assistant
5
5
  Author-email: Prash Naidu <prash@roksta.ai>
6
6
  Project-URL: Homepage, https://roksta.ai
@@ -22,6 +22,7 @@ Requires-Dist: jsonref>=1.1.0
22
22
  Requires-Dist: pathspec>=0.12.1
23
23
  Requires-Dist: psutil>=7.1.0
24
24
  Requires-Dist: PyNaCl>=1.6.0
25
+ Requires-Dist: markdownify>=1.2.0
25
26
  Provides-Extra: tests
26
27
  Requires-Dist: pytest>=8.4.1; extra == "tests"
27
28
  Requires-Dist: pytest-asyncio>=1.0.0; extra == "tests"
@@ -0,0 +1,85 @@
1
+ roksta/analytics.cpython-313-darwin.so,sha256=oOYhgxgZxhXr40wXD14HCXO5K8CyQfccIyHRCg1N5KU,306960
2
+ roksta/check_for_updates.cpython-313-darwin.so,sha256=_zZL9UbtSwJN6gAsaLnkmkoabXl6uTEnDGSDyLFtJGw,306776
3
+ roksta/response_formats.cpython-313-darwin.so,sha256=9MmD_FwyFDeKd8-Zr8xjmc68_lqPX1FZZcygbJQdu1M,120968
4
+ roksta/utils.cpython-313-darwin.so,sha256=0kRY67O4JEpcwBaIaXW-mDKlcQ42k8Q6ReY13CLVsUU,654952
5
+ roksta/main.cpython-313-darwin.so,sha256=yXhEuTLp_zBWLQ_ecaWc0EiC5bih5Xu4nD1BbeGKXgY,122184
6
+ roksta/env.cpython-313-darwin.so,sha256=pMWbVKRZx_N1cRHSRiHWxmvTGaQS7WXugwD5MJui5s4,87832
7
+ roksta/get_failing_tests.cpython-313-darwin.so,sha256=tLzNpROqCTf-X8_B2Avv_dDSfU-_7D064lxoJ29GN3Q,224296
8
+ roksta/fix_tests.cpython-313-darwin.so,sha256=I7xJXXenTV0PAtCOJoxvJU9-BXwi8p154NINt9__o9o,240704
9
+ roksta/firebase_auth_web.cpython-313-darwin.so,sha256=rFZmx4QaL7qTvdllkUeK9LNewaLkQ45b5pzlOaOHKek,472664
10
+ roksta/build_project.cpython-313-darwin.so,sha256=aI4s71RyS7DWi6d7Kam-kr0tGtJfT9ZFx0Z9DEAnlLs,191184
11
+ roksta/rewrite_goal.cpython-313-darwin.so,sha256=syFaNtvZI0UAUsfsTBG6seUCP6FBUKM5vDhYfvi9pcY,191088
12
+ roksta/run_cli_goal.cpython-313-darwin.so,sha256=LnBKx9tOvohdAsLqlprdzk0FOx9aI8anNBKoFDXAtdE,223968
13
+ roksta/clarify_goal.cpython-313-darwin.so,sha256=3eOofyZmRthB0NYe3bInoez8FXkjehx5cYBCw1eMuWs,207808
14
+ roksta/roksta.cpython-313-darwin.so,sha256=DpAaYWApQW1Ij-mW5VWlhoHW-6rMjgyT0idjzMeYQDw,604928
15
+ roksta/default_config.cpython-313-darwin.so,sha256=Jsb5rdQQoF8q_2KmsziuapT4sVI4wmqzlNyjPPot5mo,102248
16
+ roksta/__init__.cpython-313-darwin.so,sha256=9NPz72fxGkIQXx2OtFYdnleayh6ielrbliTgVxswNCc,85648
17
+ roksta/codebase_listing.cpython-313-darwin.so,sha256=MrLu0cfolSbjQKv6Y9HZP8SRMzVOtSpmVmJS7YidByk,155608
18
+ roksta/make_issue.cpython-313-darwin.so,sha256=jSpQV7i3Be0gVIlbrwlMQg3YrnOH-5hxqTEsj2hVsk8,221856
19
+ roksta/create_default_config.cpython-313-darwin.so,sha256=NNj-BBNwPJpJ4txAZ66neLk70kvVy_kolx4s2bHrZ1I,121592
20
+ roksta/gen_codebase_summaries.cpython-313-darwin.so,sha256=9QCW0HIc2n12yH7hdZ1JC1Qpr86RzordOxQjdm4hJLQ,637920
21
+ roksta/propose_solution.cpython-313-darwin.so,sha256=b8RSADDyPQiXLeSih-I4FUbFsMZinDcRftAWTMKOKPk,207496
22
+ roksta/balance.cpython-313-darwin.so,sha256=2KcRqDhi1VoAesGl2WDx2pOLoM4zLB_wNqzw_vOgfTE,389744
23
+ roksta/save_chat_transcript.cpython-313-darwin.so,sha256=0JTFGcETVXlNzwdpxO7mVnj5-2UbfF0p0Q6z8k-27sg,207720
24
+ roksta/logger.cpython-313-darwin.so,sha256=7K7WEyU-rbA1u4aFYrDeNhkwCpzew2R1XR66BXSUeKM,122048
25
+ roksta/lint_code.cpython-313-darwin.so,sha256=moj4GMDW8hP68Eku4Ek8mXZI7QtdD0cOok2Vn6lRlXs,224624
26
+ roksta/extended_text_area.cpython-313-darwin.so,sha256=I5sm8TNtdcOrusHetvHlbfWmY25baiBEqxOF2rWIYFA,307208
27
+ roksta/checkpoints.cpython-313-darwin.so,sha256=kyBklHRV54PUjhwdeKD0xBPXVb2AQTp-IuqRDSufJrc,254320
28
+ roksta/get_codebase_structure.cpython-313-darwin.so,sha256=SCMaKJp2Mf_GkOp-TW-Rc7pFnYovHdZz44B3CG7-IDk,206240
29
+ roksta/init_codebase.cpython-313-darwin.so,sha256=PfrOiP7rnMLAks_TPHgsjxAQgY3A1JXlx9a-KD9Lpe8,341632
30
+ roksta/gen_one_line_goal.cpython-313-darwin.so,sha256=DbLF5gMJ5QZxfpn4qMDKf4gtFmmKrhw5w5heE9fw5pw,207768
31
+ roksta/new_features.cpython-313-darwin.so,sha256=Ac5jZrqqsphkfYFNSvLpqUwIsIWX9hqLQDlNt1hV93g,85728
32
+ roksta/firebase_config.cpython-313-darwin.so,sha256=mvrDiJcrsSU4E5c4SQakAnPT0gXvYEzex8H1IdCobdI,86328
33
+ roksta/chat_workflow.cpython-313-darwin.so,sha256=UcBMQMreis5oT6FJQsPfUbdZpPr-qNUcGGQzNNcmCGc,273792
34
+ roksta/select_files.cpython-313-darwin.so,sha256=DxYtWAUNckieOkf-SC4djgdBE-MyxjBaoYpCmlbFimE,207728
35
+ roksta/tips.cpython-313-darwin.so,sha256=iV7vmCnT_wFu8ncbC-DUUzQ24do_LDBnO9_Cs5EdPwE,85688
36
+ roksta/write_code.cpython-313-darwin.so,sha256=T0j01mQ9yju47PgLr3DCkwwGJ58bu9v1HKeUKsQXqJg,191072
37
+ roksta/enums.cpython-313-darwin.so,sha256=M2tDKuoPQVIa0ZhAbtphhFvAcTPbNOk2PVT-uGxnJSc,338344
38
+ roksta/parse_readme.cpython-313-darwin.so,sha256=MjcG8euvVPS3m4UsEdUm9f_lFLRdwIREsJlsspD_qtg,207280
39
+ roksta/firebase.cpython-313-darwin.so,sha256=n6qarllo6lw17BnvkKhssZrfKNqCuNBP_tayH12sono,488192
40
+ roksta/goal_workflow.cpython-313-darwin.so,sha256=_XNlBy69GFZHx0dNEp3-1nUVliP7MjRzInGRPwPpHkg,538304
41
+ roksta/command_handlers/handle_help_command.cpython-313-darwin.so,sha256=s4kCuS0e_yFpYulcUVBoQH-iewwZvwDKmKf27T0Djh4,220312
42
+ roksta/command_handlers/handle_auto_commit_command.cpython-313-darwin.so,sha256=WBMHsCSe-o1BjodjN1Y4tIuNqS68isqnUZbrFAzNixk,122544
43
+ roksta/command_handlers/handle_add_funds_command.cpython-313-darwin.so,sha256=SCGsAJwSyvDwi8Ii4Bx0ZotVicfuKpbi8F6jruDa8eg,224640
44
+ roksta/command_handlers/__init__.cpython-313-darwin.so,sha256=B_bJ_rFOygkVIVKHaKgAqtOVHSGwcT4yXgEOmnrwoXE,86272
45
+ roksta/command_handlers/handle_logout_command.cpython-313-darwin.so,sha256=LQ-gc7-K_URulCjOP10wsHOkPv909DZ25WFB7IxzvQk,121544
46
+ roksta/command_handlers/handle_auto_charge_command.cpython-313-darwin.so,sha256=4zjTZnxDh-955hbYmUr8WUJEonRMOMmPaU2NLZCu_mw,156416
47
+ roksta/command_handlers/handle_usage_command.cpython-313-darwin.so,sha256=oU-3p-1LJ4yH30XK9i5dDjk2Yu_Ftu5uzOgTwYMqRVQ,208072
48
+ roksta/command_handlers/handle_redeem_command.cpython-313-darwin.so,sha256=HWyKyj0HfwzhbTnDkAAbguvN7F7JMDB7d_oiYF-_BcM,157960
49
+ roksta/command_handlers/handle_building_command.cpython-313-darwin.so,sha256=jdjOLXnifMSvnUILkRW-ENSNcpoJX5eRmrMsA0NUljg,155968
50
+ roksta/command_handlers/handle_goal_command.cpython-313-darwin.so,sha256=4aEtce2ioEG1JNa-R11A1roM21-R1JGQCNSN4-ax3Yg,190248
51
+ roksta/command_handlers/handle_quit_command.cpython-313-darwin.so,sha256=0ag5RtABDMIhRSI_PZBHJuzqOH0TDZW-3tGCus2H-AM,87320
52
+ roksta/command_handlers/handle_payment_details_command.cpython-313-darwin.so,sha256=RUh2TzuprRNemH7MlsEuRuWRMXn4xFq9EMzyv6NuGjs,190296
53
+ roksta/command_handlers/handle_request_activation_command.cpython-313-darwin.so,sha256=-AP99HwBnF4ltJnC55wZgE2d4BjOZVKpthPlsnhQm7U,207112
54
+ roksta/command_handlers/handle_feedback_command.cpython-313-darwin.so,sha256=JAGNIA1pnVE_dVI6HbwLee-7qg6cf4-iXFnpkkbyFok,206896
55
+ roksta/command_handlers/handle_testing_command.cpython-313-darwin.so,sha256=FbK_9roSgELPHQ9R2d3qmLSK-MSPVZc28KebWQoX6q8,155968
56
+ roksta/command_handlers/handle_chat_command.cpython-313-darwin.so,sha256=f33z3gSmgcaxqGsZSo6gSpt6IlzIutDRK_h0DzQhlpU,156952
57
+ roksta/command_handlers/handle_init_command.cpython-313-darwin.so,sha256=MisY9vwcwzVKZKyvZ1X3pWOcPs0vVgpFFDGhG4IfTFo,157352
58
+ roksta/command_handlers/handle_dev_rate_command.cpython-313-darwin.so,sha256=rDO9FLrhMOoG9M2emkqXLhzbXGMtcrvghco9Y4TIIww,156016
59
+ roksta/command_handlers/handle_activate_command.cpython-313-darwin.so,sha256=HmjUz5b-hWhqUAVXwbCuZ0lsPM0bRKFEgwR7dI3__FY,240608
60
+ roksta/command_handlers/handle_login_command.cpython-313-darwin.so,sha256=fQC0y6BmLa6weSD4EqA7Cl8brX31BWVKx83ilrXTRLM,207400
61
+ roksta/command_handlers/handle_linting_command.cpython-313-darwin.so,sha256=8dgM_OcWqPlf80qqrMztuiGEEHtK0eSmOc4RqHFpIlg,155984
62
+ roksta/ai/generic.cpython-313-darwin.so,sha256=r4nVLyHHBI4kPlSVPHxv1qOeGCCIgI9wKFwZN6bB8NM,306944
63
+ roksta/ai/__init__.cpython-313-darwin.so,sha256=gnpXADu43zbYSsPXDFkSMAm1_tnAAFb9g3UClsQVlSQ,85648
64
+ roksta/ai/openai.cpython-313-darwin.so,sha256=zgbyhJ72-folA40d3ir_HVdvcAeoiMxCrRKtvxijMwg,306928
65
+ roksta/ai/call_ai.cpython-313-darwin.so,sha256=xUKO52evFDPuPv5FA6cMbbEGGQxZEv_-BHe_NrNOalQ,240784
66
+ roksta/ai/llm.cpython-313-darwin.so,sha256=IBYE8oPpin5csLG9Hbk2M5mOQmKMM7mUon8rhGHcCEE,271496
67
+ roksta/ai/gemini.cpython-313-darwin.so,sha256=zAIGrhF2VHudfxrxvMlf_Z9s4YiZaWw-K_5nCuFJEOI,422624
68
+ roksta/ai/tools/regex_replace.cpython-313-darwin.so,sha256=75W-hvwuB6mV28ohv8tTwq8EMKHtDaZkhfeA-myRpp8,155488
69
+ roksta/ai/tools/shell_any.cpython-313-darwin.so,sha256=VA-3Lik5o9CcguWEEa3iB6XJsxkaQjhqaJzQvoZFsSQ,224208
70
+ roksta/ai/tools/shell_limited.cpython-313-darwin.so,sha256=1oGGlNfoDwwmu1DWXyl_mjjAjlWR2e9D_89J8-_rmsM,190992
71
+ roksta/ai/tools/delete_file.cpython-313-darwin.so,sha256=butb27KIEtomeyuNvSZotGIg2n7pcE2HxvK9hNvdrIM,121984
72
+ roksta/ai/tools/read_file.cpython-313-darwin.so,sha256=7EY7WwT1QReqxpBEY8qF6rVxWR_ot2a1t1sdjv-UOzg,155824
73
+ roksta/ai/tools/write_file.cpython-313-darwin.so,sha256=1FaLSklpHh-q68qrzQZkwxREpPuPfQWXR7PhniVT6n0,122064
74
+ roksta/ai/tools/__init__.cpython-313-darwin.so,sha256=wjv8b7p6ZY_mQ0p2A6EGwrbuWcTQ3Nb__z_KtZ_33Po,87040
75
+ roksta/ai/tools/tool_utils.cpython-313-darwin.so,sha256=YB99fgIwFYCSzHhiUiszPZ4KfB1dqoRs5l5PQ4UbP5o,307712
76
+ roksta/ai/tools/tool_defs.cpython-313-darwin.so,sha256=8fz02r_eRCjm6NB6hCYoCPHAI8-FAr1RgMArInRf0X0,137424
77
+ roksta/ai/tools/final_response.cpython-313-darwin.so,sha256=I2eNTsSgSl8OG8rh2M_g8NZt91UWE4UC0GVrqfBigGQ,87768
78
+ roksta/ai/tools/edit_file.cpython-313-darwin.so,sha256=G2bTyQ6-gH59ReoENrtIXA0yuRt_kGyYyM92wDgo86U,155168
79
+ roksta/ai/tools/get_file_summaries.cpython-313-darwin.so,sha256=b3pMOlj6c-WuZygSs-u7-z-6QfswqZhsWCbzFD9vk2g,122728
80
+ roksta/ai/tools/web_fetch.cpython-313-darwin.so,sha256=woaIZFG9GZeeEMtvvFu5Mdsu8s9jaDzlZ1Udwjjsf2s,304352
81
+ roksta-0.3.6.dist-info/RECORD,,
82
+ roksta-0.3.6.dist-info/WHEEL,sha256=YOKbiIEZep2WTRrpKV0dvEfsSeIOVH2NqduVxoKQt6I,142
83
+ roksta-0.3.6.dist-info/entry_points.txt,sha256=mzRdYg_DlzZRwjxYUt9-gyoRCkM1QBTeTbwETgiTdGw,44
84
+ roksta-0.3.6.dist-info/top_level.txt,sha256=Worlz0mMqoxRSgPmoN1j_P-sJgIrmzD0uJ08qJwpWpQ,7
85
+ roksta-0.3.6.dist-info/METADATA,sha256=iU2JldJ-l3DbdLM6p597DjdCrOQ87_jfXbgSONkmRws,1541
@@ -1,122 +0,0 @@
1
- roksta-0.3.4.dist-info/RECORD,,
2
- roksta-0.3.4.dist-info/WHEEL,sha256=YOKbiIEZep2WTRrpKV0dvEfsSeIOVH2NqduVxoKQt6I,142
3
- roksta-0.3.4.dist-info/entry_points.txt,sha256=mzRdYg_DlzZRwjxYUt9-gyoRCkM1QBTeTbwETgiTdGw,44
4
- roksta-0.3.4.dist-info/top_level.txt,sha256=lvciNZQ1dPGXpiCLdWVXK03n9fKHjbQdwjqQbnUjeYM,13
5
- roksta-0.3.4.dist-info/METADATA,sha256=g6ygccU21yrpUPzBgzazE1-nKbmCKTkNBPO04PIAF8g,1507
6
- roksta/analytics.cpython-313-darwin.so,sha256=oOYhgxgZxhXr40wXD14HCXO5K8CyQfccIyHRCg1N5KU,306960
7
- roksta/check_for_updates.cpython-313-darwin.so,sha256=tu2uIxttYWvYTzwBMeVUwzszInPKaNIZ3VwBdaVLM4g,306776
8
- roksta/response_formats.cpython-313-darwin.so,sha256=9MmD_FwyFDeKd8-Zr8xjmc68_lqPX1FZZcygbJQdu1M,120968
9
- roksta/utils.cpython-313-darwin.so,sha256=58EiaRCISiPiGmiY6NyYKFc3k4nMfLEbkAergimgCFg,622120
10
- roksta/main.cpython-313-darwin.so,sha256=cjptIiwKpKWp3BBKu8UufdbtdzAwFHLLRILhaIj8sYk,122184
11
- roksta/env.cpython-313-darwin.so,sha256=EpQudtVj2qTfT9p28oEdPrQJkXz8mpq5_9qrcyyd3oE,87832
12
- roksta/get_failing_tests.cpython-313-darwin.so,sha256=tLzNpROqCTf-X8_B2Avv_dDSfU-_7D064lxoJ29GN3Q,224296
13
- roksta/fix_tests.cpython-313-darwin.so,sha256=Lavvd4GE5op0LfLSpo_eFnRu6N-fmRDGAy435vRKHLU,240704
14
- roksta/firebase_auth_web.cpython-313-darwin.so,sha256=rFZmx4QaL7qTvdllkUeK9LNewaLkQ45b5pzlOaOHKek,472664
15
- roksta/build_project.cpython-313-darwin.so,sha256=yOFozWXQoqi9yZ_AhrOWH1hO8i1G_ETEbsPNAVl_Vwo,191184
16
- roksta/rewrite_goal.cpython-313-darwin.so,sha256=syFaNtvZI0UAUsfsTBG6seUCP6FBUKM5vDhYfvi9pcY,191088
17
- roksta/run_cli_goal.cpython-313-darwin.so,sha256=LnBKx9tOvohdAsLqlprdzk0FOx9aI8anNBKoFDXAtdE,223968
18
- roksta/clarify_goal.cpython-313-darwin.so,sha256=AScEYlbcfPrhb0CagYZK3QEeToZx0BexKuQXDm3iFf4,207808
19
- roksta/roksta.cpython-313-darwin.so,sha256=xwsKlZucHlzxGZs_Pl-g97zzU8tc8OUSEsVIEc3EYcQ,588144
20
- roksta/default_config.cpython-313-darwin.so,sha256=Jsb5rdQQoF8q_2KmsziuapT4sVI4wmqzlNyjPPot5mo,102248
21
- roksta/__init__.cpython-313-darwin.so,sha256=9NPz72fxGkIQXx2OtFYdnleayh6ielrbliTgVxswNCc,85648
22
- roksta/codebase_listing.cpython-313-darwin.so,sha256=MrLu0cfolSbjQKv6Y9HZP8SRMzVOtSpmVmJS7YidByk,155608
23
- roksta/make_issue.cpython-313-darwin.so,sha256=jSpQV7i3Be0gVIlbrwlMQg3YrnOH-5hxqTEsj2hVsk8,221856
24
- roksta/create_default_config.cpython-313-darwin.so,sha256=NNj-BBNwPJpJ4txAZ66neLk70kvVy_kolx4s2bHrZ1I,121592
25
- roksta/gen_codebase_summaries.cpython-313-darwin.so,sha256=9QCW0HIc2n12yH7hdZ1JC1Qpr86RzordOxQjdm4hJLQ,637920
26
- roksta/propose_solution.cpython-313-darwin.so,sha256=Rpa9LloXGoYxD_Jv6lWmnj2431jcTqCmqQNjWPcI1hQ,191112
27
- roksta/balance.cpython-313-darwin.so,sha256=2KcRqDhi1VoAesGl2WDx2pOLoM4zLB_wNqzw_vOgfTE,389744
28
- roksta/save_chat_transcript.cpython-313-darwin.so,sha256=0IBsER76NUZAz8ykL1pvEL6uwjURJmqO9UQEejVUMn0,207720
29
- roksta/logger.cpython-313-darwin.so,sha256=7K7WEyU-rbA1u4aFYrDeNhkwCpzew2R1XR66BXSUeKM,122048
30
- roksta/lint_code.cpython-313-darwin.so,sha256=moj4GMDW8hP68Eku4Ek8mXZI7QtdD0cOok2Vn6lRlXs,224624
31
- roksta/extended_text_area.cpython-313-darwin.so,sha256=I5sm8TNtdcOrusHetvHlbfWmY25baiBEqxOF2rWIYFA,307208
32
- roksta/checkpoints.cpython-313-darwin.so,sha256=kyBklHRV54PUjhwdeKD0xBPXVb2AQTp-IuqRDSufJrc,254320
33
- roksta/get_codebase_structure.cpython-313-darwin.so,sha256=SCMaKJp2Mf_GkOp-TW-Rc7pFnYovHdZz44B3CG7-IDk,206240
34
- roksta/init_codebase.cpython-313-darwin.so,sha256=cdljg5KCI7o8lfrNDJRm9v_9KzOiv0YCHr9moapLmdo,341632
35
- roksta/gen_one_line_goal.cpython-313-darwin.so,sha256=DbLF5gMJ5QZxfpn4qMDKf4gtFmmKrhw5w5heE9fw5pw,207768
36
- roksta/new_features.cpython-313-darwin.so,sha256=4Lfy-pb7Wb8LpdmqItMRNmlfW_b9EfT66r4nBaQMByk,85728
37
- roksta/firebase_config.cpython-313-darwin.so,sha256=mvrDiJcrsSU4E5c4SQakAnPT0gXvYEzex8H1IdCobdI,86328
38
- roksta/chat_workflow.cpython-313-darwin.so,sha256=zDLFcXeY9X72lLoDBS7wiZXEIcMpZz24XpZeAm6PPyk,273792
39
- roksta/select_files.cpython-313-darwin.so,sha256=ijsmto4G3r6esiehvtf0MEfPqBd7xOett9m19homJDQ,207792
40
- roksta/tips.cpython-313-darwin.so,sha256=ijxCPHDr1XD9WBiolCiiHh9kneW9zf30XJ0EtbjmBrw,85688
41
- roksta/write_code.cpython-313-darwin.so,sha256=ZhEyStg-RLpW0hQQyoNs31S_MKYdanIunT_aBktp5OE,191152
42
- roksta/enums.cpython-313-darwin.so,sha256=M2tDKuoPQVIa0ZhAbtphhFvAcTPbNOk2PVT-uGxnJSc,338344
43
- roksta/parse_readme.cpython-313-darwin.so,sha256=MjcG8euvVPS3m4UsEdUm9f_lFLRdwIREsJlsspD_qtg,207280
44
- roksta/firebase.cpython-313-darwin.so,sha256=n6qarllo6lw17BnvkKhssZrfKNqCuNBP_tayH12sono,488192
45
- roksta/goal_workflow.cpython-313-darwin.so,sha256=0nn-G0Po2ZeYRabEFThHh-Qq7BGGyGcGtuSVHcSfvrE,521904
46
- roksta/command_handlers/handle_help_command.cpython-313-darwin.so,sha256=nWNz8RJ-Afi4QvGtCAbLP4zEDVPPSDc6gjHsxLNsK8I,220312
47
- roksta/command_handlers/handle_auto_commit_command.cpython-313-darwin.so,sha256=WBMHsCSe-o1BjodjN1Y4tIuNqS68isqnUZbrFAzNixk,122544
48
- roksta/command_handlers/handle_add_funds_command.cpython-313-darwin.so,sha256=SCGsAJwSyvDwi8Ii4Bx0ZotVicfuKpbi8F6jruDa8eg,224640
49
- roksta/command_handlers/__init__.cpython-313-darwin.so,sha256=B_bJ_rFOygkVIVKHaKgAqtOVHSGwcT4yXgEOmnrwoXE,86272
50
- roksta/command_handlers/handle_logout_command.cpython-313-darwin.so,sha256=LQ-gc7-K_URulCjOP10wsHOkPv909DZ25WFB7IxzvQk,121544
51
- roksta/command_handlers/handle_auto_charge_command.cpython-313-darwin.so,sha256=4zjTZnxDh-955hbYmUr8WUJEonRMOMmPaU2NLZCu_mw,156416
52
- roksta/command_handlers/handle_usage_command.cpython-313-darwin.so,sha256=oU-3p-1LJ4yH30XK9i5dDjk2Yu_Ftu5uzOgTwYMqRVQ,208072
53
- roksta/command_handlers/handle_redeem_command.cpython-313-darwin.so,sha256=HWyKyj0HfwzhbTnDkAAbguvN7F7JMDB7d_oiYF-_BcM,157960
54
- roksta/command_handlers/handle_building_command.cpython-313-darwin.so,sha256=jdjOLXnifMSvnUILkRW-ENSNcpoJX5eRmrMsA0NUljg,155968
55
- roksta/command_handlers/handle_goal_command.cpython-313-darwin.so,sha256=4aEtce2ioEG1JNa-R11A1roM21-R1JGQCNSN4-ax3Yg,190248
56
- roksta/command_handlers/handle_quit_command.cpython-313-darwin.so,sha256=0ag5RtABDMIhRSI_PZBHJuzqOH0TDZW-3tGCus2H-AM,87320
57
- roksta/command_handlers/handle_payment_details_command.cpython-313-darwin.so,sha256=RUh2TzuprRNemH7MlsEuRuWRMXn4xFq9EMzyv6NuGjs,190296
58
- roksta/command_handlers/handle_request_activation_command.cpython-313-darwin.so,sha256=-AP99HwBnF4ltJnC55wZgE2d4BjOZVKpthPlsnhQm7U,207112
59
- roksta/command_handlers/handle_feedback_command.cpython-313-darwin.so,sha256=JAGNIA1pnVE_dVI6HbwLee-7qg6cf4-iXFnpkkbyFok,206896
60
- roksta/command_handlers/handle_testing_command.cpython-313-darwin.so,sha256=FbK_9roSgELPHQ9R2d3qmLSK-MSPVZc28KebWQoX6q8,155968
61
- roksta/command_handlers/handle_chat_command.cpython-313-darwin.so,sha256=f33z3gSmgcaxqGsZSo6gSpt6IlzIutDRK_h0DzQhlpU,156952
62
- roksta/command_handlers/handle_init_command.cpython-313-darwin.so,sha256=MisY9vwcwzVKZKyvZ1X3pWOcPs0vVgpFFDGhG4IfTFo,157352
63
- roksta/command_handlers/handle_dev_rate_command.cpython-313-darwin.so,sha256=rDO9FLrhMOoG9M2emkqXLhzbXGMtcrvghco9Y4TIIww,156016
64
- roksta/command_handlers/handle_activate_command.cpython-313-darwin.so,sha256=HmjUz5b-hWhqUAVXwbCuZ0lsPM0bRKFEgwR7dI3__FY,240608
65
- roksta/command_handlers/handle_login_command.cpython-313-darwin.so,sha256=fQC0y6BmLa6weSD4EqA7Cl8brX31BWVKx83ilrXTRLM,207400
66
- roksta/command_handlers/handle_linting_command.cpython-313-darwin.so,sha256=8dgM_OcWqPlf80qqrMztuiGEEHtK0eSmOc4RqHFpIlg,155984
67
- roksta/ai/generic.cpython-313-darwin.so,sha256=Vw4N9h4C5CqT6uwZkfrJyoIs66g60i0b5UuXHuPhmw8,306944
68
- roksta/ai/__init__.cpython-313-darwin.so,sha256=gnpXADu43zbYSsPXDFkSMAm1_tnAAFb9g3UClsQVlSQ,85648
69
- roksta/ai/openai.cpython-313-darwin.so,sha256=yLV9Aucq8L61dQJSb3OrxA2ISC8IFVdRevqNlDs03M0,306928
70
- roksta/ai/call_ai.cpython-313-darwin.so,sha256=xUKO52evFDPuPv5FA6cMbbEGGQxZEv_-BHe_NrNOalQ,240784
71
- roksta/ai/llm.cpython-313-darwin.so,sha256=2AiWNRRPxx-lA8iv9EsD-Kp4JKENe6LL5dYXIjL8hJc,271496
72
- roksta/ai/gemini.cpython-313-darwin.so,sha256=-A_T95AetJtce75AypG40tmKZhrUHUYaiwbC08zFhvE,422624
73
- roksta/ai/tools/regex_replace.cpython-313-darwin.so,sha256=75W-hvwuB6mV28ohv8tTwq8EMKHtDaZkhfeA-myRpp8,155488
74
- roksta/ai/tools/shell_any.cpython-313-darwin.so,sha256=vQGvGwQoD2DEadl-yzf3I1TSXJiVc-scUg5FyCnI-lw,224208
75
- roksta/ai/tools/shell_limited.cpython-313-darwin.so,sha256=1oGGlNfoDwwmu1DWXyl_mjjAjlWR2e9D_89J8-_rmsM,190992
76
- roksta/ai/tools/delete_file.cpython-313-darwin.so,sha256=butb27KIEtomeyuNvSZotGIg2n7pcE2HxvK9hNvdrIM,121984
77
- roksta/ai/tools/read_file.cpython-313-darwin.so,sha256=68vDWq8UZUUGm48SwpNC5Wyj9SNZ1Xk6wedUTbWskvs,155824
78
- roksta/ai/tools/write_file.cpython-313-darwin.so,sha256=1FaLSklpHh-q68qrzQZkwxREpPuPfQWXR7PhniVT6n0,122064
79
- roksta/ai/tools/__init__.cpython-313-darwin.so,sha256=0xSnQMeKPuKzYVqbt65-NVjzMBSmPqO3FaY-9wnfX9c,87040
80
- roksta/ai/tools/tool_utils.cpython-313-darwin.so,sha256=YB99fgIwFYCSzHhiUiszPZ4KfB1dqoRs5l5PQ4UbP5o,307712
81
- roksta/ai/tools/tool_defs.cpython-313-darwin.so,sha256=wwvfhouInK22jmJCdSsBCtnvqp6abDd_w12eGu2qguc,137424
82
- roksta/ai/tools/final_response.cpython-313-darwin.so,sha256=I2eNTsSgSl8OG8rh2M_g8NZt91UWE4UC0GVrqfBigGQ,87768
83
- roksta/ai/tools/edit_file.cpython-313-darwin.so,sha256=G2bTyQ6-gH59ReoENrtIXA0yuRt_kGyYyM92wDgo86U,155168
84
- roksta/ai/tools/get_file_summaries.cpython-313-darwin.so,sha256=b3pMOlj6c-WuZygSs-u7-z-6QfswqZhsWCbzFD9vk2g,122728
85
- tests/conftest.py,sha256=Y2cx3Jups9GkKGxOG2fSSoIr3rgfUa9QzipMoQ-ehKU,7878
86
- tests/__init__.py,sha256=J6ztnXNqM8TSQCgHXMWb6NRq1kN_h4ql63Jq-TYR8XE,124
87
- tests/functions/test_utils.py,sha256=_zlgSa99JYVyJ0LDe3yaPztS92kqGRKkgjon__XmfFM,16721
88
- tests/functions/test_auth.py,sha256=I3oFTw2LTuUsnQ75v5SCfgUPnpel_pDKqUH0VAJpXQw,992
89
- tests/functions/__init__.py,sha256=mLXx3UARcv07vs_fGJuy3L5ZRn9IRsF9zIuL5IOnwdk,95
90
- tests/functions/test_main.py,sha256=h0W_4ISo95WzRy2HpXZw3cuNOTcYk_2QCIZffZJEfEU,2575
91
- tests/functions/api_v1_02/test__sync_emails.py,sha256=OTyf2YbBK7e4pWIQTUGYR4x6il1Hb3g4FYqQ_fRj1nA,12699
92
- tests/functions/api_v1_02/test__take_payment.py,sha256=I-XJasGuLW5wTMAu4nAgFkA8Mo_zVpGPvkJ2LrrJGCk,18022
93
- tests/functions/api_v1_02/test_replace_keywords.py,sha256=pa7bZ8I9XgtI5dUZq-efcHh9amN2_XHP8abXYqtDGc0,2683
94
- tests/functions/api_v1_02/test__gemini_proxy.py,sha256=mf8ubRmNxxxN80H6EA-iDPwu6Oue6Rmgxl6tiFNpfrU,13344
95
- tests/functions/api_v1_02/test_proxy_keyword_replacement.py,sha256=I5H73_QydSKLiDp7hDHGHbSkDOdv-BT4gYHGqEiVtM0,23632
96
- tests/functions/api_v1_02/test__analytics.py,sha256=oKjd7_zjnttcb-5BuA93yllkm0OOF4YWnfTUW1-icnM,15806
97
- tests/functions/api_v1_02/__init__.py,sha256=3RCSoj_5UQPw9Z5NeAgYz2s4gfcZIi7g36qk_Ed5TiA,124
98
- tests/functions/api_v1_02/test__use_activation_code.py,sha256=tNyTkkRtrpjei-7F31UNwrcU-PbP-QnkWNU7h2n5Yqo,16960
99
- tests/functions/api_v1_02/test__redeem_credit_code.py,sha256=7GD3tGgO2Lk0BCjUmzZACJiwocEhLBvXrrut0x13IWU,6347
100
- tests/functions/api_v1_02/test__openai_proxy.py,sha256=xlO2zmG64LlrKrbjFz-ds6Map7vy4SjIuHfZJDAqGK8,17726
101
- tests/functions/api_v1_02/test__get_payment_details.py,sha256=i5Px3NkLxqw8D3tVPrYdRJJF5jlNmysSuX_NNolbIa4,13735
102
- tests/functions/api_v1_02/test__generic_proxy.py,sha256=KZkOtmc71aOnWlz2L7B6CFhRNEV73bExG3GR14oD2L0,17673
103
- tests/functions/api_v1_01/test__sync_emails.py,sha256=OTyf2YbBK7e4pWIQTUGYR4x6il1Hb3g4FYqQ_fRj1nA,12699
104
- tests/functions/api_v1_01/test__take_payment.py,sha256=I-XJasGuLW5wTMAu4nAgFkA8Mo_zVpGPvkJ2LrrJGCk,18022
105
- tests/functions/api_v1_01/test__gemini_proxy.py,sha256=mf8ubRmNxxxN80H6EA-iDPwu6Oue6Rmgxl6tiFNpfrU,13344
106
- tests/functions/api_v1_01/test__analytics.py,sha256=oKjd7_zjnttcb-5BuA93yllkm0OOF4YWnfTUW1-icnM,15806
107
- tests/functions/api_v1_01/__init__.py,sha256=3RCSoj_5UQPw9Z5NeAgYz2s4gfcZIi7g36qk_Ed5TiA,124
108
- tests/functions/api_v1_01/test__use_activation_code.py,sha256=tNyTkkRtrpjei-7F31UNwrcU-PbP-QnkWNU7h2n5Yqo,16960
109
- tests/functions/api_v1_01/test__redeem_credit_code.py,sha256=7GD3tGgO2Lk0BCjUmzZACJiwocEhLBvXrrut0x13IWU,6347
110
- tests/functions/api_v1_01/test__openai_proxy.py,sha256=xlO2zmG64LlrKrbjFz-ds6Map7vy4SjIuHfZJDAqGK8,17726
111
- tests/functions/api_v1_01/test__get_payment_details.py,sha256=i5Px3NkLxqw8D3tVPrYdRJJF5jlNmysSuX_NNolbIa4,13735
112
- tests/functions/api_v1_01/test__generic_proxy.py,sha256=KZkOtmc71aOnWlz2L7B6CFhRNEV73bExG3GR14oD2L0,17673
113
- tests/functions/api_v1_00/test__sync_emails.py,sha256=OTyf2YbBK7e4pWIQTUGYR4x6il1Hb3g4FYqQ_fRj1nA,12699
114
- tests/functions/api_v1_00/test__take_payment.py,sha256=I-XJasGuLW5wTMAu4nAgFkA8Mo_zVpGPvkJ2LrrJGCk,18022
115
- tests/functions/api_v1_00/test__gemini_proxy.py,sha256=mf8ubRmNxxxN80H6EA-iDPwu6Oue6Rmgxl6tiFNpfrU,13344
116
- tests/functions/api_v1_00/test__analytics.py,sha256=oKjd7_zjnttcb-5BuA93yllkm0OOF4YWnfTUW1-icnM,15806
117
- tests/functions/api_v1_00/__init__.py,sha256=3RCSoj_5UQPw9Z5NeAgYz2s4gfcZIi7g36qk_Ed5TiA,124
118
- tests/functions/api_v1_00/test__use_activation_code.py,sha256=tNyTkkRtrpjei-7F31UNwrcU-PbP-QnkWNU7h2n5Yqo,16960
119
- tests/functions/api_v1_00/test__redeem_credit_code.py,sha256=7GD3tGgO2Lk0BCjUmzZACJiwocEhLBvXrrut0x13IWU,6347
120
- tests/functions/api_v1_00/test__openai_proxy.py,sha256=xlO2zmG64LlrKrbjFz-ds6Map7vy4SjIuHfZJDAqGK8,17726
121
- tests/functions/api_v1_00/test__get_payment_details.py,sha256=i5Px3NkLxqw8D3tVPrYdRJJF5jlNmysSuX_NNolbIa4,13735
122
- tests/functions/api_v1_00/test__generic_proxy.py,sha256=KZkOtmc71aOnWlz2L7B6CFhRNEV73bExG3GR14oD2L0,17673
tests/__init__.py DELETED
@@ -1,2 +0,0 @@
1
- # tests package marker
2
- # This file allows pytest to import tests using package-qualified names, avoiding import collisions.
tests/conftest.py DELETED
@@ -1,211 +0,0 @@
1
- import os
2
- import sys
3
- import importlib
4
- import types as _types_mod
5
-
6
- # Ensure local package is imported before any globally installed packages.
7
- sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
8
-
9
- # Ensure functions directory is on sys.path so top-level function helpers (e.g. 'utils')
10
- # can be imported by tests after the functions/ reorganisation.
11
- _functions_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'functions'))
12
- if _functions_root not in sys.path:
13
- sys.path.insert(0, _functions_root)
14
-
15
- # Ensure functions/api_v0_01 (or a compatible API directory) is on sys.path so tests that import top-level function
16
- # modules (e.g. '_analytics') can still find them after the functions/ reorganisation.
17
- _api_candidates = ['api_v0_01', 'api_v001', 'api_v0_1', 'api_v01']
18
- _functions_api_dir = None
19
- for candidate in _api_candidates:
20
- candidate_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'functions', candidate))
21
- if os.path.isdir(candidate_path):
22
- _functions_api_dir = candidate_path
23
- break
24
- if _functions_api_dir and _functions_api_dir not in sys.path:
25
- sys.path.insert(0, _functions_api_dir)
26
-
27
- # Provide a minimal google.genai.types stub if the real package is not available.
28
- # This avoids import-time errors in tests that import modules which reference
29
- # google.genai.types at import time. The stub is intentionally lightweight and
30
- # only implements the attributes needed for import and simple spec-based mocks
31
- # used in the test-suite. Individual tests may still override these with more
32
- # detailed fakes when required.
33
-
34
-
35
- def _attach_gtypes_stubs(gtypes_mod):
36
- """
37
- Attach minimal placeholder implementations to the provided module object.
38
- Only attaches attributes that are missing on the module to avoid clobbering
39
- a real installed package.
40
- """
41
- # Minimal placeholder implementations
42
- class GenerateContentConfig:
43
- def __init__(self, **kwargs):
44
- self.__dict__.update(kwargs)
45
- self.kwargs = kwargs
46
- def to_json_dict(self):
47
- return dict(self.kwargs)
48
-
49
- class ThinkingConfig:
50
- def __init__(self, thinking_budget=None):
51
- self.thinking_budget = thinking_budget
52
-
53
- class AutomaticFunctionCallingConfig:
54
- def __init__(self, disable=False):
55
- self.disable = disable
56
-
57
- class GoogleSearch:
58
- def __init__(self):
59
- pass
60
-
61
- class Tool:
62
- def __init__(self, **kwargs):
63
- self.kwargs = kwargs
64
-
65
- class UsageMetadata:
66
- def __init__(self, prompt_token_count=0, total_token_count=0):
67
- self.prompt_token_count = prompt_token_count
68
- self.total_token_count = total_token_count
69
-
70
- class FinishReasonEnum:
71
- def __init__(self, name='FINISH_REASON_UNSPECIFIED'):
72
- self.name = name
73
-
74
- class FinishReason:
75
- FINISH_REASON_UNSPECIFIED = FinishReasonEnum('FINISH_REASON_UNSPECIFIED')
76
-
77
- class Part:
78
- def __init__(self, text=None, function_call=None):
79
- self.text = text
80
- self.function_call = function_call
81
-
82
- @classmethod
83
- def from_function_response(cls, name=None, response=None):
84
- inst = cls()
85
- inst.function_response = _types_mod.SimpleNamespace(name=name, response=response)
86
- return inst
87
-
88
- class Content:
89
- def __init__(self, role=None, parts=None):
90
- self.role = role
91
- self.parts = parts or []
92
-
93
- def model_dump(self, mode='json'):
94
- return {'role': self.role, 'parts': [getattr(p, 'text', p) for p in self.parts]}
95
-
96
- class FunctionCall:
97
- def __init__(self, name=None, args=None):
98
- self.name = name
99
- self.args = args
100
-
101
- class Candidate:
102
- def __init__(self, content=None, finish_reason=None):
103
- self.content = content
104
- self.finish_reason = finish_reason
105
-
106
- class GenerateContentResponse:
107
- def __init__(self, **kwargs):
108
- for k, v in kwargs.items():
109
- setattr(self, k, v)
110
- # sensible defaults
111
- if not hasattr(self, 'text'):
112
- self.text = ''
113
- if not hasattr(self, 'candidates'):
114
- self.candidates = []
115
- if not hasattr(self, 'usage_metadata'):
116
- self.usage_metadata = None
117
-
118
- def to_json_dict(self):
119
- return {k: getattr(self, k) for k in self.__dict__}
120
-
121
- stubs = {
122
- 'GenerateContentConfig': GenerateContentConfig,
123
- 'ThinkingConfig': ThinkingConfig,
124
- 'AutomaticFunctionCallingConfig': AutomaticFunctionCallingConfig,
125
- 'GoogleSearch': GoogleSearch,
126
- 'Tool': Tool,
127
- 'UsageMetadata': UsageMetadata,
128
- 'FinishReason': FinishReason,
129
- 'Part': Part,
130
- 'Content': Content,
131
- 'FunctionCall': FunctionCall,
132
- 'Candidate': Candidate,
133
- 'GenerateContentResponse': GenerateContentResponse,
134
- }
135
-
136
- for name, obj in stubs.items():
137
- if not hasattr(gtypes_mod, name):
138
- setattr(gtypes_mod, name, obj)
139
-
140
-
141
- # Try to import the real google.genai.types module. If it exists, only patch in
142
- # any missing attributes. If it doesn't exist, create minimal stub modules and
143
- # register them on sys.modules so imports like `from google.genai import types`
144
- # work during the tests.
145
- try:
146
- gtypes = importlib.import_module('google.genai.types')
147
- _attach_gtypes_stubs(gtypes)
148
- except Exception:
149
- # Ensure top-level `google` module exists in sys.modules, but do not overwrite
150
- # a real `google` module if it is already installed.
151
- try:
152
- google = importlib.import_module('google')
153
- except Exception:
154
- google = _types_mod.ModuleType('google')
155
- sys.modules['google'] = google
156
-
157
- # Ensure `google.genai` exists; prefer the real module if present.
158
- try:
159
- genai = importlib.import_module('google.genai')
160
- except Exception:
161
- genai = _types_mod.ModuleType('google.genai')
162
- sys.modules['google.genai'] = genai
163
- setattr(google, 'genai', genai)
164
-
165
- # Create and attach the minimal `google.genai.types` stub
166
- gtypes = _types_mod.ModuleType('google.genai.types')
167
- _attach_gtypes_stubs(gtypes)
168
- genai.types = gtypes
169
- sys.modules['google.genai.types'] = gtypes
170
-
171
- # Provide a minimal nacl.public stub if PyNaCl is not installed. This prevents
172
- # import-time failures in tests that import `roksta.firebase` which does
173
- # `from nacl.public import PublicKey, SealedBox`.
174
- try:
175
- import nacl.public # type: ignore
176
- except Exception:
177
- # Create lightweight stub modules to satisfy `from nacl.public import PublicKey, SealedBox`
178
- nacl = _types_mod.ModuleType('nacl')
179
- nacl_public = _types_mod.ModuleType('nacl.public')
180
-
181
- class PublicKey:
182
- def __init__(self, data):
183
- # Accept bytes-like input; ensure it's bytes when possible.
184
- try:
185
- self._data = bytes(data)
186
- except Exception:
187
- self._data = data
188
-
189
- def __repr__(self):
190
- try:
191
- length = len(self._data)
192
- except Exception:
193
- length = 'unknown'
194
- return f"<PublicKey len={length}>"
195
-
196
- class SealedBox:
197
- def __init__(self, public_key):
198
- self.public_key = public_key
199
-
200
- def encrypt(self, plaintext: bytes) -> bytes:
201
- # Return deterministic bytes so callers can base64-encode the result.
202
- if not isinstance(plaintext, (bytes, bytearray)):
203
- plaintext = str(plaintext).encode('utf-8')
204
- return b"STUB_ENCRYPTED:" + bytes(plaintext)
205
-
206
- nacl_public.PublicKey = PublicKey
207
- nacl_public.SealedBox = SealedBox
208
- # Attach the submodule on the parent module object for attribute access
209
- nacl.public = nacl_public
210
- sys.modules['nacl'] = nacl
211
- sys.modules['nacl.public'] = nacl_public
@@ -1,2 +0,0 @@
1
- # tests.functions package marker
2
- # Ensures subtests are imported as package-qualified modules.
@@ -1,2 +0,0 @@
1
- # tests.functions.api_v1_00 package marker
2
- # Allows tests under this directory to be imported with package-qualified names.