Skip to main content

fpt-api

A thread-safe wrapper around Flow Production Tracking (formerly ShotGrid) that extends shotgun_api3 to support query field retrieval and parallel processing.

It also supports the retrieval of all Entities of a given Page, applying the Page filters.

Features

  • 🔍 Retrieves query fields (not supported in base shotgun_api3)
  • 📄 Retrieves all Entities of a given Page, applying the Page filters
  • 🧵 Thread-safe operations (not supported in base shotgun_api3)
  • ⚡ Parallel processing for improved performance
  • 🔄 Streaming results for processing large datasets
  • 🔌 Drop-in replacement for basic shotgun_api3 operations
  • • Supports dotted query fields, e.g. entity.Shot.sg_assets_count

Installation

From PyPI:

pip install fpt-api
pip install git+https://github.com/shotgunsoftware/python-api.git

From source:

pip install git+https://github.com/ksallee/fpt-api.git
pip install git+https://github.com/shotgunsoftware/python-api.git

Why This Wrapper?

The standard shotgun_api3 library has two main limitations:

  1. No support for query field retrieval, which is essential for reporting and analytics
  2. Not thread-safe, which can cause issues in multi-threaded applications

This wrapper addresses both issues by:

  • Implementing query field retrieval
  • Adding thread safety
  • Parallelizing query field retrieval for better performance
  • Supporting streaming for large result sets

Usage

Basic Usage

from fpt_api import FPT

# Initialize the client
fpt = FPT(
    "https://yourshotgunurl.com",
    script_name="your_script_name",
    api_key="your_script_key"
)

# Find a single shot
shot = fpt.find_one(
    "Shot",
    [["id", "is", 1234]],
    ["code", "sg_status_list", "sg_query_field"]
)

# Find multiple shots (returns all results at once)
shots = fpt.find(
    "Shot",
    [["id", "in", [1234, 12345]]],
    ["code", "sg_status_list", "sg_query_field"]
)

# Stream results one by one
for shot in fpt.yield_find(
    "Shot",
    [["id", "in", [1234, 12345]]],
    ["code", "sg_status_list", "sg_query_field"]
):
    process_shot(shot)  # Process each shot as it becomes ready

# Get the value of a dotted query field
version = fpt.find_one(
    "Version",
    [["id", "is", 1234]],
    ["entity.Shot.sg_assets_count"]
)

# Get all Entities of a given Page, applying the Page filters
for shot in fpt.yield_page_entities(5105):
    print(shot)

API Reference

Check out the Official Shotgun API Reference for more information on the base shotgun_api3 library. FPT does not change the base API, but rather extends it with additional functionality.

Yield all Entities of a given Page, applying the Page filters:

def yield_page_entities(
    self,
    page_id: int,
    additional_filters: Optional[List] = None,
    fields: Optional[List[str]] = None,
) -> Iterator[Entity]:
    """
    Yield entities from a Page, applying the Page filters.

    :param page_id: ID of the Page to process
    :param additional_filters: Additional filters to apply
    :param fields: Fields to retrieve
    :yields: Entities found
    """

Performance Notes

  • Query fields are retrieved in parallel using threads
  • For standard find(), results are returned after all query fields are retrieved
  • yield_find() streams results as they become available
  • Connection pooling reduces overhead for multiple requests

Contributing

Contributions are welcome! Please feel free to submit pull requests.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Metadata

Release files for fpt-api 0.3.5

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

Source distribution (sdist)

Source distribution for fpt-api 0.3.5
File Size Uploaded
fpt_api-0.3.5.tar.gz 24.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fpt-api 0.3.5
File Interpreter ABI Platform
fpt_api-0.3.5-py3-none-any.whl Python 3 none any Details

Total release size: 47.4 kB

Release files / fpt_api-0.3.5.tar.gz

Download URL fpt_api-0.3.5.tar.gz
Size 24.3 kB
Tags Source
SHA-256 checksum
How to use checksums
adf1b761390eba5d942c996f0d4862a0a482dcf6f8f574b4a45a2d1ed053d9c9
BLAKE2b-256 checksum
How to use checksums
b3b3254c4192430826f719819643c5d6a4d2f1263845cd6217d7b8ea0c81feec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release files / fpt_api-0.3.5-py3-none-any.whl

Download URL fpt_api-0.3.5-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ec43df1b304194ae33b3b728de73cfbc0f2bad26dd806a1dea0ed298b15a0f6
BLAKE2b-256 checksum
How to use checksums
fe368b7a651717460e8cd6793eef3503d03adae3ffe51446fb943617b3dc7d3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.3.5 This release

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

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