Skip to content

Latest commit

 

History

History
134 lines (90 loc) · 4.67 KB

File metadata and controls

134 lines (90 loc) · 4.67 KB

Contributing Guide For datacloud-customcode-python-sdk

This page lists the operational governance model of this project, as well as the recommendations and requirements for how to best contribute to datacloud-customcode-python-sdk. We strive to obey these as best as possible. As always, thanks for contributing – we hope these guidelines make it easier and shed some light on our approach and processes.

Governance Model

The intent and goal of open sourcing this project is because it may contain useful or interesting code/concepts that we wish to share with the larger open source community. Although occasional work may be done on it, we will not be looking for or soliciting contributions.

Issues, requests & ideas

Use GitHub Issues page to submit issues, enhancement requests and discuss ideas.

Bug Reports and Fixes

  • If you find a bug, please search for it in the Issues, and if it isn't already tracked, create a new issue. Fill out the "Bug Report" section of the issue template. Even if an Issue is closed, feel free to comment and add details, it will still be reviewed.
  • Issues that have already been identified as a bug (note: able to reproduce) will be labelled bug.

New Features

  • If you'd like new functionality added to this project, describe the problem you want to solve in a new Issue.
  • Issues that have been identified as a feature request will be labelled enhancement.

Issues

We use GitHub issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue.

Code of Conduct

Please follow our Code of Conduct.

Development

Quick Start

Prerequisites

See the Prerequisites section in README.md for complete setup requirements.

Initial Setup

  1. Clone the repository

    git clone <repository-url>
    cd datacloud-customcode-python-sdk
  2. Set up virtual environment and install dependencies

    Note: If you need to set a specific Python version, use pyenv local 3.11.x in the project directory.

    python3.11 -m venv .venv
    source .venv/bin/activate
    pip install poetry
    make develop
  3. Verify installation

    datacustomcode version
  4. Install the SF CLI and plugin

    The SF CLI is how you test your SDK changes end-to-end (init, scan, zip, run, deploy).

    # Install the Salesforce CLI (requires Node.js)
    npm install -g @salesforce/cli
    
    # Install the Data Cloud Code Extension plugin
    sf plugins install @salesforce/plugin-data-code-extension
  5. Build and install your local SDK changes

    The SF CLI plugin resolves templates from the installed package path. After making changes, build a wheel and install it:

    poetry build
    $(poetry env info --path)/bin/pip install dist/*.whl --force-reinstall --no-deps

    Re-run these two commands each time you make SDK changes you want to test via the SF CLI.

  6. Test your changes

    # Create a new directory for your test project
    mkdir my-test-project
    cd my-test-project
    
    # Initialize, scan, zip, run
    sf data-code-extension script init --package-dir .
    sf data-code-extension script scan --entrypoint payload/entrypoint.py
    sf data-code-extension script zip --package-dir .
    sf data-code-extension script run --entrypoint payload/entrypoint.py -o <your-org-alias>

Versioning and Pre-Releases

This project uses PEP 440 version syntax. Versions are derived automatically from git tags via poetry-dynamic-versioning.

  • Stable releases use tags like v4.1.0 → published as 4.1.0 on PyPI.
  • Pre-releases use tags like v4.1.0.dev1, v4.1.0rc1 → published as 4.1.0.dev1, 4.1.0rc1 on PyPI.

Pre-release versions are never resolved by pip install salesforce-data-customcode unless the user explicitly passes --pre. This ensures customers always get stable releases by default.

A Github Action (Released Version Check) runs after every publish to verify that bare pip install still resolves to a stable version.

Makefile Commands

# Clean build artifacts, caches and temporary files
make clean

# Build package distribution
make package

# Install main dependencies only
make install

# Install dependencies for full development setup
make develop

# Run code quality checks
make lint

# Perform static type checking
make mypy

# Run complete test suite
make test