{"library":"pyactiveresource","title":"PyActiveResource","description":"PyActiveResource is a Python port of Ruby's ActiveResource project, providing an object-relational mapping (ORM) for RESTful web services. It aims to simplify interaction with REST APIs by mapping remote resources to local Python objects, following a 'convention over configuration' philosophy. The current version is 2.2.2, with its last release in February 2021, suggesting a stable but slow release cadence.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install pyactiveresource"],"cli":null},"imports":["from pyactiveresource import activeresource as ar\n# Then use ar.ActiveResource","from pyactiveresource.connection import ConnectionError"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pyactiveresource import activeresource as ar\n\n# Configure your API base URL (e.g., from environment variables)\nAPI_BASE_URL = os.environ.get('PYACTIVERESOURCE_API_URL', 'http://api.example.com/v1')\n\n# Define a resource class that maps to your REST endpoint\nclass Person(ar.ActiveResource):\n    _site = API_BASE_URL\n    # Optionally set headers for authentication, e.g., Bearer token\n    # _headers = {'Authorization': f'Bearer {os.environ.get(\"API_TOKEN\", \"\")}'}\n\n# Example usage:\ntry:\n    # Find all people\n    all_people = Person.find()\n    print(f\"Found {len(all_people)} people.\")\n    for p in all_people:\n        print(f\"ID: {p.id}, Name: {p.name if hasattr(p, 'name') else 'N/A'}\")\n\n    # Find a specific person by ID\n    if all_people:\n        first_person_id = all_people[0].id\n        person = Person.find(first_person_id)\n        print(f\"\\nFound person: {person.name if hasattr(person, 'name') else 'N/A'} (ID: {person.id})\")\n\n        # Create a new person\n        new_person = Person(name='Alice', age=30)\n        if new_person.save():\n            print(f\"\\nCreated new person: {new_person.name} (ID: {new_person.id})\")\n        else:\n            print(f\"Failed to create person. Errors: {new_person.errors}\")\n\nexcept ar.ResourceNotFound:\n    print(f\"Resource not found at {API_BASE_URL}.\")\nexcept ar.ConnectionError as e:\n    print(f\"Connection error: {e}\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to define a resource class by inheriting from `pyactiveresource.activeresource.ActiveResource` and setting its `_site` attribute to your REST API's base URL. It then shows how to use class methods like `find()` to retrieve resources and instance methods like `save()` to create new ones, encapsulating typical REST interactions. It also includes basic error handling for common `pyactiveresource` exceptions.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"2.2.2","pypi_latest":"2.2.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.5,"avg_import_s":0.17,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.15,"mem_mb":5.9,"disk_size":"19.5M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.11,"mem_mb":5.9,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.22,"mem_mb":6,"disk_size":"21.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.1,"import_time_s":0.2,"mem_mb":6,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.2,"mem_mb":6.1,"disk_size":"11.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.1,"import_time_s":0.19,"mem_mb":6.1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.19,"mem_mb":6.2,"disk_size":"11.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.18,"mem_mb":6,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.15,"mem_mb":6.1,"disk_size":"19.1M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyactiveresource","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":0.15,"mem_mb":6.1,"disk_size":"20M"}]}}