{"id":23875,"library":"idutils","title":"idutils","description":"A small library for detecting, validating, normalizing, and converting persistent identifiers used in scholarly communication, such as DOI, ORCID, ISBN, arXiv, and more. Current version 1.6.0 supports Python >=3.7. Release cadence is irregular, with maintenance updates as needed.","status":"active","version":"1.6.0","language":"python","source_language":"en","source_url":"https://github.com/inveniosoftware/idutils","tags":["persistent identifiers","scholarly communication","doi","orcid","isbn","arxiv"],"install":[{"cmd":"pip install idutils","lang":"bash","label":"Default install"}],"dependencies":[{"reason":"Used for HTTP-based identifier validation (e.g., DOI resolution)","package":"requests","optional":false},{"reason":"Python 2/3 compatibility (legacy, still required)","package":"six","optional":false},{"reason":"For ISBN handling","package":"isbnlib","optional":false}],"imports":[{"note":"is_id is a top-level function, not a module.","wrong":"import idutils; idutils.is_id()","symbol":"is_id","correct":"from idutils import is_id"},{"note":"Functions are not in submodules; import directly from idutils.","wrong":"from idutils.doi import normalize_doi","symbol":"normalize_doi","correct":"from idutils import normalize_doi"}],"quickstart":{"code":"from idutils import is_doi, normalize_doi\n\ndoi = '10.1234/example'\nprint(is_doi(doi))          # True\nprint(normalize_doi(doi))    # 'doi:10.1234/example'","lang":"python","description":"Simple check and normalization of a DOI."},"warnings":[{"fix":"Refer to official API docs to avoid using non-existent functions like 'validate_doi'.","message":"Function names are not intuitive; some are prefixed with 'is_' (e.g., is_doi) and some with 'check_' (e.g., check_doi). Always check the documentation for the correct function name.","severity":"gotcha","affected_versions":"all"},{"fix":"Read function docstrings to understand the output format.","message":"Normalization functions may return different formats (e.g., 'doi:10....' vs 'https://doi.org/10...'). Always test output before use.","severity":"gotcha","affected_versions":"all"},{"fix":"pip install --upgrade idutils","message":"ISBN validation is not fully robust: it may accept invalid ISBNs due to checksum bypass in older versions. Upgrade to latest version (1.6.0) for improved validation.","severity":"gotcha","affected_versions":"<1.6.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'pip install idutils' in the correct environment.","cause":"Package not installed or virtual environment not activated.","error":"ModuleNotFoundError: No module named 'idutils'"},{"fix":"Use 'from idutils import is_doi' then call 'is_doi(...)' directly.","cause":"Attempting to call is_doi as idutils.is_doi() without importing the function.","error":"AttributeError: module 'idutils' has no attribute 'is_doi'"},{"fix":"Check the list of supported types in the documentation and ensure correct string (e.g., 'doi', 'orcid').","cause":"Passing an unsupported or misspelled identifier type to a function that expects a specific type.","error":"ValueError: invalid identifier type: 'unknown'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}