Skip to main content

Open-Source Pre-Processing Tools for Unstructured Data

The unstructured_api_tools library includes utilities for converting pipeline notebooks into REST API applications. unstructured_api_tools is intended for use in conjunction with pipeline repos. See pipeline-sec-filings for an example of a repo that uses unstructured_api_tools.

Installation

To install the library, run pip install unstructured_api_tools.

Developer Quick Start

  • Using pyenv to manage virtualenv's is recommended

    • Mac install instructions. See here for more detailed instructions.
      • brew install pyenv-virtualenv
      • pyenv install 3.8.15
    • Linux instructions are available here.
  • Create a virtualenv to work in and activate it, e.g. for one named unstructured_api_tools:

    pyenv virtualenv 3.8.15 unstructured_api_tools
    pyenv activate unstructured_api_tools

  • Run make install-project-local

Usage

Use the CLI command to convert pipeline notebooks to scripts, for example:

unstructured_api_tools convert-pipeline-notebooks \
  --input-directory pipeline-family-sec-filings/pipeline-notebooks \
  --output-directory pipeline-family-sec-filings/prepline_sec_filings/api \
  --pipeline-family sec-filings \
  --semver 0.2.1

If you do not provide the pipeline-family and semver arguments, those values are parsed from preprocessing-pipeline-family.yaml. You can provide the preprocessing-pipeline-family.yaml file explicitly with --config-filename or the PIPELINE_FAMILY_CONFIG environment variable. If neither of those is specified, the fallback is to use the preprocessing-pipeline-family.yaml file in the current working directory.

The API file undergoes black, flake8 and mypy checks after being generated. If you want flake8 to ignore specific errors, you can specify them through the CLI with --flake8-ignore F401, E402. See the flake8 docs for a full list of error codes.

Conversion from pipeline_api to FastAPI

The command described in Usage generates a FastAPI API route for each pipeline_api function defined in the notebook. The signature of the pipeline_api method determines what parameters the generated FastAPI accepts.

Currently, only plain text file uploads are supported and as such the first argument must always be text, but support for multiple files and binary files is coming soon!

In addition, any number of string array parameters may be specified. Any kwarg beginning with m_ indicates a multi-value string parameter that is accepted by the FastAPI API.

For example, in a notebook containing:

def pipeline_api(text, m_subject=[], m_name=[]):

text represents the content of a file posted to the FastAPI API, and the m_subject and m_name keyword args represent optional parameters that may be posted to the API as well, both allowing multiple string parameters. A curl request against such an API could look like this:

curl -X 'POST' \
  'https://<hostname>/<pipeline-family-name>/<pipeline-family-version>/<api-name>' \
  -H 'accept: application/json'  \
  -H 'Content-Type: multipart/form-data' \
  -F 'file=@file-to-process.txt' \
  -F 'subject=art' \
  -F 'subject=history'
  -F 'subject=math' \
  -F 'name=feynman'

In addition, you can specify the response type if pipeline_api can support both "application/json" and "text/csv" as return types.

For example, in a notebook containing a kwarg response_type:

def pipeline_api(text, response_type="text/csv", m_subject=[], m_name=[]):

The consumer of the API may then specify "text/csv" as the requested response content type with the usual HTTP Accept header, e.g. Accept: application/json or Accept: text/csv.

Security Policy

See our security policy for information on how to report security vulnerabilities.

Learn more

Section Description
Company Website Unstructured.io product and company info

Metadata

Release files for unstructured-api-tools 0.10.11

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

Source distribution (sdist)

Source distribution for unstructured-api-tools 0.10.11
File Size Uploaded
unstructured_api_tools-0.10.11.tar.gz 21.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for unstructured-api-tools 0.10.11
File Interpreter ABI Platform
unstructured_api_tools-0.10.11-py3-none-any.whl Python 3 none any Details

Total release size: 44.2 kB

Release files / unstructured_api_tools-0.10.11.tar.gz

Download URL unstructured_api_tools-0.10.11.tar.gz
Size 21.8 kB
Tags Source
SHA-256 checksum
How to use checksums
27d354d24a7c5615dfadaf5813ffc47c35e31a642a1bc8ff40389ac05bca39c0
BLAKE2b-256 checksum
How to use checksums
e2367bd2e0ccb2a988b0e8b595b3e8559f859f053b9b21657ee61c74a617c567
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release files / unstructured_api_tools-0.10.11-py3-none-any.whl

Download URL unstructured_api_tools-0.10.11-py3-none-any.whl
Size 22.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76926c571b751b16a6cce2275dc36c48bd5c922be1d96dad796a28ad53e91694
BLAKE2b-256 checksum
How to use checksums
75b5b95a391d63290ce7429b0a2aded9ea7402e6263ef9bec5ae45f67ba5eadd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Release history Release notifications | RSS feed

This release

0.10.11 This release

2 release files

0.10.6

2 release files

0.10.5

2 release files

0.10.2

1 release file

0.10.1

1 release file

0.10.0

2 release files

0.9.4

1 release file

0.9.3

1 release file

0.9.2

2 release files

0.9.1

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

1 release file

0.4.6

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

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