{"id":9460,"library":"amundsen-common","title":"Amundsen Common","description":"Amundsen Common is a Python library providing shared data models, utilities, and abstractions for the various components of the Amundsen data discovery and metadata platform (e.g., Metadata service, Search service, Databuilder, Frontend). It ensures consistency across the ecosystem by defining core entities like Tables, Dashboards, and Users. The current version is 0.32.0, with releases typically synchronized with the broader Amundsen monorepo updates, leading to an irregular release cadence.","status":"active","version":"0.32.0","language":"en","source_language":"en","source_url":"https://github.com/amundsen-io/amundsen/tree/main/common","tags":["amundsen","data discovery","metadata","common","utilities","data catalog"],"install":[{"cmd":"pip install amundsen-common","lang":"bash","label":"Install latest version"}],"dependencies":[],"imports":[{"note":"Used to represent database tables and their metadata.","symbol":"Table","correct":"from amundsen_common.models.table import Table"},{"note":"Represents dashboard metadata from tools like Tableau or Superset.","symbol":"Dashboard","correct":"from amundsen_common.models.dashboard import Dashboard"},{"note":"An Enum defining different types of resources in Amundsen (e.g., Table, Dashboard, User).","symbol":"ResourceType","correct":"from amundsen_common.entity.resource_type import ResourceType"},{"note":"Represents user information within the Amundsen ecosystem.","symbol":"User","correct":"from amundsen_common.models.user import User"}],"quickstart":{"code":"from amundsen_common.models.table import Table\nfrom amundsen_common.entity.resource_type import ResourceType\n\n# Create a Table object\ntable = Table(\n    database='my_database',\n    cluster='my_cluster',\n    schema_name='public',\n    name='users_data',\n    description='Contains user login and profile information.',\n    uri='my_database://my_cluster/public/users_data'\n)\n\nprint(f\"Created Table: {table.name} from {table.database}.{table.schema_name}\")\nprint(f\"Table URI: {table.uri}\")\n\n# Using a ResourceType enum\nprint(f\"Resource Type for Table: {ResourceType.Table.name}\")\nprint(f\"Resource Type for Dashboard (value): {ResourceType.Dashboard.value}\")","lang":"python","description":"This quickstart demonstrates how to import and instantiate core Amundsen Common data models, such as `Table`, and how to use common enumerations like `ResourceType`."},"warnings":[{"fix":"Always check the Amundsen release notes and recommended component versions for your specific Amundsen deployment to ensure compatibility across services.","message":"Amundsen Common is part of a larger monorepo. While its versions are managed separately, significant changes often coincide with updates to other Amundsen services (metadata, search, frontend). Ensure compatibility when mixing versions of Amundsen components.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Review the changelog for `amundsen-common` before upgrading. Update your Amundsen services, Databuilder extractors/loaders, and any custom code to accommodate schema changes. Test thoroughly in a staging environment.","message":"Schema evolution in `amundsen-common` models (e.g., adding, removing, or renaming fields in `Table`, `Dashboard`, `User` objects) can break downstream services (Metadata, Search) or Databuilder jobs that rely on these models for data serialization/deserialization.","severity":"breaking","affected_versions":"All major versions, and sometimes minor versions introducing new fields"},{"fix":"Understand that `amundsen-common` defines the 'what' (data structures), not the 'how' (data persistence or retrieval). For integration with Amundsen services, refer to `amundsen-databuilder`, `amundsen-metadata`, or `amundsen-search` documentation.","message":"`amundsen-common` provides abstract models and utilities. It does not include direct database connectivity or API clients. Users interact with these models through other Amundsen components or by implementing their own data access layers.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-17T00:00:00.000Z","next_check":"2026-07-16T00:00:00.000Z","problems":[{"fix":"Change the import statement to use `amundsen_common`: `from amundsen_common.models.table import Table`.","cause":"Incorrect import path. The package name on PyPI is `amundsen-common`, which translates to the top-level Python package `amundsen_common` (with an underscore).","error":"ModuleNotFoundError: No module named 'amundsen.common.models.table'"},{"fix":"Check the `amundsen-common` changelog for the installed version. Update your code to use the correct field names or upgrade `amundsen-common` and associated Amundsen services if the field was recently added.","cause":"Attempting to access a field that does not exist in the version of `Table` model currently installed, or has been renamed/removed.","error":"AttributeError: 'Table' object has no attribute 'new_field'"},{"fix":"Consult the `amundsen-common` documentation or source code for the correct constructor arguments for your installed version. Adjust your instantiation logic to match the current model schema.","cause":"Passing an unexpected keyword argument during model instantiation, likely due to a field being renamed or removed in a newer `amundsen-common` version.","error":"TypeError: __init__() got an unexpected keyword argument 'old_field'"}]}