Skip to main content

Unified data acquisition across multiple grocery store sites

Project description

open-groceries

Unified data acquisition across multiple grocery store sites

Installation

python3 -m pip install open-groceries

Example Usage

from open_groceries import OpenGrocery

# Initialize adapter clients
client = OpenGrocery()

# Print locations near Times Square
print(client.locations("Times Square NYC"))

# Print search results for "beans"
print(client.search("beans"))

# Print search suggestions for "pot"
print(client.suggest("pot"))

API Documentation

OpenGrocery:

The OpenGrocery class is an aggregator for all included adapters. Function/constructor signatures are as follows:

  • OpenGrocery(features = ..., user_agent = ..., adapter_kwargs = ...)

    • features: Optional str[], list of adapter names to initialize.
    • user_agent: Optional str, user-agent string to pass to APIs.
    • adapter_kwargs: Optional {str: {str: any}}, mapping of adapter:{kwargs} for individual adapter kwargs
  • OpenGrocery().locations(near, include = ...) -> Location[]: Fetches locations near an address

    • near: Required str, address to query.
      • Example formats: "14620", "Times Square NYC", "Rochester Institute of Technology"
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
    • Returns Location[] in order of distance to specified address
  • OpenGrocery().set_nearest_stores(near, include = ...) -> None: Sets each adapter to its nearest store

    • near: Required str, address to query.
      • Example formats: "14620", "Times Square NYC", "Rochester Institute of Technology"
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
  • OpenGrocery().set_locations(locations) -> None: Sets each adapter to a specific store

    • locations: Required {str: Location}, mapping of adapter name to desired location. This function does not check whether the input location is valid for that adapter.
  • OpenGrocery().search(query, include = ...) -> GroceryItem[]: Searches adapters for a search query

    • query: Required str, search term to look for
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
    • Returns GroceryItem[] in order of similarity to the search term
  • OpenGrocery().adapter(adapter) -> GroceryAdapter | None: Utility function to return an initialized adapter

    • adapter: Required str, name of adapter to get
    • Returns specified GroceryAdapter if found, or None if not
  • OpenGrocery().suggest(term, include = ...) -> str[]: Gets autocompletion suggestions to search term

    • term: Required str, search term to suggest for
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
    • Returns str[] in order of similarity to search term

GroceryAdapter:

The GroceryAdapter class is the abstract parent of all included Adapters. It shoul not be initialized itself, but should instead be subclassed to create Adapters.

  • GroceryAdapter(user_agent = ...)

    • user_agent: Optional str, user agent header to send to APIs
  • GroceryAdapter().search_groceries(search) -> GroceryItem[]: Search for groceries

    • search: Required str, search term to look for
    • Returns GroceryItem[] in the order returned by the website
  • GroceryAdapter().get_grocery_item(id) -> GroceryItem: Gets a specific grocery item by ID

    • id: Required str, item ID to return
    • Returns GroceryItem returned by the website
  • GroceryAdapter().get_locations(near) -> Location[]: Gets store locations near an address

    • near: Required str, address to query.
      • Example formats: "14620", "Times Square NYC", "Rochester Institute of Technology"
    • Returns Location[] in the order returned by the website
  • GroceryAdapter().set_location(location) -> None: Sets preferred store location

    • location: Required Location, location to set
  • GroceryAdapter().suggest(search) -> str[]: Gets autocomplete suggestions for a search term

    • term: Required str, search term to suggest for
    • Returns str[] in order returned by the website

Supported Stores

Store Item Search Item Retrieval Location Search Location Filtering Autocomplete
Wegmans Full support [Long Term/Versioned API] Full support [Long Term/Versioned API] Full support [Medium Term/External Versioned API] Full Support [Long Term] Full support [Medium Term/External Versioned API]
Costco Adequate support [Medium Term/Site Parsing] Adequate support [Medium Term/Site Parsing] Full support [Medium Term/External Versioned API] Full Support [Long Term] Full support [Long Term/Versioned API]

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

open_groceries-0.1.3.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

open_groceries-0.1.3-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file open_groceries-0.1.3.tar.gz.

File metadata

  • Download URL: open_groceries-0.1.3.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.6 Linux/6.2.0-1015-azure

File hashes

Hashes for open_groceries-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a7877528b73d72f2cffccb56a4a6eb39f62762ce83188ea1cf02bcb8b5d3afc2
MD5 74c75c7f2b07068dd4990c45f06137b8
BLAKE2b-256 fab591571b6a83d9108d264c8d6e09f77e0021d52a5288f77b8dc692e81c8b49

See more details on using hashes here.

File details

Details for the file open_groceries-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: open_groceries-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.6 Linux/6.2.0-1015-azure

File hashes

Hashes for open_groceries-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 33018ac362e11ccabbf0136cc4eb1873698b1639c1ed806a01cec4b4b695b3cf
MD5 015616ac3effba66bf111b5fc386b12f
BLAKE2b-256 5c7c041269d6a1deeae99898116bc82dd94d50bf711aab2deb3348cf3235ca64

See more details on using hashes here.

Supported by

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