{"id":6296,"library":"vininfo","title":"VINinfo Library","description":"VINinfo is a Python library (current version 1.9.2) designed to extract useful information from Vehicle Identification Numbers (VINs). It can operate as a standalone command-line application or be integrated as a Python package. The library provides both basic and detailed VIN information (where available) and offers functionality for VIN checksum verification. It is actively maintained with a recent release in September 2025 and focuses on decoding VINs using its internal databases, specifically enhancing data for brands like AvtoVAZ, Nissan, Opel, and Renault.","status":"active","version":"1.9.2","language":"en","source_language":"en","source_url":"https://github.com/idlesign/vininfo","tags":["vin","vehicle","parser","automotive","decoder","identification"],"install":[{"cmd":"pip install vininfo","lang":"bash","label":"Install base library"},{"cmd":"pip install vininfo[cli]","lang":"bash","label":"Install with CLI support"}],"dependencies":[{"reason":"Requires Python 3.10 or newer.","package":"Python","optional":false},{"reason":"Required for using the command-line interface (CLI) features.","package":"click","optional":true}],"imports":[{"symbol":"Vin","correct":"from vininfo import Vin"}],"quickstart":{"code":"from vininfo import Vin\n\nvin_number = 'VF1LM1B0H36666155'  # Example Renault VIN\n# For testing invalid VINs or edge cases, consider a generic placeholder\n# vin_number = 'INVALIDVINTEST1234'\n\nvin = Vin(vin_number)\n\nprint(f\"VIN: {vin_number}\")\nprint(f\"Country: {vin.country}\")\nprint(f\"Manufacturer: {vin.manufacturer}\")\nprint(f\"Region: {vin.region}\")\nprint(f\"WMI: {vin.wmi}\")\nprint(f\"VDS: {vin.vds}\")\nprint(f\"VIS: {vin.vis}\")\nprint(f\"Checksum valid: {vin.verify_checksum()}\")\n\n# Accessing detailed information if available\ndetails = vin.details\nif details:\n    print(\"\\nDetails:\")\n    for key, value in details.items():\n        print(f\"  {key.replace('_', ' ').title()}: {value}\")\nelse:\n    print(\"\\nNo detailed information available for this VIN.\")\n\n# Example with annotation\nannotated_vin = vin.annotate()\nprint(f\"\\nAnnotated VIN: {annotated_vin}\")","lang":"python","description":"Initializes a Vin object with a VIN string and demonstrates accessing various attributes like country, manufacturer, region, and performing checksum verification. It also shows how to retrieve detailed information and an annotated VIN string."},"warnings":[{"fix":"Ensure your project uses Python 3.10 or a newer compatible version.","message":"The library has dropped support for older Python versions. `v1.0.0` removed Python 2 and Python 3.4 support. `v1.4.0` removed Python 3.5 support. The current version requires Python 3.10+.","severity":"breaking","affected_versions":"<=1.4.0"},{"fix":"If relying on pre-2009 VIN data, verify results carefully. For checksum verification, be aware of the default model year check and explicitly set `model_year_check=False` if needed for older VINs or specific use cases.","message":"In `v1.7.0`, the regions and countries list was updated according to ISO 3780. This change *may affect* information accuracy for vehicles manufactured before 2009. Additionally, the model year check within `Vin.verify_checksum()` became optional but defaults to 'on'.","severity":"breaking","affected_versions":">=1.7.0"},{"fix":"Understand that data availability depends on the library's internal dictionaries and detail extractors. Contributions for missing WMI or detail extractors are encouraged.","message":"VINinfo decodes information based on its internal databases. Unlike some other VIN libraries (e.g., `pyvin`), it does not rely on external APIs (like NHTSA) for its primary data. Therefore, the depth and breadth of information might vary, especially for manufacturers not specifically supported with 'details extractors'.","severity":"gotcha","affected_versions":"All versions"},{"fix":"When working with VINs from manufacturers not listed, anticipate that `.details` might be empty or less comprehensive. You can check `vin.details` for availability.","message":"Detailed information (e.g., body, engine, model, plant) is currently only available for specific brands such as AvtoVAZ, Nissan, Opel, and Renault. For other manufacturers, only basic VIN segment information might be retrievable.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure you are on version `1.9.2` or later to benefit from the fix for `Vin.years` regression.","message":"A regression was fixed in `v1.9.2` related to `Vin.years` for unsupported year codes. While fixed, this highlights that parsing complex or unusual VINs, especially regarding year codes, can be an edge case that might require careful handling or validation.","severity":"gotcha","affected_versions":"1.9.1"}],"env_vars":null,"last_verified":"2026-04-14T00:00:00.000Z","next_check":"2026-07-13T00:00:00.000Z"}