Skip to content
Python client for test.ai classifier server
Python Makefile
Branch: master
Clone or download
Latest commit d63c140 Dec 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
proto @ 990d986 pulling out into own repo Dec 20, 2019
test
testai_classifier pulling out into own repo Dec 20, 2019
.gitignore pulling out into own repo Dec 20, 2019
.gitmodules pulling out into own repo Dec 20, 2019
LICENSE pulling out into own repo Dec 20, 2019
Makefile pulling out into own repo Dec 20, 2019
Pipfile
Pipfile.lock
README.md
setup.py update setup info Dec 20, 2019

README.md

Test.ai Classifier - Python Client

The code in this directory defines a client library for use with the gRPC-based Test.ai classifier server.

Installation & Setup

pip install testai_classifier

Usage

This package exposes a ClassifierClient class:

from testai_classifier import ClassifierClient

You can use it to attempt to match images to a semantic label:

def classify():
    client = ClassifierClient(HOST, PORT)
    # assume cart_img and menu_img are byte streams as delivered by file.read()
    # define a mapping between ids and image data
    data = {'cart': cart_img, 'menu': menu_img}

    # define which label we are looking to match
    label = 'cart'

    # attempt to match the images with the label
    # confidence is from 0.0 to 1.0 -- any matches with lower than the specified
    # confidence are not returned.
    # allow_weaker_matches specifies whether to return matches that are above
    # the confidence threshold but whose most confident match was a *different*
    # label
    res = client.classify_images(label, data, confidence=0.0, allow_weaker_matches=True)

    # res looks like:
    # {'cart': {'label': 'cart', 'confidence': 0.9, 'confidence_for_hint': 0.9},
    #  'menu': {'label': 'menu', 'confidence': 0.9, 'confidence_for_hint': 0.2}}

    # always close the client connection
    client.close()

You can also use it in conjunction with a Selenium Python client driver object, to find elements in a web page based on the label:

def find_elements():
    client = ClassifierClient(HOST, PORT)

    driver.get("https://test.ai")
    els = client.find_elements_matching_label(driver, "twitter")
    els[0].click()
    assert driver.current_url == "https://twitter.com/testdotai"

    client.close()

Development

  • make install - install deps (requires Pipenv)
  • make protogen - generate python client helpers from .proto file
  • make clean - reset generated files
  • make build - run setup.py to generate publishable files
  • make test - run test suite (also make unit-test and make se-test)
  • make publish - publish to pypi (also make publish-test)
You can’t perform that action at this time.