fiftyone-code-style

Writes Python code following FiftyOne's official conventions. Use when contributing to FiftyOne, developing plugins, or writing code that integrates with FiftyOne's codebase.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "fiftyone-code-style" with this command: npx skills add voxel51/fiftyone-skills/voxel51-fiftyone-skills-fiftyone-code-style

FiftyOne Code Style

Module Template

"""
Module description.

| Copyright 2017-2026, Voxel51, Inc.
| `voxel51.com <https://voxel51.com/>`_
|
"""
import logging
import os

import numpy as np

import eta.core.utils as etau

import fiftyone as fo
import fiftyone.core.fields as fof
import fiftyone.core.labels as fol
import fiftyone.core.utils as fou

logger = logging.getLogger(__name__)


def public_function(arg):
    """Public API function."""
    return _helper(arg)


def _helper(arg):
    """Private helper."""
    return arg

Import Organization

Four groups, alphabetized within each, separated by blank lines:

GroupExample
1. Standard libraryimport logging, import os
2. Third-partyimport numpy as np
3. eta packagesimport eta.core.utils as etau
4. FiftyOneimport fiftyone.core.labels as fol

FiftyOne Import Aliases

ModuleAlias
fiftyonefo
fiftyone.core.labelsfol
fiftyone.core.fieldsfof
fiftyone.core.mediafom
fiftyone.core.storagefos
fiftyone.core.utilsfou
fiftyone.utils.imagefoui
fiftyone.utils.videofouv

Docstrings (Google-Style)

def get_operator(operator_uri, enabled=True):
    """Gets the operator with the given URI.

    Args:
        operator_uri: the operator URI
        enabled (True): whether to include only enabled operators (True) or
            only disabled operators (False) or all operators ("all")

    Returns:
        an :class:`fiftyone.operators.Operator`

    Raises:
        ValueError: if the operator is not found
    """

Key patterns:

  • Args with defaults: param (default): description
  • Multi-line descriptions: indent continuation
  • Cross-references: :class:fiftyone.module.Class``

Lazy Imports

Use fou.lazy_import() for optional/heavy dependencies:

o3d = fou.lazy_import("open3d", callback=lambda: fou.ensure_package("open3d"))

mask_utils = fou.lazy_import(
    "pycocotools.mask", callback=lambda: fou.ensure_import("pycocotools")
)

Guard Patterns

Use hasattr() for optional attributes:

if hasattr(label, "confidence"):
    if label.confidence is None or label.confidence < threshold:
        label = label.__class__()

Error Handling

Use logger.warning() for non-fatal errors:

try:
    result = process_data(data)
except Exception as e:
    logger.warning("Failed to process data: %s", e)

Avoid Redundant Code

Before writing new functions, search for existing implementations:

  • Local: search the FiftyOne source if available in the environment
  • Remote: search https://github.com/voxel51/fiftyone
  • Check fiftyone/core/utils.py and fiftyone/utils/* first

Common Utilities

ModuleFunctions
foulazy_import(), ensure_package(), extract_kwargs_for_class()
etauguess_mime_type(), ensure_dir(), make_temp_dir()

Quick Reference

PatternConvention
Module structureDocstring → imports → logger → public → private
Private functions_prefix
DocstringsGoogle-style with Args/Returns/Raises
Error handlinglogger.warning() for non-fatal
Lazy importsfou.lazy_import() for optional deps
Guard patternshasattr() checks
Import aliasesfo, fol, fof, fom, fos, fou

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

fiftyone-develop-plugin

No summary provided by upstream source.

Repository SourceNeeds Review
General

fiftyone-find-duplicates

No summary provided by upstream source.

Repository SourceNeeds Review
General

fiftyone-dataset-import

No summary provided by upstream source.

Repository SourceNeeds Review
General

fiftyone-dataset-inference

No summary provided by upstream source.

Repository SourceNeeds Review