kpubdata 0.2.2__tar.gz → 0.3.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.
- {kpubdata-0.2.2 → kpubdata-0.3.0}/.gitignore +5 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/API_SPEC.md +33 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/CHANGELOG.md +12 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/PKG-INFO +86 -4
- {kpubdata-0.2.2 → kpubdata-0.3.0}/README.md +85 -3
- kpubdata-0.3.0/SUPPORTED_DATA.md +278 -0
- kpubdata-0.3.0/docs/caching.md +97 -0
- kpubdata-0.3.0/docs/cli.md +181 -0
- kpubdata-0.3.0/docs/logging.md +136 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/providers/datago.md +315 -2
- kpubdata-0.3.0/docs/providers/seoul.md +133 -0
- kpubdata-0.3.0/plans/sgis-provider-issue-150.md +46 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/pyproject.toml +4 -1
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/__init__.py +1 -1
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/catalog.py +48 -2
- kpubdata-0.3.0/src/kpubdata/cli.py +464 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/client.py +81 -1
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/config.py +3 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/core/capability.py +2 -1
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/core/dataset.py +78 -1
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/bok/adapter.py +62 -8
- kpubdata-0.3.0/src/kpubdata/providers/datago/adapter.py +564 -0
- kpubdata-0.3.0/src/kpubdata/providers/datago/catalogue.json +298 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/kosis/adapter.py +49 -6
- kpubdata-0.3.0/src/kpubdata/providers/localdata/__init__.py +5 -0
- {kpubdata-0.2.2/src/kpubdata/providers/datago → kpubdata-0.3.0/src/kpubdata/providers/localdata}/adapter.py +84 -64
- kpubdata-0.3.0/src/kpubdata/providers/localdata/catalogue.json +17357 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/lofin/adapter.py +58 -6
- kpubdata-0.3.0/src/kpubdata/providers/seoul/__init__.py +3 -0
- kpubdata-0.3.0/src/kpubdata/providers/seoul/adapter.py +318 -0
- kpubdata-0.3.0/src/kpubdata/providers/seoul/catalogue.json +24 -0
- kpubdata-0.3.0/src/kpubdata/providers/sgis/__init__.py +5 -0
- kpubdata-0.3.0/src/kpubdata/providers/sgis/adapter.py +312 -0
- kpubdata-0.3.0/src/kpubdata/providers/sgis/auth.py +154 -0
- kpubdata-0.3.0/src/kpubdata/providers/sgis/catalogue.json +55 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/registry.py +27 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/transport/__init__.py +3 -0
- kpubdata-0.3.0/src/kpubdata/transport/cache.py +211 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/transport/decode.py +36 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/transport/http.py +102 -0
- kpubdata-0.3.0/tests/contract/test_localdata.py +290 -0
- kpubdata-0.3.0/tests/contract/test_seoul.py +91 -0
- kpubdata-0.3.0/tests/contract/test_sgis_contract.py +96 -0
- kpubdata-0.3.0/tests/fixtures/datago/bus_arrival_v2.json +20 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_apt_rent.json +55 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_metro_fare.json +31 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_metro_path.json +38 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_offi_rent.json +57 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_offi_trade.json +57 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_rh_rent.json +57 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_rh_trade.json +61 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_sh_rent.json +51 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_sh_trade.json +55 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_tour_kor_area.json +39 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_tour_kor_festival.json +37 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_tour_kor_keyword.json +33 -0
- kpubdata-0.3.0/tests/fixtures/datago/success_tour_kor_location.json +35 -0
- kpubdata-0.3.0/tests/fixtures/localdata/affiliated_medical_institution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/air_pollution_prevention_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/amusement_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_breeding_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_care_service_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_crematorium_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_exhibition_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_funeral_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_hospital_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_import_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_training_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/animal_transport_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/bakery_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/barber_shop_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/beauty_salon_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/billiard_hall_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/boxing_gym_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/breeding_stock_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/building_sanitation_management_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/caregiver_training_institution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/city_gas_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/civil_defense_water_supply_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/clinic_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/companion_animal_related_business_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/composite_game_provider_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/comprehensive_amusement_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/comprehensive_resort_business_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/comprehensive_sports_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/comprehensive_travel_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/container_packaging_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/contract_foodservice_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/culture_industry_company_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/dance_academy_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/dance_hall_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/dental_lab_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/disinfection_business_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/distribution_specialized_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/domestic_international_travel_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/domestic_travel_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/door_to_door_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/ecommerce_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/edible_ice_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/electrical_construction_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/electrical_safety_management_agency_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/electricity_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/electronic_distribution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/elevator_maintenance_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/elevator_manufacturing_import_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/emergency_patient_transport_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/empty_response.json +12 -0
- kpubdata-0.3.0/tests/fixtures/localdata/energy_saving_company_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/entertainment_bar_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/environmental_consulting_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/environmental_impact_assessment_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/environmental_measurement_agency_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/error_auth.json +8 -0
- kpubdata-0.3.0/tests/fixtures/localdata/feed_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/fitness_center_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/food_additive_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/food_cold_storage_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/food_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/food_repackaging_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/food_transportation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/food_vending_machine_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/foreign_tourist_city_homestay_lodging_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/foreign_tourist_city_homestay_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/foreigner_exclusive_entertainment_restaurant_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/free_job_placement_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/funeral_director_training_institution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/funeral_service_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/game_distribution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/game_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/game_provider_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/gas_appliance_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/general_amusement_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/general_lodging_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/general_restaurant_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/golf_course_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/golf_practice_range_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/groundwater_construction_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/groundwater_impact_assessment_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/groundwater_purification_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/group_cafeteria_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/hanok_experience_lodging_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/hanok_experience_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/hatchery_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/health_functional_food_distributor_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/health_functional_food_retail_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/health_functional_food_specialty_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/high_pressure_gas_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/horse_riding_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/hospital_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/ice_rink_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/imported_food_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/imported_livestock_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/instant_food_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/international_conference_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/international_conference_planning_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/international_freight_forwarding_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/internet_computer_game_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/karaoke_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/large_store_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/laundry_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/livestock_artificial_insemination_center_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/livestock_farming_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/livestock_processing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/livestock_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/livestock_storage_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/livestock_transportation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/log_production_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/logistics_warehouse_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/lpg_charging_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/lpg_collective_supply_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/lpg_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/mail_order_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/marine_environment_management_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/martial_arts_gym_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/medical_device_repair_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/medical_device_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/medical_foundation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/medical_linen_processing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/medical_waste_treatment_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/meter_repair_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/milk_collection_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/motor_racing_course_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/movie_distribution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/movie_import_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/movie_production_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/movie_screening_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/movie_theater_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/multilevel_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/music_video_distribution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/music_video_production_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/night_soil_collection_transportation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/noise_vibration_prevention_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/onggi_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/online_music_service_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/optical_shop_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/other_food_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/outdoor_advertising_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/paid_job_placement_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/performance_hall_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/pet_grooming_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/petroleum_import_export_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/petroleum_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/pharmacy_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/popular_culture_arts_planning_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/postpartum_care_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/prepaid_installment_trade_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/printing_house_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/public_bath_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/publisher_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/quasi_medical_business_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/record_distribution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/record_production_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/residential_accommodation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/rest_cafe_success.json +63 -0
- kpubdata-0.3.0/tests/fixtures/localdata/rural_guesthouse_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/safe_over_the_counter_drug_store_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/sanitary_product_manufacturing_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/sanitation_treatment_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/sawmill_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/singing_bar_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/ski_resort_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/slaughterhouse_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/small_hotel_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/soil_remediation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/specialized_resort_business_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/swimming_pool_success.json +15 -0
- kpubdata-0.3.0/tests/fixtures/localdata/timber_import_distribution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tobacco_import_sales_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tobacco_retail_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tobacco_wholesale_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourism_business_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourism_convenience_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourism_duty_free_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_accommodation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_entertainment_restaurant_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_excursion_boat_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_pension_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_performance_hall_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_restaurant_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_theater_entertainment_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/tourist_track_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/video_distribution_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/video_production_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/video_small_theater_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/video_viewing_room_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/video_viewing_service_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/waste_collection_transportation_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/waste_recycling_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/waste_treatment_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/water_pollution_prevention_facility_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/water_tank_cleaning_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/yacht_marina_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/localdata/youth_game_provider_success.json +1 -0
- kpubdata-0.3.0/tests/fixtures/seoul/bike_rent_month_success.json +38 -0
- kpubdata-0.3.0/tests/fixtures/seoul/empty_response.json +10 -0
- kpubdata-0.3.0/tests/fixtures/seoul/error_auth.json +10 -0
- kpubdata-0.3.0/tests/fixtures/seoul/subway_realtime_arrival_success.json +55 -0
- kpubdata-0.3.0/tests/fixtures/sgis/auth_success.json +10 -0
- kpubdata-0.3.0/tests/fixtures/sgis/error_invalid_token.json +6 -0
- kpubdata-0.3.0/tests/fixtures/sgis/sido_boundary.geojson +35 -0
- kpubdata-0.3.0/tests/fixtures/sgis/sigungu_boundary.geojson +35 -0
- kpubdata-0.3.0/tests/integration/README.md +22 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/conftest.py +29 -0
- kpubdata-0.3.0/tests/integration/test_datago_live.py +300 -0
- kpubdata-0.3.0/tests/integration/test_localdata_live.py +85 -0
- kpubdata-0.3.0/tests/integration/test_seoul_live.py +45 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/providers/bok/test_bok_adapter.py +39 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/providers/datago/test_adapter.py +116 -8
- kpubdata-0.3.0/tests/unit/providers/datago/test_fixtures.py +336 -0
- kpubdata-0.3.0/tests/unit/providers/datago/test_generic.py +233 -0
- kpubdata-0.3.0/tests/unit/providers/kosis/test_adapter.py +73 -0
- kpubdata-0.3.0/tests/unit/providers/localdata/test_adapter.py +794 -0
- kpubdata-0.3.0/tests/unit/providers/lofin/test_lofin_adapter.py +169 -0
- kpubdata-0.3.0/tests/unit/providers/seoul/__init__.py +0 -0
- kpubdata-0.3.0/tests/unit/providers/seoul/test_adapter.py +193 -0
- kpubdata-0.3.0/tests/unit/providers/sgis/__init__.py +1 -0
- kpubdata-0.3.0/tests/unit/providers/sgis/test_adapter.py +222 -0
- kpubdata-0.3.0/tests/unit/providers/sgis/test_auth.py +143 -0
- kpubdata-0.3.0/tests/unit/test_cli.py +445 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_client_transport_requirements.py +24 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_config.py +6 -2
- kpubdata-0.3.0/tests/unit/test_failure_path_logging.py +105 -0
- kpubdata-0.3.0/tests/unit/test_logging.py +272 -0
- kpubdata-0.3.0/tests/unit/transport/__init__.py +0 -0
- kpubdata-0.3.0/tests/unit/transport/test_cache.py +186 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_logging.py +23 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/uv.lock +1 -1
- kpubdata-0.2.2/.sisyphus/remove-get-record-plan.md +0 -18
- kpubdata-0.2.2/SUPPORTED_DATA.md +0 -56
- kpubdata-0.2.2/src/kpubdata/providers/datago/catalogue.json +0 -92
- kpubdata-0.2.2/tests/integration/test_datago_live.py +0 -74
- kpubdata-0.2.2/tests/unit/providers/datago/test_fixtures.py +0 -140
- kpubdata-0.2.2/tests/unit/providers/lofin/test_lofin_adapter.py +0 -85
- {kpubdata-0.2.2 → kpubdata-0.3.0}/.github/ISSUE_TEMPLATE/new-provider-adapter.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/.github/workflows/ci.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/.github/workflows/integration.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/.github/workflows/publish-pypi.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/AGENTS.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/ARCHITECTURE.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/CANONICAL_MODEL.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/CONTRIBUTING.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/LICENSE +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/PACKAGING.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/PRD.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/PROVIDER_ADAPTER_CONTRACT.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/ROADMAP.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/VALIDATION.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/adrs/0001-dialect-inspired-architecture.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/adrs/0002-standardize-ux-not-native-shape.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/architecture-diagrams.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/datago-api-reference.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/product-family-architecture.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/providers/bok.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/providers/kosis.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/quickstart.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/docs/tutorial-ai-agent-workflow.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/core/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/core/models.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/core/protocol.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/core/representation.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/exceptions.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/_common.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/bok/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/bok/catalogue.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/datago/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/kosis/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/kosis/catalogue.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/lofin/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/providers/lofin/catalogue.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/py.typed +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/src/kpubdata/transport/retry.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/contract/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/contract/provider_adapter.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/contract/test_bok.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/contract/test_datago.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/contract/test_kosis.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/contract/test_lofin.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/bok/error_auth.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/bok/success_empty.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/bok/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/error_auth_30.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/error_invalid_request_10.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/error_rate_limit_22.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/error_service_unavailable_01.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/error_xml_auth_30.xml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_apt_trade.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_empty.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_multi_page_1.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_multi_page_2.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_single_item.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_string_numerics.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_xml.xml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/datago/success_xml_single_item.xml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/kosis/error_auth.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/kosis/success_empty.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/kosis/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/lofin/error_auth.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/lofin/success_fiacrv.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/fixtures/lofin/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/test_bok_live.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/test_client_flow.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/test_exception_propagation.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/test_kosis_live.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/test_lofin_live.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/integration/test_transport_http.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/test_dataset.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/test_dataset_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/test_exceptions.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/test_exceptions_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/test_models.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/test_models_fixtures.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/core/test_to_pandas.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/providers/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/providers/datago/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/providers/datago/conftest.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/providers/datago/test_adapter_coverage.py +0 -0
- {kpubdata-0.2.2/tests/unit/transport → kpubdata-0.3.0/tests/unit/providers/localdata}/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_catalog.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_catalog_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_catalogue_validation.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_client_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_config_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_registry.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/test_registry_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_decode.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_decode_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_http_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_http_coverage_extra.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_retry.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_retry_after.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_retry_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.3.0}/tests/unit/transport/test_transport_requirements.py +0 -0
|
@@ -17,15 +17,33 @@ client = Client(
|
|
|
17
17
|
"seoul": "...",
|
|
18
18
|
},
|
|
19
19
|
timeout=10.0,
|
|
20
|
+
cache=True,
|
|
21
|
+
cache_ttl_seconds=3600,
|
|
20
22
|
)
|
|
21
23
|
```
|
|
22
24
|
|
|
25
|
+
`Client(...)` supports these transport/cache options:
|
|
26
|
+
|
|
27
|
+
- `timeout: float = 30.0`
|
|
28
|
+
- `max_retries: int = 3`
|
|
29
|
+
- `cache: bool | ResponseCache = False`
|
|
30
|
+
- `False`: disable cache (default)
|
|
31
|
+
- `True`: use default disk cache directory
|
|
32
|
+
- `ResponseCache(...)`: use a caller-supplied cache instance
|
|
33
|
+
- `cache_ttl_seconds: int = 86400`
|
|
34
|
+
|
|
23
35
|
### Environment construction
|
|
24
36
|
|
|
25
37
|
```python
|
|
26
38
|
client = Client.from_env()
|
|
27
39
|
```
|
|
28
40
|
|
|
41
|
+
`Client.from_env()` additionally honors:
|
|
42
|
+
|
|
43
|
+
- `KPUBDATA_CACHE=1`
|
|
44
|
+
- `KPUBDATA_CACHE_DIR=/custom/cache/path`
|
|
45
|
+
- `KPUBDATA_CACHE_TTL=3600`
|
|
46
|
+
|
|
29
47
|
## 3. Discovery API
|
|
30
48
|
|
|
31
49
|
```python
|
|
@@ -58,6 +76,10 @@ for batch in dataset.list_all(lawd_code="11680", deal_ym="202503"):
|
|
|
58
76
|
`list_all()` yields one `RecordBatch` per page and follows `next_page`
|
|
59
77
|
automatically until pagination is exhausted.
|
|
60
78
|
|
|
79
|
+
Dataset metadata may expose provider-specific pagination styles through
|
|
80
|
+
`DatasetRef.query_support.pagination`, including `offset`, `cursor`, and
|
|
81
|
+
index-window based `index` pagination.
|
|
82
|
+
|
|
61
83
|
### Schema
|
|
62
84
|
|
|
63
85
|
```python
|
|
@@ -149,6 +171,17 @@ Discouraged as the main public entry point:
|
|
|
149
171
|
client.call_provider_endpoint("seoul", "SearchSTNTimeTableByIDService", ...)
|
|
150
172
|
```
|
|
151
173
|
|
|
174
|
+
## 10. CLI
|
|
175
|
+
|
|
176
|
+
설치 후에는 콘솔 스크립트 `kpubdata`를 사용할 수 있습니다.
|
|
177
|
+
|
|
178
|
+
- 데이터셋 목록: `kpubdata datasets list`
|
|
179
|
+
- 메타데이터 확인: `kpubdata datasets show <dataset_id>`
|
|
180
|
+
- 정규화 조회: `kpubdata fetch <dataset_id> ...`
|
|
181
|
+
- Raw 호출: `kpubdata raw <dataset_id> <operation> ...`
|
|
182
|
+
|
|
183
|
+
상세 사용법, 출력 형식, 종료 코드, 환경 변수 연동은 [docs/cli.md](./docs/cli.md)를 참고하세요.
|
|
184
|
+
|
|
152
185
|
---
|
|
153
186
|
|
|
154
187
|
## 관련 문서
|
|
@@ -7,6 +7,18 @@ 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
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- `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)
|
|
14
|
+
- `sgis` provider adapter for administrative boundary GeoJSON datasets:
|
|
15
|
+
- `sgis.boundary.sido`
|
|
16
|
+
- `sgis.boundary.sigungu`
|
|
17
|
+
- `sgis.boundary.emd`
|
|
18
|
+
- SGIS access-token authentication flow (`consumer_key` + `consumer_secret`) with in-memory token cache and refresh-on-auth-failure behavior
|
|
19
|
+
- Unit and contract tests plus SGIS fixture responses for boundary and auth/error scenarios
|
|
20
|
+
- Full fixture, unit test, and contract test coverage for all 195 localdata datasets
|
|
21
|
+
|
|
10
22
|
## [0.2.0] - 2025-04-17
|
|
11
23
|
|
|
12
24
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kpubdata
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Dialect-inspired Python access framework for Korean public data
|
|
5
5
|
Author: Yeongseon Choe
|
|
6
6
|
License: MIT
|
|
@@ -161,6 +161,26 @@ KPubData가 지원하는 각 기관의 API 키를 발급받아 [환경 변수](h
|
|
|
161
161
|
- **SSL 참고**: 서버의 TLS 설정 특성상, KPubData가 내부적으로 SSL 설정을 자동 조정합니다.
|
|
162
162
|
- **환경 변수**: `KPUBDATA_LOFIN_API_KEY`
|
|
163
163
|
|
|
164
|
+
#### 지방행정인허가 (data.go.kr) — `localdata`
|
|
165
|
+
- **가입 URL**: [https://www.data.go.kr](https://www.data.go.kr)
|
|
166
|
+
- **절차**: 회원가입 → 지방행정인허가 Open API(일반음식점/휴게음식점) 활용신청 → 승인 후 인증키 확인
|
|
167
|
+
- **환경 변수**: `KPUBDATA_LOCALDATA_API_KEY`
|
|
168
|
+
|
|
169
|
+
#### 서울 열린데이터광장 (data.seoul.go.kr) — `seoul`
|
|
170
|
+
- **가입 URL**: [https://data.seoul.go.kr/](https://data.seoul.go.kr/)
|
|
171
|
+
- **절차**: 회원가입 → 원하는 Open API 페이지에서 인증키 신청/확인 → 마이페이지에서 발급 키 확인
|
|
172
|
+
- **참고**: 서울 Open API는 인증키를 쿼리스트링이 아니라 URL 경로 세그먼트로 전달합니다.
|
|
173
|
+
- **환경 변수**: `KPUBDATA_SEOUL_API_KEY`
|
|
174
|
+
|
|
175
|
+
#### 통계청 통계지리정보서비스 (sgis.kostat.go.kr) — `sgis`
|
|
176
|
+
- **가입 URL**: [https://sgis.kostat.go.kr/developer/html/main.html](https://sgis.kostat.go.kr/developer/html/main.html)
|
|
177
|
+
- **절차**: 회원가입 → 개발지원센터에서 서비스 ID/Secret 발급 → 인증 API로 accessToken 교환
|
|
178
|
+
- **인증 방식**: `consumer_key` + `consumer_secret` 2단계
|
|
179
|
+
- **환경 변수**:
|
|
180
|
+
- `KPUBDATA_SGIS_API_KEY` (`consumer_key`)
|
|
181
|
+
- `KPUBDATA_SGIS_CONSUMER_SECRET` (`consumer_secret`)
|
|
182
|
+
- **대안 입력**: 코드에서 `provider_keys["sgis"]`에 `"consumer_key:consumer_secret"` 형태를 직접 전달 가능
|
|
183
|
+
|
|
164
184
|
#### 환경 변수 설정 예시
|
|
165
185
|
```bash
|
|
166
186
|
# 공공데이터포털 (data.go.kr)
|
|
@@ -174,6 +194,16 @@ export KPUBDATA_KOSIS_API_KEY="your-kosis-api-key"
|
|
|
174
194
|
|
|
175
195
|
# 지방재정365
|
|
176
196
|
export KPUBDATA_LOFIN_API_KEY="your-lofin-api-key"
|
|
197
|
+
|
|
198
|
+
# 지방행정인허가
|
|
199
|
+
export KPUBDATA_LOCALDATA_API_KEY="your-localdata-service-key"
|
|
200
|
+
|
|
201
|
+
# 서울 열린데이터광장
|
|
202
|
+
export KPUBDATA_SEOUL_API_KEY="your-seoul-api-key"
|
|
203
|
+
|
|
204
|
+
# 통계청 SGIS
|
|
205
|
+
export KPUBDATA_SGIS_API_KEY="your-sgis-consumer-key"
|
|
206
|
+
export KPUBDATA_SGIS_CONSUMER_SECRET="your-sgis-consumer-secret"
|
|
177
207
|
```
|
|
178
208
|
|
|
179
209
|
### 2. 클라이언트 생성
|
|
@@ -190,6 +220,9 @@ client = Client(provider_keys={
|
|
|
190
220
|
"bok": "YOUR_BOK_API_KEY",
|
|
191
221
|
"kosis": "YOUR_KOSIS_API_KEY",
|
|
192
222
|
"lofin": "YOUR_LOFIN_API_KEY",
|
|
223
|
+
"localdata": "YOUR_DATA_GO_KR_API_KEY",
|
|
224
|
+
"seoul": "YOUR_SEOUL_API_KEY",
|
|
225
|
+
"sgis": "YOUR_SGIS_CONSUMER_KEY:YOUR_SGIS_CONSUMER_SECRET",
|
|
193
226
|
})
|
|
194
227
|
```
|
|
195
228
|
|
|
@@ -205,6 +238,14 @@ for ds in client.datasets.search("예보"):
|
|
|
205
238
|
print(ds.id, ds.name, ds.operations)
|
|
206
239
|
```
|
|
207
240
|
|
|
241
|
+
### CLI로 즉시 사용하기
|
|
242
|
+
|
|
243
|
+
설치가 끝나면 `kpubdata` 명령이 함께 등록됩니다. 간단한 탐색이나 파라미터 실험은 스크립트 없이 바로 실행할 수 있습니다.
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
kpubdata fetch bok.base_rate -p start_date=202401 -p end_date=202403 --format table
|
|
247
|
+
```
|
|
248
|
+
|
|
208
249
|
### 4. 레코드 조회
|
|
209
250
|
|
|
210
251
|
```python
|
|
@@ -297,7 +338,18 @@ for item in result.items[:5]:
|
|
|
297
338
|
# ...
|
|
298
339
|
```
|
|
299
340
|
|
|
300
|
-
### 9.
|
|
341
|
+
### 9. 지방행정인허가 조회 (Localdata)
|
|
342
|
+
|
|
343
|
+
```python
|
|
344
|
+
# 지방행정인허가 (Localdata) - 일반음식점
|
|
345
|
+
client = Client(provider_keys={"localdata": "YOUR_DATA_GO_KR_API_KEY"})
|
|
346
|
+
ds = client.dataset("localdata.general_restaurant")
|
|
347
|
+
result = ds.list(page_size=10)
|
|
348
|
+
for item in result.items:
|
|
349
|
+
print(item["BPLC_NM"], item["ROAD_NM_ADDR"])
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### 10. 전체 페이지 자동 조회 (list_all)
|
|
301
353
|
|
|
302
354
|
대량의 데이터를 페이지 단위로 자동 순회하려면 `list_all()`을 사용합니다.
|
|
303
355
|
|
|
@@ -311,7 +363,7 @@ for batch in ds.list_all(fyr="2024"):
|
|
|
311
363
|
print(item)
|
|
312
364
|
```
|
|
313
365
|
|
|
314
|
-
###
|
|
366
|
+
### 11. pandas DataFrame 변환
|
|
315
367
|
|
|
316
368
|
조회 결과를 pandas DataFrame으로 변환하여 분석할 수 있습니다.
|
|
317
369
|
|
|
@@ -340,6 +392,24 @@ print(df.head())
|
|
|
340
392
|
| 공공데이터포털 (`datago`) | 버스도착정보 (`bus_arrival`) | 지원 |
|
|
341
393
|
| 공공데이터포털 (`datago`) | 병원정보 (`hospital_info`) | 지원 |
|
|
342
394
|
| 공공데이터포털 (`datago`) | 아파트매매 실거래가 (`apt_trade`) | 지원 |
|
|
395
|
+
| 공공데이터포털 (`datago`) | 아파트 전월세 실거래가 (`apt_rent`) | 지원 |
|
|
396
|
+
| 공공데이터포털 (`datago`) | 오피스텔 매매 실거래가 (`offi_trade`) | 지원 |
|
|
397
|
+
| 공공데이터포털 (`datago`) | 오피스텔 전월세 실거래가 (`offi_rent`) | 지원 |
|
|
398
|
+
| 공공데이터포털 (`datago`) | 연립다세대 매매 실거래가 (`rh_trade`) | 지원 |
|
|
399
|
+
| 공공데이터포털 (`datago`) | 연립다세대 전월세 실거래가 (`rh_rent`) | 지원 |
|
|
400
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 매매 실거래가 (`sh_trade`) | 지원 |
|
|
401
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 전월세 실거래가 (`sh_rent`) | 지원 |
|
|
402
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 지역기반 관광정보 (`tour_kor_area`) | 지원 |
|
|
403
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 위치기반 관광정보 (`tour_kor_location`) | 지원 |
|
|
404
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 키워드 검색 (`tour_kor_keyword`) | 지원 |
|
|
405
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 행사정보 (`tour_kor_festival`) | 지원 |
|
|
406
|
+
| 공공데이터포털 (`datago`) | 서울교통공사 실시간 운임정보 (`metro_fare`) | 지원 |
|
|
407
|
+
| 공공데이터포털 (`datago`) | 서울교통공사 최단경로 이동정보 (`metro_path`) | 지원 |
|
|
408
|
+
| 서울 열린데이터광장 (`seoul`) | 지하철 실시간 도착정보 (`subway_realtime_arrival`) | 지원 |
|
|
409
|
+
| 서울 열린데이터광장 (`seoul`) | 따릉이 월별 이용정보 (`bike_rent_month`) | 지원 |
|
|
410
|
+
| 통계청 통계지리정보서비스 (`sgis`) | 시도 행정구역 경계 (`boundary.sido`) | 지원 |
|
|
411
|
+
| 통계청 통계지리정보서비스 (`sgis`) | 시군구 행정구역 경계 (`boundary.sigungu`) | 지원 |
|
|
412
|
+
| 통계청 통계지리정보서비스 (`sgis`) | 읍면동 행정구역 경계 (`boundary.emd`) | 지원 |
|
|
343
413
|
| 한국은행 ECOS (`bok`) | 기준금리 (`base_rate`) | 지원 |
|
|
344
414
|
| 통계청 KOSIS (`kosis`) | 인구이동 (`population_migration`) | 지원 |
|
|
345
415
|
| 지방재정365 (`lofin`) | 세출결산총괄 (`expenditure_budget`) | 지원 |
|
|
@@ -351,6 +421,16 @@ print(df.head())
|
|
|
351
421
|
|
|
352
422
|
> 검증 수준 및 실API 최종 검증일 등 상세 정보는 [SUPPORTED_DATA.md](./SUPPORTED_DATA.md)를 참고하세요.
|
|
353
423
|
|
|
424
|
+
### 비상구 (Escape Hatches)
|
|
425
|
+
|
|
426
|
+
정규화된 데이터셋이 아닌, 미등록 endpoint를 즉시 호출할 수 있게 해주는 raw 비상구입니다. 정규화·페이지네이션·스키마 보장이 없으며 호출자가 원본 응답을 직접 처리해야 합니다.
|
|
427
|
+
|
|
428
|
+
| Provider | 비상구 키 | 용도 |
|
|
429
|
+
|---|---|---|
|
|
430
|
+
| 공공데이터포털 (`datago`) | `datago.generic` | 카탈로그에 없는 임의의 data.go.kr API를 `call_raw(operation, _base_url=..., **params)`로 호출 |
|
|
431
|
+
|
|
432
|
+
자세한 사용법은 [docs/providers/datago.md](./docs/providers/datago.md#generic-범용-엔드포인트)와 [SUPPORTED_DATA.md](./SUPPORTED_DATA.md#비상구--고급-기능-escape-hatches)를 참고하세요.
|
|
433
|
+
|
|
354
434
|
## 문서 가이드 (Document Guide)
|
|
355
435
|
|
|
356
436
|
KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니다.
|
|
@@ -376,6 +456,9 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
|
|
|
376
456
|
|
|
377
457
|
### 상세 참고 자료
|
|
378
458
|
- [quickstart.md](./docs/quickstart.md): **처음 사용자를 위한 단계별 빠른 시작 가이드**
|
|
459
|
+
- [cli.md](./docs/cli.md): **CLI 설치 확인, 서브커맨드, 출력 형식, 종료 코드**
|
|
460
|
+
- [caching.md](./docs/caching.md): **디스크 기반 응답 캐시 활성화, TTL, 정리 방법**
|
|
461
|
+
- [logging.md](./docs/logging.md): **로깅 활성화 및 로거 이름 규칙**
|
|
379
462
|
- [product-family-architecture.md](./docs/product-family-architecture.md): **KPubData 제품군 전체 시스템 아키텍처** (3개 저장소 관계도)
|
|
380
463
|
- [architecture-diagrams.md](./docs/architecture-diagrams.md): 아키텍처 시각화 다이어그램
|
|
381
464
|
- [datago-api-reference.md](./docs/datago-api-reference.md): 공공데이터포털(data.go.kr) API 연동 참고 자료
|
|
@@ -412,4 +495,3 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
|
|
|
412
495
|
|
|
413
496
|
### v0.3
|
|
414
497
|
- 표준 코어를 기반으로 한 경량 [MCP](https://modelcontextprotocol.io/)(Model Context Protocol — AI 모델이 외부 도구를 사용하는 표준 규약) 어댑터 지원
|
|
415
|
-
|
|
@@ -124,6 +124,26 @@ KPubData가 지원하는 각 기관의 API 키를 발급받아 [환경 변수](h
|
|
|
124
124
|
- **SSL 참고**: 서버의 TLS 설정 특성상, KPubData가 내부적으로 SSL 설정을 자동 조정합니다.
|
|
125
125
|
- **환경 변수**: `KPUBDATA_LOFIN_API_KEY`
|
|
126
126
|
|
|
127
|
+
#### 지방행정인허가 (data.go.kr) — `localdata`
|
|
128
|
+
- **가입 URL**: [https://www.data.go.kr](https://www.data.go.kr)
|
|
129
|
+
- **절차**: 회원가입 → 지방행정인허가 Open API(일반음식점/휴게음식점) 활용신청 → 승인 후 인증키 확인
|
|
130
|
+
- **환경 변수**: `KPUBDATA_LOCALDATA_API_KEY`
|
|
131
|
+
|
|
132
|
+
#### 서울 열린데이터광장 (data.seoul.go.kr) — `seoul`
|
|
133
|
+
- **가입 URL**: [https://data.seoul.go.kr/](https://data.seoul.go.kr/)
|
|
134
|
+
- **절차**: 회원가입 → 원하는 Open API 페이지에서 인증키 신청/확인 → 마이페이지에서 발급 키 확인
|
|
135
|
+
- **참고**: 서울 Open API는 인증키를 쿼리스트링이 아니라 URL 경로 세그먼트로 전달합니다.
|
|
136
|
+
- **환경 변수**: `KPUBDATA_SEOUL_API_KEY`
|
|
137
|
+
|
|
138
|
+
#### 통계청 통계지리정보서비스 (sgis.kostat.go.kr) — `sgis`
|
|
139
|
+
- **가입 URL**: [https://sgis.kostat.go.kr/developer/html/main.html](https://sgis.kostat.go.kr/developer/html/main.html)
|
|
140
|
+
- **절차**: 회원가입 → 개발지원센터에서 서비스 ID/Secret 발급 → 인증 API로 accessToken 교환
|
|
141
|
+
- **인증 방식**: `consumer_key` + `consumer_secret` 2단계
|
|
142
|
+
- **환경 변수**:
|
|
143
|
+
- `KPUBDATA_SGIS_API_KEY` (`consumer_key`)
|
|
144
|
+
- `KPUBDATA_SGIS_CONSUMER_SECRET` (`consumer_secret`)
|
|
145
|
+
- **대안 입력**: 코드에서 `provider_keys["sgis"]`에 `"consumer_key:consumer_secret"` 형태를 직접 전달 가능
|
|
146
|
+
|
|
127
147
|
#### 환경 변수 설정 예시
|
|
128
148
|
```bash
|
|
129
149
|
# 공공데이터포털 (data.go.kr)
|
|
@@ -137,6 +157,16 @@ export KPUBDATA_KOSIS_API_KEY="your-kosis-api-key"
|
|
|
137
157
|
|
|
138
158
|
# 지방재정365
|
|
139
159
|
export KPUBDATA_LOFIN_API_KEY="your-lofin-api-key"
|
|
160
|
+
|
|
161
|
+
# 지방행정인허가
|
|
162
|
+
export KPUBDATA_LOCALDATA_API_KEY="your-localdata-service-key"
|
|
163
|
+
|
|
164
|
+
# 서울 열린데이터광장
|
|
165
|
+
export KPUBDATA_SEOUL_API_KEY="your-seoul-api-key"
|
|
166
|
+
|
|
167
|
+
# 통계청 SGIS
|
|
168
|
+
export KPUBDATA_SGIS_API_KEY="your-sgis-consumer-key"
|
|
169
|
+
export KPUBDATA_SGIS_CONSUMER_SECRET="your-sgis-consumer-secret"
|
|
140
170
|
```
|
|
141
171
|
|
|
142
172
|
### 2. 클라이언트 생성
|
|
@@ -153,6 +183,9 @@ client = Client(provider_keys={
|
|
|
153
183
|
"bok": "YOUR_BOK_API_KEY",
|
|
154
184
|
"kosis": "YOUR_KOSIS_API_KEY",
|
|
155
185
|
"lofin": "YOUR_LOFIN_API_KEY",
|
|
186
|
+
"localdata": "YOUR_DATA_GO_KR_API_KEY",
|
|
187
|
+
"seoul": "YOUR_SEOUL_API_KEY",
|
|
188
|
+
"sgis": "YOUR_SGIS_CONSUMER_KEY:YOUR_SGIS_CONSUMER_SECRET",
|
|
156
189
|
})
|
|
157
190
|
```
|
|
158
191
|
|
|
@@ -168,6 +201,14 @@ for ds in client.datasets.search("예보"):
|
|
|
168
201
|
print(ds.id, ds.name, ds.operations)
|
|
169
202
|
```
|
|
170
203
|
|
|
204
|
+
### CLI로 즉시 사용하기
|
|
205
|
+
|
|
206
|
+
설치가 끝나면 `kpubdata` 명령이 함께 등록됩니다. 간단한 탐색이나 파라미터 실험은 스크립트 없이 바로 실행할 수 있습니다.
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
kpubdata fetch bok.base_rate -p start_date=202401 -p end_date=202403 --format table
|
|
210
|
+
```
|
|
211
|
+
|
|
171
212
|
### 4. 레코드 조회
|
|
172
213
|
|
|
173
214
|
```python
|
|
@@ -260,7 +301,18 @@ for item in result.items[:5]:
|
|
|
260
301
|
# ...
|
|
261
302
|
```
|
|
262
303
|
|
|
263
|
-
### 9.
|
|
304
|
+
### 9. 지방행정인허가 조회 (Localdata)
|
|
305
|
+
|
|
306
|
+
```python
|
|
307
|
+
# 지방행정인허가 (Localdata) - 일반음식점
|
|
308
|
+
client = Client(provider_keys={"localdata": "YOUR_DATA_GO_KR_API_KEY"})
|
|
309
|
+
ds = client.dataset("localdata.general_restaurant")
|
|
310
|
+
result = ds.list(page_size=10)
|
|
311
|
+
for item in result.items:
|
|
312
|
+
print(item["BPLC_NM"], item["ROAD_NM_ADDR"])
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### 10. 전체 페이지 자동 조회 (list_all)
|
|
264
316
|
|
|
265
317
|
대량의 데이터를 페이지 단위로 자동 순회하려면 `list_all()`을 사용합니다.
|
|
266
318
|
|
|
@@ -274,7 +326,7 @@ for batch in ds.list_all(fyr="2024"):
|
|
|
274
326
|
print(item)
|
|
275
327
|
```
|
|
276
328
|
|
|
277
|
-
###
|
|
329
|
+
### 11. pandas DataFrame 변환
|
|
278
330
|
|
|
279
331
|
조회 결과를 pandas DataFrame으로 변환하여 분석할 수 있습니다.
|
|
280
332
|
|
|
@@ -303,6 +355,24 @@ print(df.head())
|
|
|
303
355
|
| 공공데이터포털 (`datago`) | 버스도착정보 (`bus_arrival`) | 지원 |
|
|
304
356
|
| 공공데이터포털 (`datago`) | 병원정보 (`hospital_info`) | 지원 |
|
|
305
357
|
| 공공데이터포털 (`datago`) | 아파트매매 실거래가 (`apt_trade`) | 지원 |
|
|
358
|
+
| 공공데이터포털 (`datago`) | 아파트 전월세 실거래가 (`apt_rent`) | 지원 |
|
|
359
|
+
| 공공데이터포털 (`datago`) | 오피스텔 매매 실거래가 (`offi_trade`) | 지원 |
|
|
360
|
+
| 공공데이터포털 (`datago`) | 오피스텔 전월세 실거래가 (`offi_rent`) | 지원 |
|
|
361
|
+
| 공공데이터포털 (`datago`) | 연립다세대 매매 실거래가 (`rh_trade`) | 지원 |
|
|
362
|
+
| 공공데이터포털 (`datago`) | 연립다세대 전월세 실거래가 (`rh_rent`) | 지원 |
|
|
363
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 매매 실거래가 (`sh_trade`) | 지원 |
|
|
364
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 전월세 실거래가 (`sh_rent`) | 지원 |
|
|
365
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 지역기반 관광정보 (`tour_kor_area`) | 지원 |
|
|
366
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 위치기반 관광정보 (`tour_kor_location`) | 지원 |
|
|
367
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 키워드 검색 (`tour_kor_keyword`) | 지원 |
|
|
368
|
+
| 공공데이터포털 (`datago`) | 한국관광공사 행사정보 (`tour_kor_festival`) | 지원 |
|
|
369
|
+
| 공공데이터포털 (`datago`) | 서울교통공사 실시간 운임정보 (`metro_fare`) | 지원 |
|
|
370
|
+
| 공공데이터포털 (`datago`) | 서울교통공사 최단경로 이동정보 (`metro_path`) | 지원 |
|
|
371
|
+
| 서울 열린데이터광장 (`seoul`) | 지하철 실시간 도착정보 (`subway_realtime_arrival`) | 지원 |
|
|
372
|
+
| 서울 열린데이터광장 (`seoul`) | 따릉이 월별 이용정보 (`bike_rent_month`) | 지원 |
|
|
373
|
+
| 통계청 통계지리정보서비스 (`sgis`) | 시도 행정구역 경계 (`boundary.sido`) | 지원 |
|
|
374
|
+
| 통계청 통계지리정보서비스 (`sgis`) | 시군구 행정구역 경계 (`boundary.sigungu`) | 지원 |
|
|
375
|
+
| 통계청 통계지리정보서비스 (`sgis`) | 읍면동 행정구역 경계 (`boundary.emd`) | 지원 |
|
|
306
376
|
| 한국은행 ECOS (`bok`) | 기준금리 (`base_rate`) | 지원 |
|
|
307
377
|
| 통계청 KOSIS (`kosis`) | 인구이동 (`population_migration`) | 지원 |
|
|
308
378
|
| 지방재정365 (`lofin`) | 세출결산총괄 (`expenditure_budget`) | 지원 |
|
|
@@ -314,6 +384,16 @@ print(df.head())
|
|
|
314
384
|
|
|
315
385
|
> 검증 수준 및 실API 최종 검증일 등 상세 정보는 [SUPPORTED_DATA.md](./SUPPORTED_DATA.md)를 참고하세요.
|
|
316
386
|
|
|
387
|
+
### 비상구 (Escape Hatches)
|
|
388
|
+
|
|
389
|
+
정규화된 데이터셋이 아닌, 미등록 endpoint를 즉시 호출할 수 있게 해주는 raw 비상구입니다. 정규화·페이지네이션·스키마 보장이 없으며 호출자가 원본 응답을 직접 처리해야 합니다.
|
|
390
|
+
|
|
391
|
+
| Provider | 비상구 키 | 용도 |
|
|
392
|
+
|---|---|---|
|
|
393
|
+
| 공공데이터포털 (`datago`) | `datago.generic` | 카탈로그에 없는 임의의 data.go.kr API를 `call_raw(operation, _base_url=..., **params)`로 호출 |
|
|
394
|
+
|
|
395
|
+
자세한 사용법은 [docs/providers/datago.md](./docs/providers/datago.md#generic-범용-엔드포인트)와 [SUPPORTED_DATA.md](./SUPPORTED_DATA.md#비상구--고급-기능-escape-hatches)를 참고하세요.
|
|
396
|
+
|
|
317
397
|
## 문서 가이드 (Document Guide)
|
|
318
398
|
|
|
319
399
|
KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니다.
|
|
@@ -339,6 +419,9 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
|
|
|
339
419
|
|
|
340
420
|
### 상세 참고 자료
|
|
341
421
|
- [quickstart.md](./docs/quickstart.md): **처음 사용자를 위한 단계별 빠른 시작 가이드**
|
|
422
|
+
- [cli.md](./docs/cli.md): **CLI 설치 확인, 서브커맨드, 출력 형식, 종료 코드**
|
|
423
|
+
- [caching.md](./docs/caching.md): **디스크 기반 응답 캐시 활성화, TTL, 정리 방법**
|
|
424
|
+
- [logging.md](./docs/logging.md): **로깅 활성화 및 로거 이름 규칙**
|
|
342
425
|
- [product-family-architecture.md](./docs/product-family-architecture.md): **KPubData 제품군 전체 시스템 아키텍처** (3개 저장소 관계도)
|
|
343
426
|
- [architecture-diagrams.md](./docs/architecture-diagrams.md): 아키텍처 시각화 다이어그램
|
|
344
427
|
- [datago-api-reference.md](./docs/datago-api-reference.md): 공공데이터포털(data.go.kr) API 연동 참고 자료
|
|
@@ -375,4 +458,3 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
|
|
|
375
458
|
|
|
376
459
|
### v0.3
|
|
377
460
|
- 표준 코어를 기반으로 한 경량 [MCP](https://modelcontextprotocol.io/)(Model Context Protocol — AI 모델이 외부 도구를 사용하는 표준 규약) 어댑터 지원
|
|
378
|
-
|