Skip to main content

👁️ 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 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 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 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 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.

Release files for eyeTestUtils 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eyeTestUtils 0.1.1
File Size Uploaded
eyetestutils-0.1.1.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eyeTestUtils 0.1.1
File Interpreter ABI Platform
eyetestutils-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 14.6 kB

Release files / eyetestutils-0.1.1.tar.gz

Download URL eyetestutils-0.1.1.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f98e0d0292a41df8f166ccfc6c061cfef6f5c9c0deb075a0a03d0b408acd7e68
BLAKE2b-256 checksum
How to use checksums
51e0f4db9d89f8e555addad3f5124a11594197e37803e8f79626907758eaaa33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / eyetestutils-0.1.1-py3-none-any.whl

Download URL eyetestutils-0.1.1-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a4d0b9d8b41425bc2b0d222e161b23dd38e5f5555b76eab6517c37c5a51fc4a1
BLAKE2b-256 checksum
How to use checksums
fac4980a3e83f1000d9b7ef155810173f1afef7aef0e44d98aeb18ca1c6ce69e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page