direct-cli 0.3.16__tar.gz → 0.4.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 (282) hide show
  1. {direct_cli-0.3.16 → direct_cli-0.4.0}/CHANGELOG.md +42 -0
  2. {direct_cli-0.3.16 → direct_cli-0.4.0}/PKG-INFO +1 -1
  3. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli.egg-info/PKG-INFO +1 -1
  4. {direct_cli-0.3.16 → direct_cli-0.4.0}/pyproject.toml +1 -1
  5. {direct_cli-0.3.16 → direct_cli-0.4.0}/.env.example +0 -0
  6. {direct_cli-0.3.16 → direct_cli-0.4.0}/.github/copilot-instructions.md +0 -0
  7. {direct_cli-0.3.16 → direct_cli-0.4.0}/.github/workflows/api-coverage.yml +0 -0
  8. {direct_cli-0.3.16 → direct_cli-0.4.0}/.github/workflows/claude.yml +0 -0
  9. {direct_cli-0.3.16 → direct_cli-0.4.0}/.github/workflows/quality.yml +0 -0
  10. {direct_cli-0.3.16 → direct_cli-0.4.0}/.gitignore +0 -0
  11. {direct_cli-0.3.16 → direct_cli-0.4.0}/AGENTS.md +0 -0
  12. {direct_cli-0.3.16 → direct_cli-0.4.0}/CLAUDE.md +0 -0
  13. {direct_cli-0.3.16 → direct_cli-0.4.0}/MANIFEST.in +0 -0
  14. {direct_cli-0.3.16 → direct_cli-0.4.0}/README.md +0 -0
  15. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/__init__.py +0 -0
  16. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_bidding_strategy.py +0 -0
  17. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_deprecated.py +0 -0
  18. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_smoke_probes.py +0 -0
  19. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/__init__.py +0 -0
  20. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/__init__.py +0 -0
  21. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/endpoints.py +0 -0
  22. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/exceptions.py +0 -0
  23. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/resource_mapping.py +0 -0
  24. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/tapi_yandex_direct.py +0 -0
  25. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/tapi_yandex_direct.pyi +0 -0
  26. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/v4/__init__.py +0 -0
  27. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/v4/adapter.py +0 -0
  28. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/v4/adapter.pyi +0 -0
  29. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/_vendor/tapi_yandex_direct/v4/resource_mapping.py +0 -0
  30. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/api.py +0 -0
  31. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/auth.py +0 -0
  32. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/cli.py +0 -0
  33. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/__init__.py +0 -0
  34. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/adextensions.py +0 -0
  35. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/adgroups.py +0 -0
  36. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/adimages.py +0 -0
  37. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/ads.py +0 -0
  38. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/advideos.py +0 -0
  39. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/agencyclients.py +0 -0
  40. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/audiencetargets.py +0 -0
  41. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/auth.py +0 -0
  42. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/balance.py +0 -0
  43. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/bidmodifiers.py +0 -0
  44. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/bids.py +0 -0
  45. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/businesses.py +0 -0
  46. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/campaigns.py +0 -0
  47. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/changes.py +0 -0
  48. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/clients.py +0 -0
  49. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/creatives.py +0 -0
  50. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/dictionaries.py +0 -0
  51. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/dynamicads.py +0 -0
  52. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/dynamicfeedadtargets.py +0 -0
  53. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/feeds.py +0 -0
  54. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/keywordbids.py +0 -0
  55. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/keywords.py +0 -0
  56. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/keywordsresearch.py +0 -0
  57. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/leads.py +0 -0
  58. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/negativekeywordsharedsets.py +0 -0
  59. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/reports.py +0 -0
  60. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/retargeting.py +0 -0
  61. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/sitelinks.py +0 -0
  62. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/smartadtargets.py +0 -0
  63. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/strategies.py +0 -0
  64. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/turbopages.py +0 -0
  65. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4account.py +0 -0
  66. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4events.py +0 -0
  67. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4finance.py +0 -0
  68. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4forecast.py +0 -0
  69. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4goals.py +0 -0
  70. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4shells.py +0 -0
  71. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4tags.py +0 -0
  72. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/v4wordstat.py +0 -0
  73. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/commands/vcards.py +0 -0
  74. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/i18n.py +0 -0
  75. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/output.py +0 -0
  76. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/reports_coverage.py +0 -0
  77. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/smoke_matrix.py +0 -0
  78. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/utils.py +0 -0
  79. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/v4/__init__.py +0 -0
  80. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/v4/money.py +0 -0
  81. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/v4_contracts.py +0 -0
  82. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli/wsdl_coverage.py +0 -0
  83. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli.egg-info/SOURCES.txt +0 -0
  84. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli.egg-info/dependency_links.txt +0 -0
  85. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli.egg-info/entry_points.txt +0 -0
  86. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli.egg-info/requires.txt +0 -0
  87. {direct_cli-0.3.16 → direct_cli-0.4.0}/direct_cli.egg-info/top_level.txt +0 -0
  88. {direct_cli-0.3.16 → direct_cli-0.4.0}/docs/audits/API_COVERAGE.md +0 -0
  89. {direct_cli-0.3.16 → direct_cli-0.4.0}/docs/audits/PROJECT_WIRE_SHAPE_AUDIT_2026-05-29.md +0 -0
  90. {direct_cli-0.3.16 → direct_cli-0.4.0}/docs/audits/issue-198-mutating-wsdl-audit.md +0 -0
  91. {direct_cli-0.3.16 → direct_cli-0.4.0}/docs/audits/wire_shape.json +0 -0
  92. {direct_cli-0.3.16 → direct_cli-0.4.0}/docs/superpowers/plans/2026-04-12-issue-32-completion.md +0 -0
  93. {direct_cli-0.3.16 → direct_cli-0.4.0}/docs/superpowers/specs/2026-04-23-vendor-tapi-yandex-direct-design.md +0 -0
  94. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/anonymize_cassettes.py +0 -0
  95. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/audit_wire_shape.py +0 -0
  96. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/build_api_coverage_checklist.py +0 -0
  97. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/build_api_coverage_report.py +0 -0
  98. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/build_wsdl_optional_field_audit.py +0 -0
  99. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/check_all_docs_urls.py +0 -0
  100. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/check_reports_drift.py +0 -0
  101. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/check_wsdl_drift.py +0 -0
  102. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/patch_vendor_imports.py +0 -0
  103. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/preflight_check.sh +0 -0
  104. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/refresh_reports_cache.py +0 -0
  105. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/refresh_wsdl_cache.py +0 -0
  106. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/release_pypi.sh +0 -0
  107. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/sandbox_write_audit.py +0 -0
  108. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/sandbox_write_live.py +0 -0
  109. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/test_dangerous_commands.sh +0 -0
  110. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/test_safe_commands.sh +0 -0
  111. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/test_sandbox_write.sh +0 -0
  112. {direct_cli-0.3.16 → direct_cli-0.4.0}/scripts/update_vendor.sh +0 -0
  113. {direct_cli-0.3.16 → direct_cli-0.4.0}/setup.cfg +0 -0
  114. {direct_cli-0.3.16 → direct_cli-0.4.0}/setup.py +0 -0
  115. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/API_COVERAGE.md +0 -0
  116. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/API_ISSUE_AUDIT.md +0 -0
  117. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/MANUAL_COVERAGE.md +0 -0
  118. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/WSDL_OPTIONAL_FIELD_AUDIT.md +0 -0
  119. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/__init__.py +0 -0
  120. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/_orphan_store.py +0 -0
  121. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/api_coverage_payloads.py +0 -0
  122. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteAdExtensions.test_add_delete.yaml +0 -0
  123. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteAdGroups.test_add_update_delete.yaml +0 -0
  124. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteAdImages.test_add_delete.yaml +0 -0
  125. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteAds.test_add_text_ad_update_delete.yaml +0 -0
  126. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteAudienceTargets.test_add_delete.yaml +0 -0
  127. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteBidModifiersAdd.test_add_delete_mobile.yaml +0 -0
  128. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteBidModifiersSet.test_set_without_id_is_rejected.yaml +0 -0
  129. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteBids.test_set_bid.yaml +0 -0
  130. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteBidsRead.test_bids_get.yaml +0 -0
  131. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteBidsRead.test_bids_set_auto.yaml +0 -0
  132. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteCampaignDraftLifecycle.test_draft_create_get_delete.yaml +0 -0
  133. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteCampaigns.test_campaign_lifecycle.yaml +0 -0
  134. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteDynamicAds.test_add_update_delete.yaml +0 -0
  135. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteFeeds.test_add_update_delete.yaml +0 -0
  136. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteKeywordBids.test_set_keyword_bid.yaml +0 -0
  137. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteKeywords.test_add_update_delete.yaml +0 -0
  138. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteNegativeKeywordSharedSets.test_add_update_delete.yaml +0 -0
  139. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteRetargeting.test_add_delete.yaml +0 -0
  140. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteRetargetingUpdate.test_retargeting_update.yaml +0 -0
  141. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteSitelinks.test_add_delete.yaml +0 -0
  142. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteSmartAdTargets.test_add_update_delete.yaml +0 -0
  143. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteStrategies.test_strategies_lifecycle.yaml +0 -0
  144. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_integration_write/TestWriteVCards.test_add_delete.yaml +0 -0
  145. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[adextensions_get].yaml +0 -0
  146. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[adgroups_get].yaml +0 -0
  147. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[adimages_get].yaml +0 -0
  148. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[ads_get].yaml +0 -0
  149. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[advideos_get].yaml +0 -0
  150. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[audiencetargets_get].yaml +0 -0
  151. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[bidmodifiers_get].yaml +0 -0
  152. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[bids_get].yaml +0 -0
  153. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[businesses_get].yaml +0 -0
  154. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[campaigns_get].yaml +0 -0
  155. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[changes_check].yaml +0 -0
  156. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[changes_check_campaigns].yaml +0 -0
  157. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[changes_check_dictionaries].yaml +0 -0
  158. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[clients_get].yaml +0 -0
  159. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[creatives_get].yaml +0 -0
  160. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[dictionaries_get].yaml +0 -0
  161. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[dynamicads_get].yaml +0 -0
  162. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[dynamicfeedadtargets_get].yaml +0 -0
  163. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[feeds_get].yaml +0 -0
  164. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[keywordbids_get].yaml +0 -0
  165. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[keywords_get].yaml +0 -0
  166. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[keywordsresearch_deduplicate].yaml +0 -0
  167. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[keywordsresearch_has_search_volume].yaml +0 -0
  168. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[leads_get].yaml +0 -0
  169. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[negativekeywordsharedsets_get].yaml +0 -0
  170. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[reports_get].yaml +0 -0
  171. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[retargeting_get].yaml +0 -0
  172. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[sitelinks_get].yaml +0 -0
  173. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[smartadtargets_get].yaml +0 -0
  174. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[strategies_get].yaml +0 -0
  175. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[turbopages_get].yaml +0 -0
  176. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[v4events_get_events_log].yaml +0 -0
  177. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[v4finance_get_clients_units].yaml +0 -0
  178. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[v4forecast_list].yaml +0 -0
  179. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[v4goals_get_stat_goals].yaml +0 -0
  180. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[v4tags_get_campaigns].yaml +0 -0
  181. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[v4wordstat_list_reports].yaml +0 -0
  182. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_read_command[vcards_get].yaml +0 -0
  183. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_read_cassettes/test_v4finance_check_payment_unknown_transaction.yaml +0 -0
  184. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_adgroups_add_update_delete.yaml +0 -0
  185. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_adimages_add_get_delete.yaml +0 -0
  186. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_ads_add_update_delete.yaml +0 -0
  187. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_ads_suspend_resume_archive_unarchive.yaml +0 -0
  188. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_advideos_add_get.yaml +0 -0
  189. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_audiencetargets_add_delete.yaml +0 -0
  190. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_audiencetargets_suspend_resume.yaml +0 -0
  191. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_bids_set.yaml +0 -0
  192. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_campaign_create_get_delete.yaml +0 -0
  193. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_creatives_chain_advideo_to_creative.yaml +0 -0
  194. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_dynamicads_add_delete.yaml +0 -0
  195. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_dynamicads_suspend_resume.yaml +0 -0
  196. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_keywordbids_set.yaml +0 -0
  197. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_keywords_add_update_delete.yaml +0 -0
  198. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_keywords_suspend_resume.yaml +0 -0
  199. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_sitelinks_add_get_delete.yaml +0 -0
  200. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_smartadtargets_add_update_delete.yaml +0 -0
  201. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/cassettes/test_v5_live_write/test_v5_live_draft_smartadtargets_suspend_resume.yaml +0 -0
  202. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/conftest.py +0 -0
  203. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/fixtures/test-video.mp4 +0 -0
  204. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/reports_cache/raw/fields-list.html +0 -0
  205. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/reports_cache/raw/headers.html +0 -0
  206. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/reports_cache/raw/period.html +0 -0
  207. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/reports_cache/raw/spec.html +0 -0
  208. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/reports_cache/raw/type.html +0 -0
  209. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/reports_cache/spec.json +0 -0
  210. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_api_coverage.py +0 -0
  211. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_audit_wire_shape.py +0 -0
  212. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_auth_bw.py +0 -0
  213. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_auth_oauth.py +0 -0
  214. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_auth_op.py +0 -0
  215. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_auth_write_json.py +0 -0
  216. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_balance.py +0 -0
  217. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_changes.py +0 -0
  218. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_cli.py +0 -0
  219. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_cli_contract.py +0 -0
  220. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_comprehensive.py +0 -0
  221. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_dry_run.py +0 -0
  222. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_env_loading.py +0 -0
  223. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_i18n.py +0 -0
  224. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_integration.py +0 -0
  225. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_integration_write.py +0 -0
  226. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_low_coverage_payloads.py +0 -0
  227. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_read_cassettes.py +0 -0
  228. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_reports_drift.py +0 -0
  229. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_reports_parsing.py +0 -0
  230. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_sandbox_write_audit.py +0 -0
  231. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_smoke_matrix.py +0 -0
  232. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_transport_contract.py +0 -0
  233. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_unknown_option_hints.py +0 -0
  234. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4_contracts.py +0 -0
  235. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4_exit_codes.py +0 -0
  236. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4_foundation.py +0 -0
  237. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4_live_contracts.py +0 -0
  238. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4_runtime_shape.py +0 -0
  239. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4_safety.py +0 -0
  240. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4account.py +0 -0
  241. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4events.py +0 -0
  242. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4finance_money.py +0 -0
  243. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4finance_read.py +0 -0
  244. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4forecast.py +0 -0
  245. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4goals.py +0 -0
  246. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4tags.py +0 -0
  247. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v4wordstat.py +0 -0
  248. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_v5_live_write.py +0 -0
  249. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_vendor_imports.py +0 -0
  250. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/test_wsdl_parity_gate.py +0 -0
  251. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/adextensions.xml +0 -0
  252. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/adgroups.xml +0 -0
  253. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/adimages.xml +0 -0
  254. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/ads.xml +0 -0
  255. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/advideos.xml +0 -0
  256. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/agencyclients.xml +0 -0
  257. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/audiencetargets.xml +0 -0
  258. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/bidmodifiers.xml +0 -0
  259. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/bids.xml +0 -0
  260. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/businesses.xml +0 -0
  261. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/campaigns.xml +0 -0
  262. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/changes.xml +0 -0
  263. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/clients.xml +0 -0
  264. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/creatives.xml +0 -0
  265. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/dictionaries.xml +0 -0
  266. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/dynamicfeedadtargets.xml +0 -0
  267. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/dynamictextadtargets.xml +0 -0
  268. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/feeds.xml +0 -0
  269. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/imports/adextensiontypes.xsd +0 -0
  270. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/imports/general.xsd +0 -0
  271. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/imports/generalclients.xsd +0 -0
  272. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/keywordbids.xml +0 -0
  273. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/keywords.xml +0 -0
  274. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/keywordsresearch.xml +0 -0
  275. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/leads.xml +0 -0
  276. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/negativekeywordsharedsets.xml +0 -0
  277. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/retargetinglists.xml +0 -0
  278. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/sitelinks.xml +0 -0
  279. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/smartadtargets.xml +0 -0
  280. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/strategies.xml +0 -0
  281. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/turbopages.xml +0 -0
  282. {direct_cli-0.3.16 → direct_cli-0.4.0}/tests/wsdl_cache/vcards.xml +0 -0
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0
4
+
5
+ Milestone release closing the 0.4.0 roadmap (#123): typed Yandex Direct
6
+ API **v4 Live** CLI support and completion of the post-0.3.0 write-command
7
+ coverage gates. All public v4 input stays typed and canonical — no `--json`
8
+ passthrough — and mirrors `dg-v4/live/*` wire shapes 1:1.
9
+
10
+ **Added — typed v4 Live CLI:**
11
+
12
+ - v4 Live command foundation with typed Click groups and a `--dry-run`
13
+ seam that prints the `{method, param}` body before token/locale
14
+ enrichment (#124, closes #111 — typed CLI, not raw JSON passthrough).
15
+ - `v4finance` and `v4account` typed finance and shared-account commands
16
+ (#125).
17
+ - `v4goals`, `v4events`, `v4wordstat`, and `v4forecast` typed commands
18
+ (#126).
19
+ - `v4events get-events-log` and `v4forecast create-new-forecast` now expose
20
+ every documented input field (#456).
21
+ - Russian-default CLI help with English opt-in, starting with `v4finance`
22
+ (#458).
23
+
24
+ **Changed — write-command coverage gates:**
25
+
26
+ - Extended the WSDL schema gate to mutating operations; `keywordbids.set`
27
+ is now enum-validated against its WSDL `*FieldEnum` (#118).
28
+ - Per-method `WRITE_SANDBOX` integration coverage completed — zero
29
+ unexplained `NOT_COVERED` commands in `direct_cli/smoke_matrix.py`
30
+ (#122).
31
+ - Closed the remaining mutating `DRY_RUN_PAYLOAD_EXCLUSIONS`; every
32
+ declared WSDL operation now has a `PAYLOAD_CASES` fixture or a
33
+ documented technical exclusion (#127).
34
+
35
+ **Tests / tooling:**
36
+
37
+ - Offline VCR cassettes for all v5 read-only commands (#455).
38
+ - v4 Live read cassettes and a fix for an unbounded retry-loop (#457,
39
+ closes #454).
40
+ - Docs/wire-shape scanner with the 2026-05-29 sweep (#451).
41
+
42
+ `strict_parity_ok`, `live_model_parity_ok`, and `schema_parity_ok` all
43
+ report `true` in `scripts/build_api_coverage_report.py`.
44
+
3
45
  ## 0.3.16
4
46
 
5
47
  **BREAKING CHANGES (regression fix — reverts 0.3.15 wire-shape changes):**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: direct-cli
3
- Version: 0.3.16
3
+ Version: 0.4.0
4
4
  Summary: Command-line interface for Yandex Direct API
5
5
  Author: axisrow
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: direct-cli
3
- Version: 0.3.16
3
+ Version: 0.4.0
4
4
  Summary: Command-line interface for Yandex Direct API
5
5
  Author: axisrow
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "direct-cli"
7
- version = "0.3.16"
7
+ version = "0.4.0"
8
8
  description = "Command-line interface for Yandex Direct API"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes