{"id":23127,"library":"microversion-parse","title":"microversion-parse","description":"Library for parsing OpenStack microversion headers from HTTP requests. Version 2.1.0, supports Python >=3.10. Actively maintained, part of the OpenStack project. Release cadence follows OpenStack cycles.","status":"active","version":"2.1.0","language":"python","source_language":"en","source_url":"https://opendev.org/openstack/microversion-parse","tags":["openstack","microversion","header-parsing","http"],"install":[{"cmd":"pip install microversion-parse","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required for parsing HTTP request headers.","package":"webob","optional":false}],"imports":[{"note":"Version class is internal; use parse_version function.","wrong":"from microversion_parse import Version","symbol":"parse_version","correct":"from microversion_parse import parse_version"},{"note":"Function name is singular; common misspelling.","wrong":"from microversion_parse import parse_version_strings","symbol":"parse_version_string","correct":"from microversion_parse import parse_version_string"}],"quickstart":{"code":"from microversion_parse import parse_version, parse_version_string\nfrom webob import Request\n\n# Example with a WebOb request\nreq = Request.blank('/', headers={'OpenStack-API-Version': 'compute 2.1'})\nversion = parse_version(req, 'compute')\nprint(version)  # ('compute', 2, 1)\n\n# Parse a version string directly\nver = parse_version_string('compute 2.1')\nprint(ver)  # ('compute', 2, 1)","lang":"python","description":"Parse microversion from request headers or version strings."},"warnings":[{"fix":"Update from pip package 'microversion_parse' to 'microversion-parse'. Import path unchanged.","message":"In version 2.0.0, the package was renamed from 'microversion_parse' (underscore) to 'microversion-parse' (hyphen). The import path remains 'microversion_parse' (underscore).","severity":"breaking","affected_versions":"<2.0.0"},{"fix":"Ensure header format is correct, e.g., 'compute 2.1'.","message":"The library expects the version header to be in the format '<service-type> <major>.<minor>'. Missing space or wrong format raises an exception.","severity":"gotcha","affected_versions":"all"},{"fix":"If not using WebOb, use 'parse_version_string' directly.","message":"The function 'parse_version' requires a WebOb request object. Passing a plain dict or other request object will raise an error.","severity":"gotcha","affected_versions":"all"},{"fix":"Use 'parse_version_string' and access the major component.","message":"The function 'get_major_version' was deprecated in 2.0.0 and removed in 2.1.0.","severity":"deprecated","affected_versions":"2.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use 'from microversion_parse import parse_version' (underscores).","cause":"Using incorrect import path with hyphen instead of underscore.","error":"ImportError: cannot import name 'parse_version' from 'microversion-parse'"},{"fix":"Use '<service-type> <major>.<minor>' format, e.g., 'compute 2.0'.","cause":"Version string missing minor version (e.g., '2' instead of '2.0').","error":"microversion_parse.exc.MicroversionHeaderError: Invalid microversion header: 'compute 2'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}