kpubdata 0.3.1__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 (407) hide show
  1. {kpubdata-0.3.1 → kpubdata-0.4.0}/ARCHITECTURE.md +3 -3
  2. {kpubdata-0.3.1 → kpubdata-0.4.0}/PKG-INFO +24 -4
  3. {kpubdata-0.3.1 → kpubdata-0.4.0}/README.md +23 -3
  4. kpubdata-0.4.0/ROADMAP.md +101 -0
  5. {kpubdata-0.3.1 → kpubdata-0.4.0}/SUPPORTED_DATA.md +17 -0
  6. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/product-family-architecture.md +10 -9
  7. {kpubdata-0.3.1 → kpubdata-0.4.0}/pyproject.toml +1 -1
  8. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/client.py +1 -0
  9. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/config.py +3 -0
  10. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/localdata/adapter.py +1 -1
  11. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/lofin/adapter.py +1 -1
  12. kpubdata-0.4.0/src/kpubdata/providers/semas/__init__.py +3 -0
  13. kpubdata-0.4.0/src/kpubdata/providers/semas/adapter.py +333 -0
  14. kpubdata-0.4.0/src/kpubdata/providers/semas/catalogue.json +665 -0
  15. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/test_localdata.py +1 -1
  16. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/test_lofin.py +4 -4
  17. kpubdata-0.4.0/tests/contract/test_semas.py +90 -0
  18. kpubdata-0.4.0/tests/fixtures/semas/empty_response.json +14 -0
  19. kpubdata-0.4.0/tests/fixtures/semas/error_auth.json +14 -0
  20. kpubdata-0.4.0/tests/fixtures/semas/error_invalid_request.json +14 -0
  21. kpubdata-0.4.0/tests/fixtures/semas/store_one_success.json +138 -0
  22. kpubdata-0.4.0/tests/fixtures/semas/upjong_large_success.json +27 -0
  23. kpubdata-0.4.0/tests/fixtures/semas/zone_one_success.json +39 -0
  24. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/localdata/test_adapter.py +3 -3
  25. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/lofin/test_lofin_adapter.py +1 -1
  26. kpubdata-0.4.0/tests/unit/providers/semas/test_adapter.py +204 -0
  27. kpubdata-0.4.0/tests/unit/transport/__init__.py +0 -0
  28. {kpubdata-0.3.1 → kpubdata-0.4.0}/uv.lock +1 -1
  29. kpubdata-0.3.1/ROADMAP.md +0 -55
  30. {kpubdata-0.3.1 → kpubdata-0.4.0}/.github/ISSUE_TEMPLATE/new-provider-adapter.yml +0 -0
  31. {kpubdata-0.3.1 → kpubdata-0.4.0}/.github/workflows/ci.yml +0 -0
  32. {kpubdata-0.3.1 → kpubdata-0.4.0}/.github/workflows/integration.yml +0 -0
  33. {kpubdata-0.3.1 → kpubdata-0.4.0}/.github/workflows/publish-pypi.yml +0 -0
  34. {kpubdata-0.3.1 → kpubdata-0.4.0}/.gitignore +0 -0
  35. {kpubdata-0.3.1 → kpubdata-0.4.0}/AGENTS.md +0 -0
  36. {kpubdata-0.3.1 → kpubdata-0.4.0}/API_SPEC.md +0 -0
  37. {kpubdata-0.3.1 → kpubdata-0.4.0}/CANONICAL_MODEL.md +0 -0
  38. {kpubdata-0.3.1 → kpubdata-0.4.0}/CHANGELOG.md +0 -0
  39. {kpubdata-0.3.1 → kpubdata-0.4.0}/CONTRIBUTING.md +0 -0
  40. {kpubdata-0.3.1 → kpubdata-0.4.0}/LICENSE +0 -0
  41. {kpubdata-0.3.1 → kpubdata-0.4.0}/PACKAGING.md +0 -0
  42. {kpubdata-0.3.1 → kpubdata-0.4.0}/PRD.md +0 -0
  43. {kpubdata-0.3.1 → kpubdata-0.4.0}/PROVIDER_ADAPTER_CONTRACT.md +0 -0
  44. {kpubdata-0.3.1 → kpubdata-0.4.0}/VALIDATION.md +0 -0
  45. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/adrs/0001-dialect-inspired-architecture.md +0 -0
  46. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/adrs/0002-standardize-ux-not-native-shape.md +0 -0
  47. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/architecture-diagrams.md +0 -0
  48. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/caching.md +0 -0
  49. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/cli.md +0 -0
  50. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/datago-api-reference.md +0 -0
  51. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/logging.md +0 -0
  52. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/providers/bok.md +0 -0
  53. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/providers/datago.md +0 -0
  54. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/providers/kosis.md +0 -0
  55. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/providers/seoul.md +0 -0
  56. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/quickstart.md +0 -0
  57. {kpubdata-0.3.1 → kpubdata-0.4.0}/docs/tutorial-ai-agent-workflow.md +0 -0
  58. {kpubdata-0.3.1 → kpubdata-0.4.0}/plans/sgis-provider-issue-150.md +0 -0
  59. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/__init__.py +0 -0
  60. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/catalog.py +0 -0
  61. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/cli.py +0 -0
  62. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/core/__init__.py +0 -0
  63. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/core/capability.py +0 -0
  64. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/core/dataset.py +0 -0
  65. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/core/models.py +0 -0
  66. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/core/protocol.py +0 -0
  67. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/core/representation.py +0 -0
  68. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/exceptions.py +0 -0
  69. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/__init__.py +0 -0
  70. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/_common.py +0 -0
  71. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/bok/__init__.py +0 -0
  72. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/bok/adapter.py +0 -0
  73. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/bok/catalogue.json +0 -0
  74. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/datago/__init__.py +0 -0
  75. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/datago/adapter.py +0 -0
  76. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/datago/catalogue.json +0 -0
  77. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/kosis/__init__.py +0 -0
  78. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/kosis/adapter.py +0 -0
  79. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/kosis/catalogue.json +0 -0
  80. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/localdata/__init__.py +0 -0
  81. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/localdata/catalogue.json +0 -0
  82. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/lofin/__init__.py +0 -0
  83. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/lofin/catalogue.json +0 -0
  84. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/seoul/__init__.py +0 -0
  85. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/seoul/adapter.py +0 -0
  86. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/seoul/catalogue.json +0 -0
  87. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/sgis/__init__.py +0 -0
  88. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/sgis/adapter.py +0 -0
  89. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/sgis/auth.py +0 -0
  90. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/providers/sgis/catalogue.json +0 -0
  91. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/py.typed +0 -0
  92. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/registry.py +0 -0
  93. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/transport/__init__.py +0 -0
  94. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/transport/cache.py +0 -0
  95. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/transport/decode.py +0 -0
  96. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/transport/http.py +0 -0
  97. {kpubdata-0.3.1 → kpubdata-0.4.0}/src/kpubdata/transport/retry.py +0 -0
  98. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/__init__.py +0 -0
  99. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/__init__.py +0 -0
  100. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/provider_adapter.py +0 -0
  101. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/test_bok.py +0 -0
  102. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/test_datago.py +0 -0
  103. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/test_kosis.py +0 -0
  104. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/test_seoul.py +0 -0
  105. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/contract/test_sgis_contract.py +0 -0
  106. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/bok/error_auth.json +0 -0
  107. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/bok/success_empty.json +0 -0
  108. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/bok/success_single_page.json +0 -0
  109. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/bus_arrival_v2.json +0 -0
  110. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/error_auth_30.json +0 -0
  111. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/error_invalid_request_10.json +0 -0
  112. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/error_rate_limit_22.json +0 -0
  113. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/error_service_unavailable_01.json +0 -0
  114. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/error_xml_auth_30.xml +0 -0
  115. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_apt_rent.json +0 -0
  116. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_apt_trade.json +0 -0
  117. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_empty.json +0 -0
  118. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_metro_fare.json +0 -0
  119. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_metro_path.json +0 -0
  120. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_multi_page_1.json +0 -0
  121. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_multi_page_2.json +0 -0
  122. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_offi_rent.json +0 -0
  123. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_offi_trade.json +0 -0
  124. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_rh_rent.json +0 -0
  125. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_rh_trade.json +0 -0
  126. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_sh_rent.json +0 -0
  127. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_sh_trade.json +0 -0
  128. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_single_item.json +0 -0
  129. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_single_page.json +0 -0
  130. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_string_numerics.json +0 -0
  131. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_tour_kor_area.json +0 -0
  132. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_tour_kor_festival.json +0 -0
  133. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_tour_kor_keyword.json +0 -0
  134. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_tour_kor_location.json +0 -0
  135. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_xml.xml +0 -0
  136. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/datago/success_xml_single_item.xml +0 -0
  137. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/kosis/error_auth.json +0 -0
  138. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/kosis/success_empty.json +0 -0
  139. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/kosis/success_single_page.json +0 -0
  140. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/affiliated_medical_institution_success.json +0 -0
  141. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/air_pollution_prevention_facility_success.json +0 -0
  142. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/amusement_facility_success.json +0 -0
  143. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_breeding_success.json +0 -0
  144. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_care_service_success.json +0 -0
  145. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_crematorium_success.json +0 -0
  146. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_exhibition_success.json +0 -0
  147. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_funeral_success.json +0 -0
  148. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_hospital_success.json +0 -0
  149. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_import_success.json +0 -0
  150. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_sales_success.json +0 -0
  151. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_training_success.json +0 -0
  152. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/animal_transport_success.json +0 -0
  153. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/bakery_success.json +0 -0
  154. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/barber_shop_success.json +0 -0
  155. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/beauty_salon_success.json +0 -0
  156. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/billiard_hall_success.json +0 -0
  157. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/boxing_gym_success.json +0 -0
  158. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/breeding_stock_success.json +0 -0
  159. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/building_sanitation_management_success.json +0 -0
  160. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/caregiver_training_institution_success.json +0 -0
  161. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/city_gas_success.json +0 -0
  162. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/civil_defense_water_supply_success.json +0 -0
  163. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/clinic_success.json +0 -0
  164. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/companion_animal_related_business_success.json +0 -0
  165. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/composite_game_provider_success.json +0 -0
  166. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/comprehensive_amusement_facility_success.json +0 -0
  167. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/comprehensive_resort_business_success.json +0 -0
  168. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/comprehensive_sports_facility_success.json +0 -0
  169. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/comprehensive_travel_success.json +0 -0
  170. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/container_packaging_manufacturing_success.json +0 -0
  171. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/contract_foodservice_success.json +0 -0
  172. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/culture_industry_company_success.json +0 -0
  173. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/dance_academy_success.json +0 -0
  174. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/dance_hall_success.json +0 -0
  175. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/dental_lab_success.json +0 -0
  176. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/disinfection_business_success.json +0 -0
  177. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/distribution_specialized_sales_success.json +0 -0
  178. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/domestic_international_travel_success.json +0 -0
  179. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/domestic_travel_success.json +0 -0
  180. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/door_to_door_sales_success.json +0 -0
  181. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/ecommerce_success.json +0 -0
  182. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/edible_ice_sales_success.json +0 -0
  183. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/electrical_construction_success.json +0 -0
  184. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/electrical_safety_management_agency_success.json +0 -0
  185. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/electricity_sales_success.json +0 -0
  186. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/electronic_distribution_success.json +0 -0
  187. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/elevator_maintenance_success.json +0 -0
  188. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/elevator_manufacturing_import_success.json +0 -0
  189. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/emergency_patient_transport_success.json +0 -0
  190. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/empty_response.json +0 -0
  191. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/energy_saving_company_success.json +0 -0
  192. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/entertainment_bar_success.json +0 -0
  193. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/environmental_consulting_success.json +0 -0
  194. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/environmental_impact_assessment_success.json +0 -0
  195. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/environmental_measurement_agency_success.json +0 -0
  196. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/error_auth.json +0 -0
  197. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/feed_manufacturing_success.json +0 -0
  198. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/fitness_center_success.json +0 -0
  199. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/food_additive_manufacturing_success.json +0 -0
  200. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/food_cold_storage_success.json +0 -0
  201. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/food_manufacturing_success.json +0 -0
  202. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/food_repackaging_success.json +0 -0
  203. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/food_transportation_success.json +0 -0
  204. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/food_vending_machine_success.json +0 -0
  205. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/foreign_tourist_city_homestay_lodging_success.json +0 -0
  206. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/foreign_tourist_city_homestay_success.json +0 -0
  207. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/foreigner_exclusive_entertainment_restaurant_success.json +0 -0
  208. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/free_job_placement_success.json +0 -0
  209. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/funeral_director_training_institution_success.json +0 -0
  210. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/funeral_service_success.json +0 -0
  211. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/game_distribution_success.json +0 -0
  212. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/game_manufacturing_success.json +0 -0
  213. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/game_provider_success.json +0 -0
  214. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/gas_appliance_manufacturing_success.json +0 -0
  215. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/general_amusement_facility_success.json +0 -0
  216. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/general_lodging_success.json +0 -0
  217. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/general_restaurant_success.json +0 -0
  218. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/golf_course_success.json +0 -0
  219. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/golf_practice_range_success.json +0 -0
  220. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/groundwater_construction_success.json +0 -0
  221. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/groundwater_impact_assessment_success.json +0 -0
  222. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/groundwater_purification_success.json +0 -0
  223. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/group_cafeteria_success.json +0 -0
  224. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/hanok_experience_lodging_success.json +0 -0
  225. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/hanok_experience_success.json +0 -0
  226. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/hatchery_success.json +0 -0
  227. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/health_functional_food_distributor_success.json +0 -0
  228. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/health_functional_food_retail_success.json +0 -0
  229. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/health_functional_food_specialty_success.json +0 -0
  230. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/high_pressure_gas_success.json +0 -0
  231. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/horse_riding_success.json +0 -0
  232. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/hospital_success.json +0 -0
  233. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/ice_rink_success.json +0 -0
  234. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/imported_food_sales_success.json +0 -0
  235. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/imported_livestock_sales_success.json +0 -0
  236. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/instant_food_manufacturing_success.json +0 -0
  237. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/international_conference_facility_success.json +0 -0
  238. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/international_conference_planning_success.json +0 -0
  239. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/international_freight_forwarding_success.json +0 -0
  240. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/internet_computer_game_facility_success.json +0 -0
  241. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/karaoke_success.json +0 -0
  242. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/large_store_success.json +0 -0
  243. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/laundry_success.json +0 -0
  244. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/livestock_artificial_insemination_center_success.json +0 -0
  245. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/livestock_farming_success.json +0 -0
  246. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/livestock_processing_success.json +0 -0
  247. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/livestock_sales_success.json +0 -0
  248. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/livestock_storage_success.json +0 -0
  249. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/livestock_transportation_success.json +0 -0
  250. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/log_production_success.json +0 -0
  251. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/logistics_warehouse_success.json +0 -0
  252. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/lpg_charging_success.json +0 -0
  253. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/lpg_collective_supply_success.json +0 -0
  254. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/lpg_sales_success.json +0 -0
  255. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/mail_order_sales_success.json +0 -0
  256. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/marine_environment_management_success.json +0 -0
  257. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/martial_arts_gym_success.json +0 -0
  258. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/medical_device_repair_success.json +0 -0
  259. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/medical_device_sales_success.json +0 -0
  260. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/medical_foundation_success.json +0 -0
  261. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/medical_linen_processing_success.json +0 -0
  262. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/medical_waste_treatment_success.json +0 -0
  263. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/meter_repair_success.json +0 -0
  264. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/milk_collection_success.json +0 -0
  265. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/motor_racing_course_success.json +0 -0
  266. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/movie_distribution_success.json +0 -0
  267. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/movie_import_success.json +0 -0
  268. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/movie_production_success.json +0 -0
  269. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/movie_screening_success.json +0 -0
  270. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/movie_theater_success.json +0 -0
  271. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/multilevel_sales_success.json +0 -0
  272. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/music_video_distribution_success.json +0 -0
  273. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/music_video_production_success.json +0 -0
  274. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/night_soil_collection_transportation_success.json +0 -0
  275. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/noise_vibration_prevention_facility_success.json +0 -0
  276. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/onggi_manufacturing_success.json +0 -0
  277. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/online_music_service_success.json +0 -0
  278. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/optical_shop_success.json +0 -0
  279. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/other_food_sales_success.json +0 -0
  280. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/outdoor_advertising_success.json +0 -0
  281. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/paid_job_placement_success.json +0 -0
  282. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/performance_hall_success.json +0 -0
  283. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/pet_grooming_success.json +0 -0
  284. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/petroleum_import_export_success.json +0 -0
  285. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/petroleum_sales_success.json +0 -0
  286. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/pharmacy_success.json +0 -0
  287. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/popular_culture_arts_planning_success.json +0 -0
  288. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/postpartum_care_success.json +0 -0
  289. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/prepaid_installment_trade_success.json +0 -0
  290. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/printing_house_success.json +0 -0
  291. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/public_bath_success.json +0 -0
  292. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/publisher_success.json +0 -0
  293. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/quasi_medical_business_success.json +0 -0
  294. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/record_distribution_success.json +0 -0
  295. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/record_production_success.json +0 -0
  296. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/residential_accommodation_success.json +0 -0
  297. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/rest_cafe_success.json +0 -0
  298. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/rural_guesthouse_success.json +0 -0
  299. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/safe_over_the_counter_drug_store_success.json +0 -0
  300. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/sanitary_product_manufacturing_success.json +0 -0
  301. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/sanitation_treatment_success.json +0 -0
  302. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/sawmill_success.json +0 -0
  303. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/singing_bar_success.json +0 -0
  304. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/ski_resort_success.json +0 -0
  305. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/slaughterhouse_success.json +0 -0
  306. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/small_hotel_success.json +0 -0
  307. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/soil_remediation_success.json +0 -0
  308. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/specialized_resort_business_success.json +0 -0
  309. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/swimming_pool_success.json +0 -0
  310. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/timber_import_distribution_success.json +0 -0
  311. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tobacco_import_sales_success.json +0 -0
  312. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tobacco_retail_success.json +0 -0
  313. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tobacco_wholesale_success.json +0 -0
  314. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourism_business_success.json +0 -0
  315. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourism_convenience_facility_success.json +0 -0
  316. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourism_duty_free_success.json +0 -0
  317. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_accommodation_success.json +0 -0
  318. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_entertainment_restaurant_success.json +0 -0
  319. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_excursion_boat_success.json +0 -0
  320. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_pension_success.json +0 -0
  321. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_performance_hall_success.json +0 -0
  322. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_restaurant_success.json +0 -0
  323. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_theater_entertainment_success.json +0 -0
  324. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/tourist_track_success.json +0 -0
  325. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/video_distribution_success.json +0 -0
  326. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/video_production_success.json +0 -0
  327. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/video_small_theater_success.json +0 -0
  328. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/video_viewing_room_success.json +0 -0
  329. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/video_viewing_service_success.json +0 -0
  330. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/waste_collection_transportation_success.json +0 -0
  331. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/waste_recycling_success.json +0 -0
  332. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/waste_treatment_success.json +0 -0
  333. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/water_pollution_prevention_facility_success.json +0 -0
  334. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/water_tank_cleaning_success.json +0 -0
  335. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/yacht_marina_success.json +0 -0
  336. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/localdata/youth_game_provider_success.json +0 -0
  337. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/lofin/error_auth.json +0 -0
  338. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/lofin/success_fiacrv.json +0 -0
  339. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/lofin/success_single_page.json +0 -0
  340. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/seoul/bike_rent_month_success.json +0 -0
  341. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/seoul/empty_response.json +0 -0
  342. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/seoul/error_auth.json +0 -0
  343. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/seoul/subway_realtime_arrival_success.json +0 -0
  344. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/sgis/auth_success.json +0 -0
  345. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/sgis/error_invalid_token.json +0 -0
  346. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/sgis/sido_boundary.geojson +0 -0
  347. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/fixtures/sgis/sigungu_boundary.geojson +0 -0
  348. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/README.md +0 -0
  349. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/__init__.py +0 -0
  350. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/conftest.py +0 -0
  351. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_bok_live.py +0 -0
  352. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_client_flow.py +0 -0
  353. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_datago_live.py +0 -0
  354. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_exception_propagation.py +0 -0
  355. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_kosis_live.py +0 -0
  356. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_localdata_live.py +0 -0
  357. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_lofin_live.py +0 -0
  358. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_seoul_live.py +0 -0
  359. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/integration/test_transport_http.py +0 -0
  360. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/__init__.py +0 -0
  361. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/__init__.py +0 -0
  362. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_dataset.py +0 -0
  363. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_dataset_coverage.py +0 -0
  364. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_exceptions.py +0 -0
  365. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_exceptions_coverage.py +0 -0
  366. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_models.py +0 -0
  367. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_models_fixtures.py +0 -0
  368. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_to_pandas.py +0 -0
  369. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/core/test_version.py +0 -0
  370. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/__init__.py +0 -0
  371. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/bok/test_bok_adapter.py +0 -0
  372. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/datago/__init__.py +0 -0
  373. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/datago/conftest.py +0 -0
  374. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/datago/test_adapter.py +0 -0
  375. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/datago/test_adapter_coverage.py +0 -0
  376. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/datago/test_fixtures.py +0 -0
  377. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/datago/test_generic.py +0 -0
  378. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/kosis/test_adapter.py +0 -0
  379. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/localdata/__init__.py +0 -0
  380. {kpubdata-0.3.1/tests/unit/providers/seoul → kpubdata-0.4.0/tests/unit/providers/semas}/__init__.py +0 -0
  381. {kpubdata-0.3.1/tests/unit/transport → kpubdata-0.4.0/tests/unit/providers/seoul}/__init__.py +0 -0
  382. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/seoul/test_adapter.py +0 -0
  383. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/sgis/__init__.py +0 -0
  384. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/sgis/test_adapter.py +0 -0
  385. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/providers/sgis/test_auth.py +0 -0
  386. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_catalog.py +0 -0
  387. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_catalog_coverage.py +0 -0
  388. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_catalogue_validation.py +0 -0
  389. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_cli.py +0 -0
  390. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_client_coverage.py +0 -0
  391. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_client_transport_requirements.py +0 -0
  392. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_config.py +0 -0
  393. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_config_coverage.py +0 -0
  394. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_failure_path_logging.py +0 -0
  395. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_logging.py +0 -0
  396. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_registry.py +0 -0
  397. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/test_registry_coverage.py +0 -0
  398. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_cache.py +0 -0
  399. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_decode.py +0 -0
  400. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_decode_coverage.py +0 -0
  401. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_http_coverage.py +0 -0
  402. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_http_coverage_extra.py +0 -0
  403. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_logging.py +0 -0
  404. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_retry.py +0 -0
  405. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_retry_after.py +0 -0
  406. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_retry_coverage.py +0 -0
  407. {kpubdata-0.3.1 → kpubdata-0.4.0}/tests/unit/transport/test_transport_requirements.py +0 -0
@@ -349,9 +349,10 @@ Not part of the core runtime contract.
349
349
  Examples:
350
350
 
351
351
  - pandas export
352
- - MCP adapter
353
352
  - plugin loaders
354
353
 
354
+ MCP adapter는 별도 레포(kpubdata-mcp 등)로 분리합니다. 코어 런타임에 포함하지 않습니다.
355
+
355
356
  ## 4. Main abstractions
356
357
 
357
358
  ### 4.1 Client
@@ -475,7 +476,7 @@ src/kpubdata/
475
476
  mappings.py
476
477
  adapters/
477
478
  pandas.py
478
- mcp.py
479
+ # MCP adapter는 별도 레포(kpubdata-mcp 등)로 분리
479
480
  ```
480
481
 
481
482
  ## 9. Execution flow
@@ -546,4 +547,3 @@ Do **not** change the core just because one adapter is weird.
546
547
  | :--- | :--- | :--- |
547
548
  | [kpubdata-builder](https://github.com/yeongseon/kpubdata-builder) | [ARCHITECTURE.md](https://github.com/yeongseon/kpubdata-builder/blob/main/ARCHITECTURE.md) | Builder 아키텍처 |
548
549
  | [kpubdata-studio](https://github.com/yeongseon/kpubdata-studio) | [ARCHITECTURE.md](https://github.com/yeongseon/kpubdata-studio/blob/main/ARCHITECTURE.md) | Studio 아키텍처 |
549
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kpubdata
3
- Version: 0.3.1
3
+ Version: 0.4.0
4
4
  Summary: Dialect-inspired Python access framework for Korean public data
5
5
  Author: Yeongseon Choe
6
6
  License: MIT
@@ -166,6 +166,11 @@ KPubData가 지원하는 각 기관의 API 키를 발급받아 [환경 변수](h
166
166
  - **절차**: 회원가입 → 지방행정인허가 Open API(일반음식점/휴게음식점) 활용신청 → 승인 후 인증키 확인
167
167
  - **환경 변수**: `KPUBDATA_LOCALDATA_API_KEY`
168
168
 
169
+ #### 소상공인시장진흥공단 상가(상권)정보 (data.go.kr) — `semas`
170
+ - **가입 URL**: [https://www.data.go.kr](https://www.data.go.kr)
171
+ - **절차**: 회원가입 → 소상공인시장진흥공단 상가(상권)정보 Open API 활용신청 → 승인 후 인증키 확인
172
+ - **환경 변수**: `KPUBDATA_SEMAS_API_KEY`
173
+
169
174
  #### 서울 열린데이터광장 (data.seoul.go.kr) — `seoul`
170
175
  - **가입 URL**: [https://data.seoul.go.kr/](https://data.seoul.go.kr/)
171
176
  - **절차**: 회원가입 → 원하는 Open API 페이지에서 인증키 신청/확인 → 마이페이지에서 발급 키 확인
@@ -198,6 +203,9 @@ export KPUBDATA_LOFIN_API_KEY="your-lofin-api-key"
198
203
  # 지방행정인허가
199
204
  export KPUBDATA_LOCALDATA_API_KEY="your-localdata-service-key"
200
205
 
206
+ # 소상공인시장진흥공단 상가(상권)정보
207
+ export KPUBDATA_SEMAS_API_KEY="your-semas-service-key"
208
+
201
209
  # 서울 열린데이터광장
202
210
  export KPUBDATA_SEOUL_API_KEY="your-seoul-api-key"
203
211
 
@@ -221,6 +229,7 @@ client = Client(provider_keys={
221
229
  "kosis": "YOUR_KOSIS_API_KEY",
222
230
  "lofin": "YOUR_LOFIN_API_KEY",
223
231
  "localdata": "YOUR_DATA_GO_KR_API_KEY",
232
+ "semas": "YOUR_SEMAS_API_KEY",
224
233
  "seoul": "YOUR_SEOUL_API_KEY",
225
234
  "sgis": "YOUR_SGIS_CONSUMER_KEY:YOUR_SGIS_CONSUMER_SECRET",
226
235
  })
@@ -349,7 +358,18 @@ for item in result.items:
349
358
  print(item["BPLC_NM"], item["ROAD_NM_ADDR"])
350
359
  ```
351
360
 
352
- ### 10. 전체 페이지 자동 조회 (list_all)
361
+ ### 10. 소상공인 상가정보 조회 (Semas)
362
+
363
+ ```python
364
+ client = Client(provider_keys={"semas": "YOUR_SEMAS_API_KEY"})
365
+ ds = client.dataset("semas.store_radius")
366
+ result = ds.list(cx="127.02758", cy="37.49794", radius="250", page_size=10)
367
+
368
+ for item in result.items:
369
+ print(item["bizesNm"], item["rdnmAdr"])
370
+ ```
371
+
372
+ ### 11. 전체 페이지 자동 조회 (list_all)
353
373
 
354
374
  대량의 데이터를 페이지 단위로 자동 순회하려면 `list_all()`을 사용합니다.
355
375
 
@@ -363,7 +383,7 @@ for batch in ds.list_all(fyr="2024"):
363
383
  print(item)
364
384
  ```
365
385
 
366
- ### 11. pandas DataFrame 변환
386
+ ### 12. pandas DataFrame 변환
367
387
 
368
388
  조회 결과를 pandas DataFrame으로 변환하여 분석할 수 있습니다.
369
389
 
@@ -494,4 +514,4 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
494
514
  - [Pandas](https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html)(데이터 분석용 파이썬 라이브러리) 데이터프레임 변환 어댑터 추가
495
515
 
496
516
  ### v0.3
497
- - 표준 코어를 기반으로 한 경량 [MCP](https://modelcontextprotocol.io/)(Model Context Protocol — AI 모델이 외부 도구를 사용하는 표준 규약) 어댑터 지원
517
+ - Provider 확장 (지역 기반 추가 데이터셋)
@@ -129,6 +129,11 @@ KPubData가 지원하는 각 기관의 API 키를 발급받아 [환경 변수](h
129
129
  - **절차**: 회원가입 → 지방행정인허가 Open API(일반음식점/휴게음식점) 활용신청 → 승인 후 인증키 확인
130
130
  - **환경 변수**: `KPUBDATA_LOCALDATA_API_KEY`
131
131
 
132
+ #### 소상공인시장진흥공단 상가(상권)정보 (data.go.kr) — `semas`
133
+ - **가입 URL**: [https://www.data.go.kr](https://www.data.go.kr)
134
+ - **절차**: 회원가입 → 소상공인시장진흥공단 상가(상권)정보 Open API 활용신청 → 승인 후 인증키 확인
135
+ - **환경 변수**: `KPUBDATA_SEMAS_API_KEY`
136
+
132
137
  #### 서울 열린데이터광장 (data.seoul.go.kr) — `seoul`
133
138
  - **가입 URL**: [https://data.seoul.go.kr/](https://data.seoul.go.kr/)
134
139
  - **절차**: 회원가입 → 원하는 Open API 페이지에서 인증키 신청/확인 → 마이페이지에서 발급 키 확인
@@ -161,6 +166,9 @@ export KPUBDATA_LOFIN_API_KEY="your-lofin-api-key"
161
166
  # 지방행정인허가
162
167
  export KPUBDATA_LOCALDATA_API_KEY="your-localdata-service-key"
163
168
 
169
+ # 소상공인시장진흥공단 상가(상권)정보
170
+ export KPUBDATA_SEMAS_API_KEY="your-semas-service-key"
171
+
164
172
  # 서울 열린데이터광장
165
173
  export KPUBDATA_SEOUL_API_KEY="your-seoul-api-key"
166
174
 
@@ -184,6 +192,7 @@ client = Client(provider_keys={
184
192
  "kosis": "YOUR_KOSIS_API_KEY",
185
193
  "lofin": "YOUR_LOFIN_API_KEY",
186
194
  "localdata": "YOUR_DATA_GO_KR_API_KEY",
195
+ "semas": "YOUR_SEMAS_API_KEY",
187
196
  "seoul": "YOUR_SEOUL_API_KEY",
188
197
  "sgis": "YOUR_SGIS_CONSUMER_KEY:YOUR_SGIS_CONSUMER_SECRET",
189
198
  })
@@ -312,7 +321,18 @@ for item in result.items:
312
321
  print(item["BPLC_NM"], item["ROAD_NM_ADDR"])
313
322
  ```
314
323
 
315
- ### 10. 전체 페이지 자동 조회 (list_all)
324
+ ### 10. 소상공인 상가정보 조회 (Semas)
325
+
326
+ ```python
327
+ client = Client(provider_keys={"semas": "YOUR_SEMAS_API_KEY"})
328
+ ds = client.dataset("semas.store_radius")
329
+ result = ds.list(cx="127.02758", cy="37.49794", radius="250", page_size=10)
330
+
331
+ for item in result.items:
332
+ print(item["bizesNm"], item["rdnmAdr"])
333
+ ```
334
+
335
+ ### 11. 전체 페이지 자동 조회 (list_all)
316
336
 
317
337
  대량의 데이터를 페이지 단위로 자동 순회하려면 `list_all()`을 사용합니다.
318
338
 
@@ -326,7 +346,7 @@ for batch in ds.list_all(fyr="2024"):
326
346
  print(item)
327
347
  ```
328
348
 
329
- ### 11. pandas DataFrame 변환
349
+ ### 12. pandas DataFrame 변환
330
350
 
331
351
  조회 결과를 pandas DataFrame으로 변환하여 분석할 수 있습니다.
332
352
 
@@ -457,4 +477,4 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
457
477
  - [Pandas](https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html)(데이터 분석용 파이썬 라이브러리) 데이터프레임 변환 어댑터 추가
458
478
 
459
479
  ### v0.3
460
- - 표준 코어를 기반으로 한 경량 [MCP](https://modelcontextprotocol.io/)(Model Context Protocol — AI 모델이 외부 도구를 사용하는 표준 규약) 어댑터 지원
480
+ - Provider 확장 (지역 기반 추가 데이터셋)
@@ -0,0 +1,101 @@
1
+ # Roadmap — KPubData
2
+
3
+ > kpubdata는 **한국 공공데이터 접근 코어 프레임워크**에 집중합니다.
4
+ > MCP, HTTP API 등 서비스 레이어는 본체에 포함하지 않으며, 필요 시 별도 레포(`kpubdata-mcp` 등)로 분리합니다.
5
+
6
+ ## 개발 3축
7
+
8
+ | 축 | 설명 | 대표 이슈 |
9
+ | :--- | :--- | :--- |
10
+ | **Core** | 핵심 계약(contract), 스키마, 메타데이터, discovery 안정화 | #55, #57, #63 |
11
+ | **Plugin Ecosystem** | entry-point plugin discovery, provider scaffolding 도구 | #112, #61 |
12
+ | **Provider Adapters** | 기관별 어댑터 확장 (datago, localdata, semas, bok, ...) | #87-#94, #161-#168 |
13
+
14
+ ---
15
+
16
+ ## v0.1 ✅
17
+
18
+ Foundation release.
19
+
20
+ - finalize core contracts
21
+ - implement transport skeleton
22
+ - implement 3 distinct adapters (datago, bok, kosis)
23
+ - support XML + JSON
24
+ - support discovery + list + raw
25
+ - ship docs and contract tests
26
+
27
+ ## v0.2 ✅
28
+
29
+ Stabilization and ergonomics.
30
+
31
+ - dataset metadata enrichment
32
+ - schema improvements
33
+ - pandas adapter (`to_pandas()`)
34
+ - single-page pagination contract + `list_all()`
35
+ - more examples and documentation
36
+
37
+ ## v0.3 ✅
38
+
39
+ Provider expansion.
40
+
41
+ - localdata provider: 195개 인허가 데이터셋
42
+ - sgis provider: 행정구역 경계 GeoJSON
43
+ - semas provider: 상가(상권)정보 17개 데이터셋
44
+ - seoul provider: 지하철 실시간, 따릉이
45
+ - lofin provider: 6개 재정 데이터셋
46
+ - datago provider: 부동산 실거래가, 관광, 지하철 어댑터 추가
47
+
48
+ ## v0.4 — Core 안정화
49
+
50
+ - dataset metadata enrichment (#55)
51
+ - schema improvements (#57)
52
+ - more robust discovery (#63)
53
+ - documentation (#59, #172)
54
+ - integration tests (#80)
55
+
56
+ ## v0.5 — Provider 확장
57
+
58
+ - datago: 실시간 도로교통정보 (#87), 농수축산물 가격정보 (#88)
59
+ - datago: 건축물대장 (#90), 사업자등록 상태조회 (#91)
60
+ - datago: 의약품 안전사용정보 (#92), 지하철역별 승하차 인원 (#93)
61
+ - datago: 기상청 중기예보 (#94)
62
+ - datago: 워크넷 채용정보 (#161), 긴급재난문자 (#162), 채권시세정보 (#163)
63
+ - datago: NEIS 급식식단정보 (#164), 식품이력추적 (#165), 전국체육시설 (#166)
64
+ - datago: 문화시설 (#167), 환경소음 측정망 (#168)
65
+
66
+ ## v1.0 criteria
67
+
68
+ - public API feels stable
69
+ - adapter contract proven across multiple provider families (7+ providers)
70
+ - plugin discovery로 외부 provider 패키지 등록 가능
71
+ - docs/examples sufficient for external users
72
+ - breakage policy and versioning discipline established
73
+
74
+ ---
75
+
76
+ ## 본체에 포함하지 않는 것
77
+
78
+ 아래 항목은 kpubdata 코어에 넣지 않습니다. 필요 시 product family 별도 레포로 분리합니다.
79
+
80
+ | 항목 | 분리 대상 레포 | 상태 |
81
+ | :--- | :--- | :--- |
82
+ | MCP adapter | `kpubdata-mcp` | 미생성 (필요 시 분리) |
83
+ | HTTP/REST API 서비스 | `kpubdata-api` | 미생성 (필요 시 분리) |
84
+ | LLM tool schema / agent helper | `kpubdata-mcp` | 미생성 (필요 시 분리) |
85
+
86
+ ---
87
+
88
+ ## 관련 문서
89
+
90
+ ### 이 저장소 내 문서
91
+ | 문서 | 설명 |
92
+ | :--- | :--- |
93
+ | [PRD.md](./PRD.md) | 제품 요구사항 정의 |
94
+ | [ARCHITECTURE.md](./ARCHITECTURE.md) | 시스템 아키텍처 설계 |
95
+ | [API_SPEC.md](./API_SPEC.md) | 파이썬 API 명세 |
96
+
97
+ ### KPubData Product Family
98
+ | 저장소 | 문서 | 설명 |
99
+ | :--- | :--- | :--- |
100
+ | [kpubdata-builder](https://github.com/yeongseon/kpubdata-builder) | [ROADMAP.md](https://github.com/yeongseon/kpubdata-builder/blob/main/ROADMAP.md) | Builder 로드맵 |
101
+ | [kpubdata-studio](https://github.com/yeongseon/kpubdata-studio) | [ROADMAP.md](https://github.com/yeongseon/kpubdata-studio/blob/main/ROADMAP.md) | Studio 로드맵 |
@@ -239,6 +239,23 @@
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 검증은 후속 |
242
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `zone_one` | 지정상권 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeZoneOne` |
243
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `zone_radius` | 반경상권 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeZoneInRadius` |
244
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `zone_rect` | 사각형상권 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeZoneInRectangle` |
245
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `zone_admi` | 행정구역상권 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeZoneInAdmi` |
246
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_one` | 단일상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeOne` |
247
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_building` | 건물상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInBuilding` |
248
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_pnu` | 지번상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInPnu` |
249
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_dong` | 행정동상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInDong` |
250
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_area` | 상권상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInArea` |
251
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_radius` | 반경상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInRadius` |
252
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_rect` | 사각형상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInRectangle` |
253
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_polygon` | 다각형상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInPolygon` |
254
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_upjong` | 업종별상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListInUpjong` |
255
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `store_date` | 수정일자상가 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `storeListByDate` |
256
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `upjong_large` | 업종대분류 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `largeUpjongList` |
257
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `upjong_middle` | 업종중분류 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `middleUpjongList` |
258
+ | 지원 | 테스트 검증 | - | 소상공인시장진흥공단 (`semas`) | `upjong_small` | 업종소분류 조회 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 상가(상권)정보 API / `smallUpjongList` |
242
259
  | 지원 | 테스트 검증 | - | 서울 열린데이터광장 (`seoul`) | `subway_realtime_arrival` | 서울시 지하철 실시간 도착정보 | [서울 열린데이터광장](https://data.seoul.go.kr/) 인증키 | [data.seoul.go.kr](https://data.seoul.go.kr/) | 경로 기반 인증키 + 서비스별 top-level envelope |
243
260
  | 지원 | 테스트 검증 | - | 서울 열린데이터광장 (`seoul`) | `bike_rent_month` | 서울시 공공자전거 이용정보(월별) | [서울 열린데이터광장](https://data.seoul.go.kr/) 인증키 | [data.seoul.go.kr](https://data.seoul.go.kr/) | 경로 기반 인증키 + 인덱스 페이지네이션 |
244
261
  | 지원 | 실API 검증 | 2025-04-15 | 한국은행 ECOS (`bok`) | `base_rate` | 한국은행 기준금리 | [ECOS](https://ecos.bok.or.kr/api/) 인증키 | [ecos.bok.or.kr](https://ecos.bok.or.kr/api/) | |
@@ -8,7 +8,7 @@ KPubData Product Family(Korea Public Data Product Family)는 한국 공공데이
8
8
  | :--- | :--- | :--- |
9
9
  | [kpubdata](https://github.com/yeongseon/kpubdata) | 공공데이터를 가져오고 표준화하는 코어 라이브러리 | Python 3.10+ |
10
10
  | [kpubdata-builder](https://github.com/yeongseon/kpubdata-builder) | 수집된 데이터를 다양한 형식으로 가공하는 빌드 파이프라인 | Python 3.10+ |
11
- | [kpubdata-studio](https://github.com/yeongseon/kpubdata-studio) | 빌드 과정을 시각적으로 관리하는 웹 대시보드 | Next.js 15 + TypeScript |
11
+ | [kpubdata-studio](https://github.com/yeongseon/kpubdata-studio) | 빌드 과정을 시각적으로 관리하는 웹 대시보드 | Vite + React Router + TypeScript (SPA) |
12
12
 
13
13
  ---
14
14
 
@@ -52,7 +52,7 @@ graph TD
52
52
  U3([파이썬 개발자]) -->|Python SDK| Core
53
53
 
54
54
  subgraph "KPubData Product Family"
55
- Studio["kpubdata-studio<br/>웹 대시보드<br/>(Next.js 15 + TypeScript)"]
55
+ Studio["kpubdata-studio<br/>웹 대시보드<br/>(Vite + React Router + TypeScript (SPA))"]
56
56
  Builder["kpubdata-builder<br/>데이터 빌드 파이프라인<br/>(Python 3.10+)"]
57
57
  Core["kpubdata<br/>데이터 접속 코어<br/>(Python 3.10+)"]
58
58
  end
@@ -180,9 +180,9 @@ graph LR
180
180
  | 항목 | kpubdata | kpubdata-builder | kpubdata-studio |
181
181
  | :--- | :--- | :--- | :--- |
182
182
  | **언어** | [Python](https://docs.python.org/ko/3/tutorial/) 3.10+ | [Python](https://docs.python.org/ko/3/tutorial/) 3.10+ | [TypeScript](https://www.typescriptlang.org/ko/docs/) 5 |
183
- | **프레임워크** | — (순수 라이브러리) | — (CLI + 라이브러리) | [Next.js](https://nextjs.org/docs) 15 |
183
+ | **프레임워크** | — (순수 라이브러리) | — (CLI + 라이브러리) | [Vite](https://vite.dev/) + [React Router](https://reactrouter.com/) |
184
184
  | **UI** | 없음 (코드로만 사용) | CLI(명령줄 인터페이스) | 웹 브라우저 ([React](https://ko.react.dev/) + [Tailwind CSS](https://tailwindcss.com/docs)) |
185
- | **빌드 도구** | [hatchling](https://hatch.pypa.io/) | [hatchling](https://hatch.pypa.io/) | Next.js 내장 빌드 |
185
+ | **빌드 도구** | [hatchling](https://hatch.pypa.io/) | [hatchling](https://hatch.pypa.io/) | Vite 내장 빌드 |
186
186
  | **패키지 관리** | [uv](https://github.com/astral-sh/uv) | [uv](https://github.com/astral-sh/uv) | [npm](https://docs.npmjs.com/about-npm) |
187
187
  | **타입 검사** | [mypy](https://mypy.readthedocs.io/) | [mypy](https://mypy.readthedocs.io/) | TypeScript 내장 (`tsc`) |
188
188
  | **린터** | [ruff](https://docs.astral.sh/ruff/) | [ruff](https://docs.astral.sh/ruff/) | [ESLint](https://eslint.org/) |
@@ -198,7 +198,7 @@ graph LR
198
198
  graph TD
199
199
  subgraph "사용자 환경 (브라우저)"
200
200
  direction TB
201
- StudioUI["kpubdata-studio<br/>Next.js 웹 앱<br/>(사용자가 직접 보는 화면)"]
201
+ StudioUI["kpubdata-studio<br/>Vite SPA<br/>(사용자가 직접 보는 화면)"]
202
202
  end
203
203
 
204
204
  subgraph "서버 환경 (Python Runtime)"
@@ -223,7 +223,7 @@ graph TD
223
223
 
224
224
  | 환경 | 프로젝트 | 실행 방식 |
225
225
  | :--- | :--- | :--- |
226
- | **사용자 브라우저** | kpubdata-studio | `npm run dev` → [http://localhost:3000](http://localhost:3000) 접속 |
226
+ | **사용자 브라우저** | kpubdata-studio | `npm run dev` → [http://localhost:5173](http://localhost:5173) 접속 |
227
227
  | **Python 서버/로컬** | kpubdata, kpubdata-builder | `pip install` 후 Python 코드에서 import 또는 CLI 실행 |
228
228
  | **외부** | 공공 데이터 API | 정부/기관에서 운영하는 서버 (우리가 제어할 수 없음) |
229
229
 
@@ -318,7 +318,7 @@ Studio (브라우저) Builder (서버)
318
318
  | :--- | :--- | :--- | :--- |
319
319
  | **v0.1** | 동기 코어, 주요 5개 API 어댑터, XML/JSON 지원 | BuildSpec 모델, Markdown 내보내기, Manifest 생성 | 정보 구조 설계, Draft 상태 관리, Builder API 연동 |
320
320
  | **v0.2** | 메타데이터 보강, Pandas 어댑터, 신규 기관 확대 | JSONL/Parquet 내보내기, HuggingFace 레이아웃 | 실시간 미리보기, 데이터 검증 뷰, 결과물 뷰어 |
321
- | **v0.3** | 경량 MCP 어댑터 지원 | Publish 훅, 빌드 이력 관리, CI/CD 연동 | Publish 워크플로우, 전체 대시보드 |
321
+ | **v0.3** | Provider 확장 (datago 부동산, 관광, 지하철) | Publish 훅, 빌드 이력 관리, CI/CD 연동 | Publish 워크플로우, 전체 대시보드 |
322
322
 
323
323
  ---
324
324
 
@@ -331,7 +331,7 @@ A: 네. kpubdata는 독립적인 파이썬 라이브러리입니다. `pip instal
331
331
  A: 아니요. Studio는 Builder의 API를 호출하여 동작하므로, Builder가 반드시 실행되고 있어야 합니다. Studio는 "화면"이고, Builder가 실제 "엔진"입니다.
332
332
 
333
333
  **Q: 세 프로젝트를 한 컴퓨터에서 동시에 실행해야 하나요?**
334
- A: 개발 환경에서는 한 컴퓨터에서 모두 실행할 수 있습니다. 운영 환경에서는 Builder(Python 서버)와 Studio(Next.js 웹 서버)를 별도 서버에 배포하는 것이 일반적입니다.
334
+ A: 개발 환경에서는 한 컴퓨터에서 모두 실행할 수 있습니다. 운영 환경에서는 Builder(Python 서버)와 Studio(Vite 웹 서버)를 별도 서버에 배포하는 것이 일반적입니다.
335
335
 
336
336
  **Q: 새로운 공공 API를 추가하려면 어디를 수정하나요?**
337
337
  A: kpubdata의 `providers/` 디렉토리에 새 어댑터를 추가합니다. Builder와 Studio는 수정할 필요 없이 자동으로 새 데이터셋을 사용할 수 있게 됩니다. 이것이 의존성이 한 방향인 것의 장점입니다.
@@ -366,4 +366,5 @@ A: kpubdata의 `providers/` 디렉토리에 새 어댑터를 추가합니다. Bu
366
366
  | YAML | 들여쓰기로 구조를 표현하는 설정 파일 형식 | [위키백과](https://ko.wikipedia.org/wiki/YAML) |
367
367
  | Python | 읽기 쉬운 범용 프로그래밍 언어 | [공식 튜토리얼 (한국어)](https://docs.python.org/ko/3/tutorial/) |
368
368
  | TypeScript | 자바스크립트에 타입을 추가한 언어 | [공식 문서 (한국어)](https://www.typescriptlang.org/ko/docs/) |
369
- | Next.js | React 기반 웹 애플리케이션 프레임워크 | [공식 문서](https://nextjs.org/docs) |
369
+ | Vite | 빠른 프론트엔드 개발 서버 및 번들러 | [공식 문서](https://vite.dev/) |
370
+ | React Router | SPA 라우팅 라이브러리 | [공식 문서](https://reactrouter.com/) |
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "kpubdata"
7
- version = "0.3.1"
7
+ version = "0.4.0"
8
8
  description = "Dialect-inspired Python access framework for Korean public data"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -26,6 +26,7 @@ _BUILTIN_PROVIDERS: tuple[tuple[str, str, str], ...] = (
26
26
  ("kosis", "kpubdata.providers.kosis", "KosisAdapter"),
27
27
  ("lofin", "kpubdata.providers.lofin", "LofinAdapter"),
28
28
  ("localdata", "kpubdata.providers.localdata.adapter", "LocaldataAdapter"),
29
+ ("semas", "kpubdata.providers.semas.adapter", "SemasAdapter"),
29
30
  )
30
31
 
31
32
 
@@ -4,6 +4,9 @@ Key lookup order for provider keys:
4
4
  1. Explicit `provider_keys` dict passed to constructor
5
5
  2. Environment variable: KPUBDATA_{PROVIDER}_API_KEY (uppercased)
6
6
  3. Environment variable: {PROVIDER}_API_KEY (uppercased, fallback)
7
+
8
+ data.go.kr providers (localdata, lofin, semas) all use the "datago" key.
9
+ Set KPUBDATA_DATAGO_API_KEY once for all data.go.kr-based providers.
7
10
  """
8
11
 
9
12
  from __future__ import annotations
@@ -160,7 +160,7 @@ class LocaldataAdapter:
160
160
  return payload
161
161
 
162
162
  def _require_api_key(self) -> str:
163
- return self._config.require_provider_key("localdata")
163
+ return self._config.require_provider_key("datago")
164
164
 
165
165
  def _build_request_url(self, dataset: DatasetRef, operation: str | None = None) -> str:
166
166
  base_url_raw = dataset.raw_metadata.get("base_url")
@@ -164,7 +164,7 @@ class LofinAdapter:
164
164
  return payload
165
165
 
166
166
  def _require_api_key(self) -> str:
167
- return self._config.require_provider_key("lofin")
167
+ return self._config.require_provider_key("datago")
168
168
 
169
169
  def _build_request_url(
170
170
  self,
@@ -0,0 +1,3 @@
1
+ from __future__ import annotations
2
+
3
+ __all__: list[str] = []