{"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":[{"wrong":"from idutils import is_id","symbol":"is_id","correct":"from idutils import is_id"}],"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,"search_vec":"'1.6.0':27 '3.7':30 'arxiv':22,47 'cadenc':32 'communic':16,43 'convert':10 'current':25 'detect':6 'doi':19,44 'identifi':12,41 'idutil':1 'irregular':34 'isbn':21,46 'librari':4 'mainten':36 'need':39 'normal':8 'orcid':20,45 'persist':11,40 'python':29 'releas':31 'scholar':15,42 'small':3 'support':28 'updat':37 'use':13 'valid':7 'version':26","created_at":"2026-05-01T08:10:05.680312+00:00","updated_at":"2026-05-01T08:10:05.680312+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\nImportError: cannot import name 'is_id' from 'idutils' (/tmp/tmpznpetlmo/venv/lib/python3.12/site-packages/idutils/__init__.py). Did you mean: 'is_ads'?"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.6.1","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/inveniosoftware/idutils","docs":null,"changelog":null,"pypi":"https://pypi.org/project/idutils/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["serialization","data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}