Skip to main content

Eye prescription validation and conversion tools for eyeglasses and contact lenses.

Project description

👁️ EyeTestUtils — Eye Test & Contact Lens Utilities

EyeTestUtils is a Python library that helps you validate, convert, and format eye test and contact lens data easily.
It’s designed for developers building optical systems, clinics, or vision-related applications.


🚀 Features

  • ✅ Validate eye test values (SPH, CYL, AXIS, PD, ADD)
  • 🔄 Convert prescription data to contact lens parameters (Spheric / Toric)
  • 🧮 Calculate and validate vertex distance
  • 🧠 Normalize numeric formats (±00.00)
  • ⚙️ Ready to integrate with Django, FastAPI, or desktop apps

📦 Installation

From PyPI:

pip install eyeTestUtils

From source:

pip install -e .

🧰 Basic Usage

1️⃣ Validate eye test values

    from eyetools.validators import EyeTestValidator

    validator = EyeTestValidator()

    print(validator.is_multiple_of_quarter(1.25))  # ✅ True
    print(validator.is_multiple_of_quarter(1.33))  # ❌ False

    # Axis validation
    print(validator.check_axis(180))  # ✅ True
    print(validator.check_axis(-1))    # ❌ False
    print(validator.check_axis(190))    # ❌ False

    # Add validation
    print(validator.check_add(2.25))  # ✅ True
    print(validator.check_add(-2.25))  # ❌ False

2️⃣ Convert to contact lens values

    from eyetools.validators import ContactLensValidator

    validator = ContactLensValidator()
    data = {
    "SPH": "3.00",
    "CY": "-1.25",
    "AX": "90",
    "BV": "12", # optional
    "ADD": "0.00" # optional
    }

    toric_lens = validator.convert_to_toric(data)
    print(toric_lens)
    # Expected output:
    # {
    #   "Exact SPH": "+03.11",
    #   "Exact CY": "-1.32",
    #   "SPH": "+03.00",
    #   "CY": "-1.25",
    #   "AX": "090",
    #   "BV": "12",
    #   "ADD": "0.00" 
    # }
    
    spheric_lens = validator.convert_to_spheric(data)
    print(spheric_lens)
    # Expected output:
    # {
    #   "Exact SPH": "+02.38",
    #   "SPH": "+02.50",
    #   "BV": "12",
    #   "ADD": "0.00" 
    # }

Format powers

    from eyetools.validators import EyeTestValidator

    validator = EyeTestValidator()

    print(validator.is_valida_eye_test_power(-1.25))   # "-01.25"
    print(validator.remove_sign("-2.50"))              # "2.50"

Vertex distance check

    from eyetools.validators import EyeTestValidator

    validator = EyeTestValidator()

    print(validator.Check_vertex_distance(12))  # ✅ True
    print(validator.Check_vertex_distance(20))  # ❌ False

🧪 Testing

Run all tests using pytest:

pytest -v

eyetools/ ├── eyetools/ │ ├── init.py │ └── validators.py ├── tests/ │ ├── test_eye_validator.py │ └── test_contact_validator.py ├── LICENSE
├── pyproject.toml └── README.md

💡 Contributing

We welcome contributions! If you have suggestions for improving validation rules, finding bugs, or adding new features, please open an issue or submit a Pull Request.

GitHub Repository: https://github.com/Elhussin/eye-test-utils-python.git

👨‍💻 Author

Elhussini Taha Optical systems & Web developer 💡

GitHub

LinkedIn

💬 Support & Contact

If you have any questions, need technical support, or want to discuss features, feel free to reach out:

📜 License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eyetestutils-0.1.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eyetestutils-0.1.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file eyetestutils-0.1.0.tar.gz.

File metadata

  • Download URL: eyetestutils-0.1.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for eyetestutils-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3f6bfac1b37a2e5b61023c363cd21b629c11623b8a56b428acf28c589d70777e
MD5 9224bfd50d573fbe31ef4ba721103ffe
BLAKE2b-256 5f04aa5e6454a53673ccb705eef7d8659833541569cd51e670c6499cc02c6c2b

See more details on using hashes here.

File details

Details for the file eyetestutils-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: eyetestutils-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for eyetestutils-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d83c860b155715a4f8f8429fd434862837c841da369c8bd09b3f4da002173b64
MD5 789ac5abb210598f65d18cfd09044ead
BLAKE2b-256 e6400304b2e06bb231edfd1652e45785284c0e9064d905eaf5753803eac867f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page