{"id":24178,"library":"os-resource-classes","title":"os-resource-classes","description":"Provides resource class constants and utilities for OpenStack placement service. Version 1.1.0. Low release cadence.","status":"active","version":"1.1.0","language":"python","source_language":"en","source_url":"https://opendev.org/openstack/os-resource-classes","tags":["openstack","placement","resource-classes"],"install":[{"cmd":"pip install os-resource-classes","lang":"bash","label":"pip install"}],"dependencies":[],"imports":[{"note":"submodule not exposed directly","wrong":"from os_resource_classes.resource_classes import ResourceClass","symbol":"ResourceClass","correct":"from os_resource_classes import ResourceClass"},{"note":"used for custom resource class prefix","symbol":"CUSTOM_NAMESPACE","correct":"from os_resource_classes import CUSTOM_NAMESPACE"},{"note":"pattern to validate resource class IDs","symbol":"UUID_V4_PATTERN","correct":"from os_resource_classes import UUID_V4_PATTERN"},{"symbol":"resource_classes_from_names","correct":"from os_resource_classes import resource_classes_from_names"},{"symbol":"resource_classes_from_flags","correct":"from os_resource_classes import resource_classes_from_flags"},{"symbol":"normalize_name","correct":"from os_resource_classes import normalize_name"}],"quickstart":{"code":"from os_resource_classes import ResourceClass\n\nrc = ResourceClass('VCPU')\nprint(rc.name)\nprint(rc.id)\n\n# Check if a name is standard\nfrom os_resource_classes import CUSTOM_NAMESPACE\nprint(CUSTOM_NAMESPACE)  # 'CUSTOM_'\n\n# Convert names list to ResourceClass objects\nfrom os_resource_classes import resource_classes_from_names\nnames = ['VCPU', 'MEMORY_MB', 'DISK_GB']\nrcs = resource_classes_from_names(names)\nprint([rc.name for rc in rcs])","lang":"python","description":"Basic usage: create ResourceClass, access constants, convert names."},"warnings":[{"fix":"Use normalize_name() to standardize names before creating ResourceClass.","message":"ResourceClass name must be uppercase letters, digits, underscores, and optionally start with 'CUSTOM_' for custom names. Avoid lowercase or hyphens.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Import from the top-level package: from os_resource_classes import ResourceClass","message":"Do not import from os_resource_classes.resource_classes submodule directly; it may change in future versions.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use resource_classes_from_names() instead.","message":"The function 'resource_classes_from_flags' is deprecated and may be removed in a future release.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Change import to: from os_resource_classes import ResourceClass","cause":"Importing from an internal submodule that is not a public API.","error":"ModuleNotFoundError: No module named 'os_resource_classes.resource_classes'"},{"fix":"Use the CUSTOM_NAMESPACE prefix and convert to uppercase: name = 'CUSTOM_MY_CUSTOM_RES'","cause":"Custom resource class names must start with 'CUSTOM_' and be uppercase without spaces.","error":"ValueError: 'my_custom_res' is not a valid resource class name"},{"fix":"Use the correct symbols: ResourceClass, CUSTOM_NAMESPACE, normalize_name, etc.","cause":"Trying to access a constant that does not exist or using old naming.","error":"AttributeError: module 'os_resource_classes' has no attribute 'resource_classes'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}