{"library":"pyvo","title":"PyVO","description":"PyVO is an Astropy affiliated package that provides a Python interface to access data and services from the Virtual Observatory (VO). It allows users to query astronomical catalogs, image archives, and spectral data through standard VO protocols like TAP, SIA, and SSA. The current version is 1.8.1, and it maintains an active release cadence with regular updates and bug fixes.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pyvo"],"cli":null},"imports":["import pyvo","from pyvo.dal import TAPService","import pyvo.registry"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pyvo\nimport os\n\n# 1. Search the VO registry for services\n# Example: Find services related to galaxies and spectroscopy\nprint(\"Searching the VO registry...\")\nresults = pyvo.registry.search(keywords=['galaxy', 'spectroscopy'])\nprint(f\"Found {len(results)} services matching 'galaxy' and 'spectroscopy'.\")\n\n# 2. Access a TAP service (Table Access Protocol)\n# For a stable quickstart, we'll use a widely known public TAP service.\n# Note: Service availability can change. This is an example.\ntap_service_url = os.environ.get('PYVO_TAP_SERVICE_URL', 'https://tap.voservices.net/tap')\ntap_service = pyvo.dal.TAPService(tap_service_url)\nprint(f\"\\nAttempting to connect to TAP service: {tap_service.url}\")\n\n# 3. Execute an ADQL (Astronomical Data Query Language) query\n# Example: Query the ivoa.ObsCore table for Gaia data\nquery = \"SELECT TOP 5 ra, dec, dataproduct_type FROM ivoa.ObsCore WHERE obs_collection LIKE '%Gaia%'\"\ntry:\n    tap_results = tap_service.search(query)\n    print(f\"\\nTAP query returned {len(tap_results)} results.\")\n    # Results are returned as an Astropy Table object (pyvo.dal.TableSet)\n    print(\"\\nFirst 5 results (Astropy Table):\")\n    print(tap_results.to_table())\nexcept Exception as e:\n    print(f\"\\nError during TAP query: {e}\")\n    print(\"The TAP service might be temporarily unavailable or the query invalid.\")\n","lang":"python","description":"This quickstart demonstrates how to search the Virtual Observatory registry for services and then execute a simple ADQL query against a public TAP (Table Access Protocol) service using PyVO. Results are returned as Astropy Table objects, integrating well with the broader Astropy ecosystem.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.8.1","pypi_latest":"1.8.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":7.2,"avg_import_s":2.82,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.76,"mem_mb":43.9,"disk_size":"158.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.1,"import_time_s":2.02,"mem_mb":43.9,"disk_size":"159M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.34,"mem_mb":46.6,"disk_size":"176.4M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.8,"import_time_s":2.99,"mem_mb":46.6,"disk_size":"177M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.93,"mem_mb":45.6,"disk_size":"163.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.9,"import_time_s":3.17,"mem_mb":45.6,"disk_size":"163M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.84,"mem_mb":47,"disk_size":"162.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.1,"import_time_s":2.94,"mem_mb":47,"disk_size":"162M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.66,"mem_mb":43.6,"disk_size":"162.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyvo","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.1,"import_time_s":2.52,"mem_mb":43.6,"disk_size":"164M"}]}}