kpubdata 0.3.0__tar.gz → 0.3.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 (394) hide show
  1. {kpubdata-0.3.0 → kpubdata-0.3.1}/CHANGELOG.md +30 -3
  2. {kpubdata-0.3.0 → kpubdata-0.3.1}/PKG-INFO +1 -1
  3. {kpubdata-0.3.0 → kpubdata-0.3.1}/SUPPORTED_DATA.md +1 -1
  4. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/providers/datago.md +15 -9
  5. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/quickstart.md +8 -0
  6. {kpubdata-0.3.0 → kpubdata-0.3.1}/pyproject.toml +1 -1
  7. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/__init__.py +3 -1
  8. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/datago/adapter.py +31 -7
  9. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_datago_live.py +14 -3
  10. kpubdata-0.3.1/tests/unit/core/test_version.py +10 -0
  11. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/datago/test_adapter.py +32 -0
  12. {kpubdata-0.3.0 → kpubdata-0.3.1}/uv.lock +1 -1
  13. {kpubdata-0.3.0 → kpubdata-0.3.1}/.github/ISSUE_TEMPLATE/new-provider-adapter.yml +0 -0
  14. {kpubdata-0.3.0 → kpubdata-0.3.1}/.github/workflows/ci.yml +0 -0
  15. {kpubdata-0.3.0 → kpubdata-0.3.1}/.github/workflows/integration.yml +0 -0
  16. {kpubdata-0.3.0 → kpubdata-0.3.1}/.github/workflows/publish-pypi.yml +0 -0
  17. {kpubdata-0.3.0 → kpubdata-0.3.1}/.gitignore +0 -0
  18. {kpubdata-0.3.0 → kpubdata-0.3.1}/AGENTS.md +0 -0
  19. {kpubdata-0.3.0 → kpubdata-0.3.1}/API_SPEC.md +0 -0
  20. {kpubdata-0.3.0 → kpubdata-0.3.1}/ARCHITECTURE.md +0 -0
  21. {kpubdata-0.3.0 → kpubdata-0.3.1}/CANONICAL_MODEL.md +0 -0
  22. {kpubdata-0.3.0 → kpubdata-0.3.1}/CONTRIBUTING.md +0 -0
  23. {kpubdata-0.3.0 → kpubdata-0.3.1}/LICENSE +0 -0
  24. {kpubdata-0.3.0 → kpubdata-0.3.1}/PACKAGING.md +0 -0
  25. {kpubdata-0.3.0 → kpubdata-0.3.1}/PRD.md +0 -0
  26. {kpubdata-0.3.0 → kpubdata-0.3.1}/PROVIDER_ADAPTER_CONTRACT.md +0 -0
  27. {kpubdata-0.3.0 → kpubdata-0.3.1}/README.md +0 -0
  28. {kpubdata-0.3.0 → kpubdata-0.3.1}/ROADMAP.md +0 -0
  29. {kpubdata-0.3.0 → kpubdata-0.3.1}/VALIDATION.md +0 -0
  30. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/adrs/0001-dialect-inspired-architecture.md +0 -0
  31. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/adrs/0002-standardize-ux-not-native-shape.md +0 -0
  32. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/architecture-diagrams.md +0 -0
  33. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/caching.md +0 -0
  34. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/cli.md +0 -0
  35. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/datago-api-reference.md +0 -0
  36. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/logging.md +0 -0
  37. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/product-family-architecture.md +0 -0
  38. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/providers/bok.md +0 -0
  39. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/providers/kosis.md +0 -0
  40. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/providers/seoul.md +0 -0
  41. {kpubdata-0.3.0 → kpubdata-0.3.1}/docs/tutorial-ai-agent-workflow.md +0 -0
  42. {kpubdata-0.3.0 → kpubdata-0.3.1}/plans/sgis-provider-issue-150.md +0 -0
  43. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/catalog.py +0 -0
  44. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/cli.py +0 -0
  45. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/client.py +0 -0
  46. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/config.py +0 -0
  47. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/core/__init__.py +0 -0
  48. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/core/capability.py +0 -0
  49. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/core/dataset.py +0 -0
  50. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/core/models.py +0 -0
  51. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/core/protocol.py +0 -0
  52. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/core/representation.py +0 -0
  53. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/exceptions.py +0 -0
  54. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/__init__.py +0 -0
  55. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/_common.py +0 -0
  56. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/bok/__init__.py +0 -0
  57. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/bok/adapter.py +0 -0
  58. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/bok/catalogue.json +0 -0
  59. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/datago/__init__.py +0 -0
  60. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/datago/catalogue.json +0 -0
  61. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/kosis/__init__.py +0 -0
  62. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/kosis/adapter.py +0 -0
  63. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/kosis/catalogue.json +0 -0
  64. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/localdata/__init__.py +0 -0
  65. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/localdata/adapter.py +0 -0
  66. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/localdata/catalogue.json +0 -0
  67. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/lofin/__init__.py +0 -0
  68. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/lofin/adapter.py +0 -0
  69. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/lofin/catalogue.json +0 -0
  70. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/seoul/__init__.py +0 -0
  71. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/seoul/adapter.py +0 -0
  72. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/seoul/catalogue.json +0 -0
  73. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/sgis/__init__.py +0 -0
  74. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/sgis/adapter.py +0 -0
  75. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/sgis/auth.py +0 -0
  76. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/providers/sgis/catalogue.json +0 -0
  77. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/py.typed +0 -0
  78. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/registry.py +0 -0
  79. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/transport/__init__.py +0 -0
  80. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/transport/cache.py +0 -0
  81. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/transport/decode.py +0 -0
  82. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/transport/http.py +0 -0
  83. {kpubdata-0.3.0 → kpubdata-0.3.1}/src/kpubdata/transport/retry.py +0 -0
  84. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/__init__.py +0 -0
  85. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/__init__.py +0 -0
  86. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/provider_adapter.py +0 -0
  87. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/test_bok.py +0 -0
  88. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/test_datago.py +0 -0
  89. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/test_kosis.py +0 -0
  90. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/test_localdata.py +0 -0
  91. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/test_lofin.py +0 -0
  92. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/test_seoul.py +0 -0
  93. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/contract/test_sgis_contract.py +0 -0
  94. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/bok/error_auth.json +0 -0
  95. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/bok/success_empty.json +0 -0
  96. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/bok/success_single_page.json +0 -0
  97. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/bus_arrival_v2.json +0 -0
  98. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/error_auth_30.json +0 -0
  99. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/error_invalid_request_10.json +0 -0
  100. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/error_rate_limit_22.json +0 -0
  101. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/error_service_unavailable_01.json +0 -0
  102. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/error_xml_auth_30.xml +0 -0
  103. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_apt_rent.json +0 -0
  104. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_apt_trade.json +0 -0
  105. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_empty.json +0 -0
  106. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_metro_fare.json +0 -0
  107. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_metro_path.json +0 -0
  108. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_multi_page_1.json +0 -0
  109. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_multi_page_2.json +0 -0
  110. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_offi_rent.json +0 -0
  111. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_offi_trade.json +0 -0
  112. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_rh_rent.json +0 -0
  113. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_rh_trade.json +0 -0
  114. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_sh_rent.json +0 -0
  115. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_sh_trade.json +0 -0
  116. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_single_item.json +0 -0
  117. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_single_page.json +0 -0
  118. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_string_numerics.json +0 -0
  119. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_tour_kor_area.json +0 -0
  120. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_tour_kor_festival.json +0 -0
  121. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_tour_kor_keyword.json +0 -0
  122. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_tour_kor_location.json +0 -0
  123. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_xml.xml +0 -0
  124. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/datago/success_xml_single_item.xml +0 -0
  125. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/kosis/error_auth.json +0 -0
  126. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/kosis/success_empty.json +0 -0
  127. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/kosis/success_single_page.json +0 -0
  128. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/affiliated_medical_institution_success.json +0 -0
  129. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/air_pollution_prevention_facility_success.json +0 -0
  130. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/amusement_facility_success.json +0 -0
  131. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_breeding_success.json +0 -0
  132. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_care_service_success.json +0 -0
  133. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_crematorium_success.json +0 -0
  134. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_exhibition_success.json +0 -0
  135. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_funeral_success.json +0 -0
  136. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_hospital_success.json +0 -0
  137. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_import_success.json +0 -0
  138. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_sales_success.json +0 -0
  139. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_training_success.json +0 -0
  140. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/animal_transport_success.json +0 -0
  141. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/bakery_success.json +0 -0
  142. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/barber_shop_success.json +0 -0
  143. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/beauty_salon_success.json +0 -0
  144. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/billiard_hall_success.json +0 -0
  145. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/boxing_gym_success.json +0 -0
  146. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/breeding_stock_success.json +0 -0
  147. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/building_sanitation_management_success.json +0 -0
  148. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/caregiver_training_institution_success.json +0 -0
  149. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/city_gas_success.json +0 -0
  150. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/civil_defense_water_supply_success.json +0 -0
  151. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/clinic_success.json +0 -0
  152. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/companion_animal_related_business_success.json +0 -0
  153. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/composite_game_provider_success.json +0 -0
  154. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/comprehensive_amusement_facility_success.json +0 -0
  155. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/comprehensive_resort_business_success.json +0 -0
  156. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/comprehensive_sports_facility_success.json +0 -0
  157. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/comprehensive_travel_success.json +0 -0
  158. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/container_packaging_manufacturing_success.json +0 -0
  159. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/contract_foodservice_success.json +0 -0
  160. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/culture_industry_company_success.json +0 -0
  161. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/dance_academy_success.json +0 -0
  162. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/dance_hall_success.json +0 -0
  163. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/dental_lab_success.json +0 -0
  164. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/disinfection_business_success.json +0 -0
  165. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/distribution_specialized_sales_success.json +0 -0
  166. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/domestic_international_travel_success.json +0 -0
  167. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/domestic_travel_success.json +0 -0
  168. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/door_to_door_sales_success.json +0 -0
  169. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/ecommerce_success.json +0 -0
  170. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/edible_ice_sales_success.json +0 -0
  171. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/electrical_construction_success.json +0 -0
  172. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/electrical_safety_management_agency_success.json +0 -0
  173. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/electricity_sales_success.json +0 -0
  174. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/electronic_distribution_success.json +0 -0
  175. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/elevator_maintenance_success.json +0 -0
  176. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/elevator_manufacturing_import_success.json +0 -0
  177. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/emergency_patient_transport_success.json +0 -0
  178. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/empty_response.json +0 -0
  179. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/energy_saving_company_success.json +0 -0
  180. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/entertainment_bar_success.json +0 -0
  181. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/environmental_consulting_success.json +0 -0
  182. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/environmental_impact_assessment_success.json +0 -0
  183. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/environmental_measurement_agency_success.json +0 -0
  184. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/error_auth.json +0 -0
  185. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/feed_manufacturing_success.json +0 -0
  186. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/fitness_center_success.json +0 -0
  187. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/food_additive_manufacturing_success.json +0 -0
  188. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/food_cold_storage_success.json +0 -0
  189. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/food_manufacturing_success.json +0 -0
  190. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/food_repackaging_success.json +0 -0
  191. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/food_transportation_success.json +0 -0
  192. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/food_vending_machine_success.json +0 -0
  193. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/foreign_tourist_city_homestay_lodging_success.json +0 -0
  194. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/foreign_tourist_city_homestay_success.json +0 -0
  195. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/foreigner_exclusive_entertainment_restaurant_success.json +0 -0
  196. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/free_job_placement_success.json +0 -0
  197. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/funeral_director_training_institution_success.json +0 -0
  198. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/funeral_service_success.json +0 -0
  199. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/game_distribution_success.json +0 -0
  200. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/game_manufacturing_success.json +0 -0
  201. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/game_provider_success.json +0 -0
  202. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/gas_appliance_manufacturing_success.json +0 -0
  203. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/general_amusement_facility_success.json +0 -0
  204. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/general_lodging_success.json +0 -0
  205. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/general_restaurant_success.json +0 -0
  206. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/golf_course_success.json +0 -0
  207. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/golf_practice_range_success.json +0 -0
  208. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/groundwater_construction_success.json +0 -0
  209. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/groundwater_impact_assessment_success.json +0 -0
  210. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/groundwater_purification_success.json +0 -0
  211. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/group_cafeteria_success.json +0 -0
  212. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/hanok_experience_lodging_success.json +0 -0
  213. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/hanok_experience_success.json +0 -0
  214. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/hatchery_success.json +0 -0
  215. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/health_functional_food_distributor_success.json +0 -0
  216. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/health_functional_food_retail_success.json +0 -0
  217. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/health_functional_food_specialty_success.json +0 -0
  218. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/high_pressure_gas_success.json +0 -0
  219. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/horse_riding_success.json +0 -0
  220. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/hospital_success.json +0 -0
  221. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/ice_rink_success.json +0 -0
  222. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/imported_food_sales_success.json +0 -0
  223. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/imported_livestock_sales_success.json +0 -0
  224. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/instant_food_manufacturing_success.json +0 -0
  225. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/international_conference_facility_success.json +0 -0
  226. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/international_conference_planning_success.json +0 -0
  227. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/international_freight_forwarding_success.json +0 -0
  228. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/internet_computer_game_facility_success.json +0 -0
  229. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/karaoke_success.json +0 -0
  230. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/large_store_success.json +0 -0
  231. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/laundry_success.json +0 -0
  232. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/livestock_artificial_insemination_center_success.json +0 -0
  233. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/livestock_farming_success.json +0 -0
  234. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/livestock_processing_success.json +0 -0
  235. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/livestock_sales_success.json +0 -0
  236. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/livestock_storage_success.json +0 -0
  237. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/livestock_transportation_success.json +0 -0
  238. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/log_production_success.json +0 -0
  239. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/logistics_warehouse_success.json +0 -0
  240. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/lpg_charging_success.json +0 -0
  241. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/lpg_collective_supply_success.json +0 -0
  242. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/lpg_sales_success.json +0 -0
  243. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/mail_order_sales_success.json +0 -0
  244. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/marine_environment_management_success.json +0 -0
  245. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/martial_arts_gym_success.json +0 -0
  246. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/medical_device_repair_success.json +0 -0
  247. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/medical_device_sales_success.json +0 -0
  248. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/medical_foundation_success.json +0 -0
  249. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/medical_linen_processing_success.json +0 -0
  250. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/medical_waste_treatment_success.json +0 -0
  251. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/meter_repair_success.json +0 -0
  252. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/milk_collection_success.json +0 -0
  253. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/motor_racing_course_success.json +0 -0
  254. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/movie_distribution_success.json +0 -0
  255. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/movie_import_success.json +0 -0
  256. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/movie_production_success.json +0 -0
  257. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/movie_screening_success.json +0 -0
  258. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/movie_theater_success.json +0 -0
  259. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/multilevel_sales_success.json +0 -0
  260. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/music_video_distribution_success.json +0 -0
  261. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/music_video_production_success.json +0 -0
  262. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/night_soil_collection_transportation_success.json +0 -0
  263. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/noise_vibration_prevention_facility_success.json +0 -0
  264. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/onggi_manufacturing_success.json +0 -0
  265. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/online_music_service_success.json +0 -0
  266. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/optical_shop_success.json +0 -0
  267. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/other_food_sales_success.json +0 -0
  268. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/outdoor_advertising_success.json +0 -0
  269. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/paid_job_placement_success.json +0 -0
  270. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/performance_hall_success.json +0 -0
  271. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/pet_grooming_success.json +0 -0
  272. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/petroleum_import_export_success.json +0 -0
  273. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/petroleum_sales_success.json +0 -0
  274. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/pharmacy_success.json +0 -0
  275. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/popular_culture_arts_planning_success.json +0 -0
  276. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/postpartum_care_success.json +0 -0
  277. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/prepaid_installment_trade_success.json +0 -0
  278. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/printing_house_success.json +0 -0
  279. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/public_bath_success.json +0 -0
  280. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/publisher_success.json +0 -0
  281. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/quasi_medical_business_success.json +0 -0
  282. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/record_distribution_success.json +0 -0
  283. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/record_production_success.json +0 -0
  284. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/residential_accommodation_success.json +0 -0
  285. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/rest_cafe_success.json +0 -0
  286. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/rural_guesthouse_success.json +0 -0
  287. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/safe_over_the_counter_drug_store_success.json +0 -0
  288. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/sanitary_product_manufacturing_success.json +0 -0
  289. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/sanitation_treatment_success.json +0 -0
  290. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/sawmill_success.json +0 -0
  291. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/singing_bar_success.json +0 -0
  292. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/ski_resort_success.json +0 -0
  293. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/slaughterhouse_success.json +0 -0
  294. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/small_hotel_success.json +0 -0
  295. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/soil_remediation_success.json +0 -0
  296. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/specialized_resort_business_success.json +0 -0
  297. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/swimming_pool_success.json +0 -0
  298. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/timber_import_distribution_success.json +0 -0
  299. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tobacco_import_sales_success.json +0 -0
  300. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tobacco_retail_success.json +0 -0
  301. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tobacco_wholesale_success.json +0 -0
  302. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourism_business_success.json +0 -0
  303. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourism_convenience_facility_success.json +0 -0
  304. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourism_duty_free_success.json +0 -0
  305. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_accommodation_success.json +0 -0
  306. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_entertainment_restaurant_success.json +0 -0
  307. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_excursion_boat_success.json +0 -0
  308. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_pension_success.json +0 -0
  309. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_performance_hall_success.json +0 -0
  310. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_restaurant_success.json +0 -0
  311. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_theater_entertainment_success.json +0 -0
  312. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/tourist_track_success.json +0 -0
  313. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/video_distribution_success.json +0 -0
  314. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/video_production_success.json +0 -0
  315. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/video_small_theater_success.json +0 -0
  316. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/video_viewing_room_success.json +0 -0
  317. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/video_viewing_service_success.json +0 -0
  318. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/waste_collection_transportation_success.json +0 -0
  319. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/waste_recycling_success.json +0 -0
  320. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/waste_treatment_success.json +0 -0
  321. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/water_pollution_prevention_facility_success.json +0 -0
  322. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/water_tank_cleaning_success.json +0 -0
  323. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/yacht_marina_success.json +0 -0
  324. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/localdata/youth_game_provider_success.json +0 -0
  325. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/lofin/error_auth.json +0 -0
  326. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/lofin/success_fiacrv.json +0 -0
  327. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/lofin/success_single_page.json +0 -0
  328. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/seoul/bike_rent_month_success.json +0 -0
  329. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/seoul/empty_response.json +0 -0
  330. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/seoul/error_auth.json +0 -0
  331. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/seoul/subway_realtime_arrival_success.json +0 -0
  332. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/sgis/auth_success.json +0 -0
  333. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/sgis/error_invalid_token.json +0 -0
  334. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/sgis/sido_boundary.geojson +0 -0
  335. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/fixtures/sgis/sigungu_boundary.geojson +0 -0
  336. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/README.md +0 -0
  337. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/__init__.py +0 -0
  338. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/conftest.py +0 -0
  339. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_bok_live.py +0 -0
  340. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_client_flow.py +0 -0
  341. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_exception_propagation.py +0 -0
  342. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_kosis_live.py +0 -0
  343. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_localdata_live.py +0 -0
  344. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_lofin_live.py +0 -0
  345. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_seoul_live.py +0 -0
  346. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/integration/test_transport_http.py +0 -0
  347. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/__init__.py +0 -0
  348. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/__init__.py +0 -0
  349. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/test_dataset.py +0 -0
  350. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/test_dataset_coverage.py +0 -0
  351. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/test_exceptions.py +0 -0
  352. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/test_exceptions_coverage.py +0 -0
  353. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/test_models.py +0 -0
  354. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/test_models_fixtures.py +0 -0
  355. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/core/test_to_pandas.py +0 -0
  356. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/__init__.py +0 -0
  357. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/bok/test_bok_adapter.py +0 -0
  358. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/datago/__init__.py +0 -0
  359. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/datago/conftest.py +0 -0
  360. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/datago/test_adapter_coverage.py +0 -0
  361. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/datago/test_fixtures.py +0 -0
  362. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/datago/test_generic.py +0 -0
  363. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/kosis/test_adapter.py +0 -0
  364. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/localdata/__init__.py +0 -0
  365. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/localdata/test_adapter.py +0 -0
  366. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/lofin/test_lofin_adapter.py +0 -0
  367. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/seoul/__init__.py +0 -0
  368. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/seoul/test_adapter.py +0 -0
  369. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/sgis/__init__.py +0 -0
  370. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/sgis/test_adapter.py +0 -0
  371. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/providers/sgis/test_auth.py +0 -0
  372. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_catalog.py +0 -0
  373. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_catalog_coverage.py +0 -0
  374. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_catalogue_validation.py +0 -0
  375. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_cli.py +0 -0
  376. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_client_coverage.py +0 -0
  377. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_client_transport_requirements.py +0 -0
  378. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_config.py +0 -0
  379. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_config_coverage.py +0 -0
  380. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_failure_path_logging.py +0 -0
  381. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_logging.py +0 -0
  382. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_registry.py +0 -0
  383. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/test_registry_coverage.py +0 -0
  384. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/__init__.py +0 -0
  385. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_cache.py +0 -0
  386. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_decode.py +0 -0
  387. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_decode_coverage.py +0 -0
  388. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_http_coverage.py +0 -0
  389. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_http_coverage_extra.py +0 -0
  390. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_logging.py +0 -0
  391. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_retry.py +0 -0
  392. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_retry_after.py +0 -0
  393. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_retry_coverage.py +0 -0
  394. {kpubdata-0.3.0 → kpubdata-0.3.1}/tests/unit/transport/test_transport_requirements.py +0 -0
@@ -7,7 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [0.3.0] - 2025-04-22
10
+ ## [0.3.1] - 2026-04-23
11
+
12
+ ### Fixed
13
+ - Source `__version__` from `importlib.metadata` instead of hardcoded string (#127)
14
+ - Add 활용신청 (activation request) hint to datago 403 `AuthError` and document API key activation requirement (#128)
15
+ - Add required parameters to metro integration tests (#140)
16
+
17
+ ## [0.3.0] - 2026-04-22
11
18
 
12
19
  ### Added
13
20
  - `localdata` provider: expand permit datasets from 26 to **195**, covering all official KSIC categories — health (13), animal (18), culture (53), living (26), food (32), resources & environment (37), other (16)
@@ -19,7 +26,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
26
  - Unit and contract tests plus SGIS fixture responses for boundary and auth/error scenarios
20
27
  - Full fixture, unit test, and contract test coverage for all 195 localdata datasets
21
28
 
22
- ## [0.2.0] - 2025-04-17
29
+ ## [0.2.3] - 2026-04-19
30
+
31
+ ### Fixed
32
+ - `LofinAdapter` SSL context ignored when `Client` passes shared transport
33
+
34
+ ### Added
35
+ - 7 real estate transaction datasets to datago provider (`apt_rent`, `offi_trade`, `offi_rent`, `rh_trade`, `rh_rent`, `sh_trade`, `sh_rent`)
36
+ - Treat `resultCode` `'000'` as success for RTMS endpoints
37
+
38
+ ## [0.2.2] - 2026-04-17
39
+
40
+ ### Added
41
+ - Cursor pagination support and pagination documentation
42
+
43
+ ## [0.2.1] - 2026-04-17
44
+
45
+ ### Added
46
+ - `SUPPORTED_DATA.md` 실API 최종 검증일 컬럼 추가
47
+ - Single-page pagination contract and `list_all()` implementation
48
+
49
+ ## [0.2.0] - 2026-04-17
23
50
 
24
51
  ### Added
25
52
  - Single-page pagination contract for all adapters (datago, bok, lofin, kosis)
@@ -35,7 +62,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
35
62
  - Unreachable single-record adapter stubs
36
63
  - Single-record access from the provider and dataset public APIs
37
64
 
38
- ## [0.1.0] - 2025-04-10
65
+ ## [0.1.0] - 2026-04-10
39
66
 
40
67
  ### Added
41
68
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kpubdata
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Dialect-inspired Python access framework for Korean public data
5
5
  Author: Yeongseon Choe
6
6
  License: MIT
@@ -235,7 +235,7 @@
235
235
  | 지원 | 테스트 검증 | - | 지방행정인허가 (`localdata`) | `caregiver_training_institution` | 요양보호사교육기관 인허가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 행정안전부 제공, 기타/전문교육기관 |
236
236
  | 지원 | 테스트 검증 | - | 지방행정인허가 (`localdata`) | `funeral_director_training_institution` | 장례지도사교육기관 인허가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 행정안전부 제공, 기타/전문교육기관 |
237
237
  | 지원 | 테스트 검증 | - | 지방행정인허가 (`localdata`) | `free_job_placement` | 무료직업소개소 인허가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 행정안전부 제공, 기타/사무지원 |
238
- | 지원 | 테스트 검증 | - | 지방행정인허가 (`localdata`) | `paid_job_placement` | 유료직업소개소 인허가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 행정안전부 제공, 기타/사무지원 | 스키장업 인허가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 행정안전부 제공, KSIC R93 |
238
+ | 지원 | 테스트 검증 | - | 지방행정인허가 (`localdata`) | `paid_job_placement` | 유료직업소개소 인허가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 행정안전부 제공, 기타/사무지원 |
239
239
  | 지원 | 테스트 검증 | - | 통계청 통계지리정보서비스 (`sgis`) | `boundary.sido` | 시도 행정구역 경계 | SGIS `consumer_key` + `consumer_secret` | [sgis.kostat.go.kr](https://sgis.kostat.go.kr/developer/html/main.html) | GeoJSON FeatureCollection 응답을 레코드 단위(`items`)로 정규화 |
240
240
  | 지원 | 테스트 검증 | - | 통계청 통계지리정보서비스 (`sgis`) | `boundary.sigungu` | 시군구 행정구역 경계 | SGIS `consumer_key` + `consumer_secret` | [sgis.kostat.go.kr](https://sgis.kostat.go.kr/developer/html/main.html) | `boundary/hadmarea.geojson` + `low_search` 기반 조회 |
241
241
  | 지원 | 테스트 검증 | - | 통계청 통계지리정보서비스 (`sgis`) | `boundary.emd` | 읍면동 행정구역 경계 | SGIS `consumer_key` + `consumer_secret` | [sgis.kostat.go.kr](https://sgis.kostat.go.kr/developer/html/main.html) | fixture/contract 검증 완료, 실API 검증은 후속 |
@@ -35,7 +35,7 @@
35
35
 
36
36
  ### 3단계: 승인 대기
37
37
 
38
- - **자동 승인**: 기상청, 한국환경공단 등 대부분의 API는 신청 즉시 자동 승인됩니다.
38
+ - **자동 승인**: 대부분의 API는 활용신청 후 약 1~5분 안에 자동 승인됩니다.
39
39
  - **심의 승인**: 국토교통부 아파트매매 실거래가 등 일부 API는 담당 기관의 심의 후 승인까지 1~2일이 소요될 수 있습니다.
40
40
 
41
41
  ### 4단계: 인증키 확인
@@ -52,16 +52,22 @@
52
52
  export KPUBDATA_DATAGO_API_KEY="발급받은-일반-인증키"
53
53
  ```
54
54
 
55
- ### 6단계: 키 활성화 대기
55
+ ## API별 활용신청(활성화) requirement
56
56
 
57
- **중요: API 키는 발급 직후 바로 사용할 수 없습니다.**
57
+ data.go.kr은 **계정용 공통 인증키 1개만 있으면 끝나는 구조가 아닙니다.** 호출하려는 Open API마다 상세 페이지에서 별도로 **활용신청**을 해야 합니다.
58
58
 
59
- - 발급 후 **1~2시간**의 활성화 대기 시간이 필요합니다.
60
- - 이 시간 동안 공공데이터포털 시스템이 각 API 제공기관의 서버와 인증키를 동기화합니다.
61
- - 동기화 완료 전에는 `SERVICE_KEY_IS_NOT_REGISTERED_ERROR` 또는 `401 Unauthorized` 에러가 발생합니다.
62
- - 동기화 시간은 제공기관에 따라 다를 수 있으며, 드물게 2시간 이상 걸리는 경우도 있습니다.
59
+ - 같은 `KPUBDATA_DATAGO_API_KEY`를 쓰더라도 API별 활성화 상태는 서로 다를 수 있습니다.
60
+ - 활용신청 후 대부분의 API는 약 **1~5분 안에 자동 승인/활성화**됩니다.
61
+ - 활성화 전에는 KPubData 호출이 **HTTP 403**으로 실패할 수 있습니다.
62
+ - 이 경우 해당 데이터셋의 data.go.kr 상세 페이지로 가서 **"활용신청"** 버튼을 눌렀는지 먼저 확인하세요.
63
63
 
64
- ### 7단계: 활성화 확인
64
+ 예시:
65
+
66
+ - `datago.village_fcst`를 쓰려면 단기예보 API 페이지에서 활용신청 필요
67
+ - `datago.air_quality`를 쓰려면 대기오염정보 API 페이지에서 활용신청 필요
68
+ - 둘은 같은 포털/같은 키를 써도 **각각 따로** 활성화해야 함
69
+
70
+ ### 6단계: 활성화 확인
65
71
 
66
72
  키가 활성화되었는지 확인하려면 다음과 같이 테스트합니다:
67
73
 
@@ -70,7 +76,7 @@ export KPUBDATA_DATAGO_API_KEY="발급받은-일반-인증키"
70
76
  curl "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst?serviceKey=YOUR_KEY&dataType=json&numOfRows=1&pageNo=1&base_date=20250401&base_time=0500&nx=55&ny=127"
71
77
  ```
72
78
 
73
- 정상 응답이 오면 활성화가 완료된 것입니다. `SERVICE_KEY_IS_NOT_REGISTERED_ERROR` 에러가 나오면 조금 더 기다려야 합니다.
79
+ 정상 응답이 오면 활성화가 완료된 것입니다. `403 Forbidden`, `SERVICE_KEY_IS_NOT_REGISTERED_ERROR`, 또는 인증 관련 오류가 나오면 활용신청 여부와 승인 대기 시간을 다시 확인하세요.
74
80
 
75
81
  ## KPubData에서 신청해야 할 API 목록
76
82
 
@@ -117,6 +117,12 @@ ProviderResponseError: BOK ECOS returned error
117
117
  ```
118
118
  → 날짜를 `"20240101"` 대신 `"202401"` (YYYYMM) 형식으로 입력했는지 확인하세요.
119
119
 
120
+ ### "data.go.kr에서 403이 나옵니다"
121
+ ```
122
+ AuthError: data.go.kr returned 403...
123
+ ```
124
+ → data.go.kr은 공통 인증키만으로는 부족하고 **API별 활용신청**이 필요합니다. 사용하려는 API 상세 페이지에서 "활용신청"을 눌렀는지 확인하세요. 대부분 1~5분 안에 자동 승인되지만 일부 API는 더 오래 걸릴 수 있습니다.
125
+
120
126
  ## Step 7: 다른 데이터도 조회해보기
121
127
 
122
128
  ### 사용 가능한 전체 데이터셋 목록 보기
@@ -146,6 +152,8 @@ kosis.population_migration — 시도별 이동자수 (Population Migration)
146
152
  - 공공데이터포털(datago): [datago API 키 발급 가이드](./providers/datago.md)
147
153
  - 통계청 KOSIS: [KOSIS API 키 발급 가이드](./providers/kosis.md)
148
154
 
155
+ > 참고: `datago`는 인증키 발급 후에도 **데이터셋별 활용신청**이 필요합니다. 활용신청 전에는 403이 발생할 수 있습니다.
156
+
149
157
  ## Step 8: 전체 페이지 자동 조회
150
158
 
151
159
  데이터가 많을 때 `list_all()`을 사용하면 모든 페이지를 자동으로 순회합니다.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "kpubdata"
7
- version = "0.3.0"
7
+ version = "0.3.1"
8
8
  description = "Dialect-inspired Python access framework for Korean public data"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -49,4 +49,6 @@ __all__ = [
49
49
  "ProviderNotRegisteredError",
50
50
  ]
51
51
 
52
- __version__ = "0.2.3"
52
+ from importlib.metadata import version as _pkg_version
53
+
54
+ __version__: str = _pkg_version("kpubdata")
@@ -7,6 +7,8 @@ from collections.abc import Mapping, Sequence
7
7
  from typing import NoReturn, cast
8
8
  from urllib.parse import urlparse
9
9
 
10
+ import httpx
11
+
10
12
  from kpubdata.config import KPubDataConfig
11
13
  from kpubdata.core.models import (
12
14
  DatasetRef,
@@ -22,6 +24,7 @@ from kpubdata.exceptions import (
22
24
  ProviderResponseError,
23
25
  RateLimitError,
24
26
  ServiceUnavailableError,
27
+ TransportError,
25
28
  )
26
29
  from kpubdata.providers._common import build_schema_from_metadata, coerce_int, load_catalogue
27
30
  from kpubdata.transport.decode import decode_json, decode_xml, detect_content_type
@@ -29,6 +32,12 @@ from kpubdata.transport.http import HttpTransport, TransportConfig
29
32
 
30
33
  logger = logging.getLogger("kpubdata.provider.datago")
31
34
 
35
+ _DATAGO_403_HINT = (
36
+ "data.go.kr returned 403. This usually means the specific API has not been activated "
37
+ "(활용신청) for your key. Visit the dataset's page on https://www.data.go.kr and "
38
+ "click '활용신청'. Approval is usually automatic and becomes active within a few minutes."
39
+ )
40
+
32
41
 
33
42
  def _is_success_code(code: str) -> bool:
34
43
  """Return True for any data.go.kr resultCode that signals success.
@@ -362,13 +371,23 @@ class DataGoAdapter:
362
371
  self, url: str, params: Mapping[str, object], dataset_id: str = ""
363
372
  ) -> dict[str, object]:
364
373
  string_params = {key: str(value) for key, value in params.items()}
365
- response = self._transport.request(
366
- "GET",
367
- url,
368
- params=string_params,
369
- dataset_id=dataset_id,
370
- provider="datago",
371
- )
374
+ try:
375
+ response = self._transport.request(
376
+ "GET",
377
+ url,
378
+ params=string_params,
379
+ dataset_id=dataset_id,
380
+ provider="datago",
381
+ )
382
+ except TransportError as exc:
383
+ if self._is_http_403(exc):
384
+ raise AuthError(
385
+ _DATAGO_403_HINT,
386
+ provider="datago",
387
+ dataset_id=dataset_id or None,
388
+ status_code=403,
389
+ ) from exc
390
+ raise
372
391
 
373
392
  try:
374
393
  content_type = detect_content_type(response)
@@ -394,6 +413,11 @@ class DataGoAdapter:
394
413
  )
395
414
  raise ParseError("Decoded payload is not an object", provider="datago")
396
415
 
416
+ @staticmethod
417
+ def _is_http_403(exc: TransportError) -> bool:
418
+ cause = exc.__cause__
419
+ return isinstance(cause, httpx.HTTPStatusError) and cause.response.status_code == 403
420
+
397
421
  def _validate_envelope(
398
422
  self, payload: dict[str, object], dataset: DatasetRef | None = None
399
423
  ) -> tuple[dict[str, object], list[dict[str, object]]]:
@@ -280,7 +280,13 @@ def test_datago_metro_fare(require_datago_key: None, live_client: Client) -> Non
280
280
  _ = require_datago_key
281
281
  ds = live_client.dataset("datago.metro_fare")
282
282
 
283
- result = ds.call_raw("getRltmFare2", numOfRows="5", pageNo="1")
283
+ result = ds.call_raw(
284
+ "getRltmFare2",
285
+ numOfRows="5",
286
+ pageNo="1",
287
+ dptreStnNm="서울역",
288
+ avrlStnNm="시청",
289
+ )
284
290
 
285
291
  assert isinstance(result, dict)
286
292
  assert "response" in result
@@ -288,13 +294,18 @@ def test_datago_metro_fare(require_datago_key: None, live_client: Client) -> Non
288
294
 
289
295
  @pytest.mark.integration
290
296
  @pytest.mark.skip(
291
- reason="External infra issue: see https://github.com/yeongseon/kpubdata/issues/140"
297
+ reason="Blocked by metro_fare upstream SSL issue (#139); params confirmed per #140"
292
298
  )
293
299
  def test_datago_metro_path(require_datago_key: None, live_client: Client) -> None:
294
300
  _ = require_datago_key
295
301
  ds = live_client.dataset("datago.metro_path")
296
302
 
297
- result = ds.call_raw("getShtrmPath", numOfRows="5", pageNo="1")
303
+ result = ds.call_raw(
304
+ "getShtrmPath",
305
+ dptreStnNm="신도림",
306
+ arvlStnNm="서울역",
307
+ searchDt="2026-04-22 13:00:00",
308
+ )
298
309
 
299
310
  assert isinstance(result, dict)
300
311
  assert "response" in result
@@ -0,0 +1,10 @@
1
+ """Regression test: kpubdata.__version__ must track package metadata."""
2
+
3
+ from importlib.metadata import version
4
+
5
+ import kpubdata
6
+
7
+
8
+ def test_version_matches_metadata() -> None:
9
+ """Ensure __version__ equals importlib.metadata version (issue #127)."""
10
+ assert kpubdata.__version__ == version("kpubdata")
@@ -5,6 +5,7 @@ import logging
5
5
  from types import MappingProxyType
6
6
  from typing import Protocol, cast
7
7
 
8
+ import httpx
8
9
  import pytest
9
10
 
10
11
  from kpubdata.config import KPubDataConfig
@@ -17,6 +18,7 @@ from kpubdata.exceptions import (
17
18
  InvalidRequestError,
18
19
  RateLimitError,
19
20
  ServiceUnavailableError,
21
+ TransportError,
20
22
  )
21
23
  from kpubdata.providers.datago.adapter import DataGoAdapter
22
24
  from kpubdata.transport.http import HttpTransport
@@ -353,6 +355,36 @@ class TestDataGoAdapterQueryRecords:
353
355
  with pytest.raises(ServiceUnavailableError):
354
356
  _ = adapter.query_records(dataset, Query())
355
357
 
358
+ def test_query_records_http_403_wraps_with_activation_hint(self) -> None:
359
+ request = httpx.Request("GET", "https://apis.data.go.kr/test")
360
+ response = httpx.Response(403, request=request)
361
+ status_error = httpx.HTTPStatusError(
362
+ "Client error '403 Forbidden' for url 'https://apis.data.go.kr/test'",
363
+ request=request,
364
+ response=response,
365
+ )
366
+
367
+ class ForbiddenTransport:
368
+ def request(self, method: str, url: str, **kwargs: object) -> FakeResponse:
369
+ del method, url, kwargs
370
+ raise TransportError(
371
+ "HTTP status error 403 for GET https://apis.data.go.kr/test"
372
+ ) from status_error
373
+
374
+ adapter = DataGoAdapter(
375
+ config=KPubDataConfig(provider_keys={"datago": "test-key"}),
376
+ transport=cast(HttpTransport, cast(object, ForbiddenTransport())),
377
+ )
378
+ dataset = adapter.get_dataset("village_fcst")
379
+
380
+ with pytest.raises(AuthError) as excinfo:
381
+ _ = adapter.query_records(dataset, Query())
382
+
383
+ assert "활용신청" in str(excinfo.value)
384
+ assert "https://www.data.go.kr" in str(excinfo.value)
385
+ assert excinfo.value.status_code == 403
386
+ assert excinfo.value.dataset_id == dataset.id
387
+
356
388
  def test_query_records_accepts_three_digit_success_code_000(self) -> None:
357
389
  payload = {
358
390
  "response": {
@@ -462,7 +462,7 @@ wheels = [
462
462
 
463
463
  [[package]]
464
464
  name = "kpubdata"
465
- version = "0.3.0"
465
+ version = "0.3.1"
466
466
  source = { editable = "." }
467
467
  dependencies = [
468
468
  { name = "httpx" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes