Commit Graph
87 Commits
Author SHA1 Message Date
zeekay 7844a60aff refactor(pack): modernize to github.com/hanzoai/pack and remove upstream branding
- Migrate module path to github.com/hanzoai/pack across all Go packages
- Remove legacy upstream docs and competitor brand references
- Modernize LLM.md and mise.toml for pristine Hanzo Pack builder
2026-09-04 00:40:42 -07:00
Michael BiancoandGitHub 392d3fef96 feat: respect dockerignore on initial source load (#373)
* docs: add claude ref to agents

* refactor: simplify DockerignoreContext passing and make it required

* refactor: another take at fixing the initial docker ignore load stuff

* style: whitespace formatting tweaks

I'm not sure how it got into this state :/

* fix: apply dockerignore rules when copying local app context, not later in the build process

* fix: merge dockerignore excludes with top-level railpack.json excludes/includes

* test: top-level railpack.json exclude/include

* docs: update excluding files docs

* test: add negation to an existing dockerignore to expand test coverage

* fix: hack to determine if I'm understanding the llb exclude functionality right

* refactor: remove Includes and instead use negation operators and Excludes

* test: respect dockerignore on initial source load

- Apply exclude and include filters during the initial buildkit context load to improve local build performance
- Support top-level exclude and include configurations in railpack.json

Generated-by: aiautocommit

* feat: respect dockerignore on initial source load

- Load local source layers using the plan package directly to ensure .dockerignore patterns are respected at the buildkit level.
- Prevent unnecessary loading of ignored files like node_modules and virtual environments during local builds.

Generated-by: aiautocommit

* style: formatting updates

* docs(config): update documentation for dockerignore and exclude pattern handling

Generated-by: aiautocommit

* feat(plan): respect dockerignore on initial source load

Generated-by: aiautocommit

* refactor(core): access include rules directly from layer struct

Generated-by: aiautocommit

* feat(buildkit): respect exclude patterns on initial source load

- Apply exclude patterns at the buildkit level during local context loading to prevent transferring unnecessary large directories like node_modules or virtual environments.

Generated-by: aiautocommit

* feat: respect dockerignore on initial source load

Generated-by: aiautocommit

* feat(core): respect dockerignore on initial source load

- Expose the parsed dockerignore context via the build generate context
- Ensure build results preserve the correct dockerignore metadata and excludes on initial load

Generated-by: aiautocommit

* style(docs): fix trailing whitespace in CLAUDE.md

Generated-by: aiautocommit

* feat(core): respect dockerignore on initial source load

- Apply exclude and include filters during buildkit context setup to avoid loading large ignored directories locally.
- Support top-level exclude and include configuration in railpack.json.

Generated-by: aiautocommit

* test(plan): assert all expected empty dockerignore examples are found

Generated-by: aiautocommit

* docs(config): fix typo in excluding-files guide

Generated-by: aiautocommit

* feat(dockerignore): respect dockerignore on initial source load

- Apply exclude and include filters during Buildkit context establishment to drastically improve local build performance.
- Support top-level `exclude` and `include` rules directly in `railpack.json`.

Generated-by: aiautocommit

* docs(config): clarify directory matching behavior in excluding-files guide

Generated-by: aiautocommit

* refactor(core): remove dead dockerignore context fields

- Remove unused dockerignore context properties from build plans and options
- Clean up obsolete metadata checks in core tests

Generated-by: aiautocommit

* feat: add top-level exclude option to railpack config

Generated-by: aiautocommit
2026-07-31 07:41:35 -06:00
Michael BiancoandGitHub 94402f3684 feat(node,python): opt-in Playwright browser installation (#653)
* feat: automatically install packages required for playwright, and playwright browser

This reverts commit 2a5567ff09fa044cf391b1d79ecf1fe7846e8828.

* docs: update environment variable test configuration property name

Generated-by: aiautocommit

* docs(node): add production deployment guide link to start command help

Generated-by: aiautocommit

* feat(python-playwright): install playwright only when requested via env

- Enable Playwright browser installation conditionally using `RAILPACK_PYTHON_PLAYWRIGHT_INSTALL`.
- Update python-playwright example to test against example.com.

Generated-by: aiautocommit

* feat(python): make Playwright browser installation opt-in

- Require `RAILPACK_PYTHON_PLAYWRIGHT_INSTALL=1` to install Playwright browsers and their runtime dependencies automatically.
- Prevent unintended deployment size increases and breaking changes for existing users since automatic installation can cause issues.
- Add test coverage verifying opt-in behavior and production dependency resolution.

Generated-by: aiautocommit

* docs(python): document playwright install configuration variable

Generated-by: aiautocommit

* feat(node): add support for checking production-only dependencies

Generated-by: aiautocommit

* feat(node): make Playwright browser installation opt-in

- Restrict automatic Playwright detection to production dependencies and require an explicit environment variable to install browsers, preventing unexpected side effects for existing users.
- Add tests to verify Playwright installation behavior based on environment configuration.

Generated-by: aiautocommit

* docs: add unit testing guideline against testing log output

Generated-by: aiautocommit

* chore(deps): update playwright dependency to v1.60 in node-playwright example

Generated-by: aiautocommit

* feat(node,python): update Playwright runtime dependencies for Debian 12

- Align Playwright runtime dependencies with the official nativeDeps.ts list for Debian 12 Chromium.
- Ensure production runtime images include all required system libraries for Playwright without relying on builder-only installation flags.

Generated-by: aiautocommit

* feat(examples): navigate to example.com in playwright node example

Generated-by: aiautocommit

* docs(node): document opt-in Playwright browser installation

Generated-by: aiautocommit

* test(core): update test snapshots for playwright production-only dependencies

Generated-by: aiautocommit

* docs: add instruction regarding snapshot updates to PR template

Generated-by: aiautocommit

* feat(node): remove libatomic1 requirement for Node.js 25+

Generated-by: aiautocommit

* test(core): update playwright snapshots for mise version and apt caches

Generated-by: aiautocommit
2026-07-28 08:10:48 -06:00
Michael BiancoandGitHub 1114ef3dc2 refactor(python): install poetry via mise default backend (#625)
* refactor(python): switch poetry installation back to mise native

- Stop using pipx to install poetry.
- Revert to using the native mise poetry plugin, which is now preferred for better environment integration.

Generated-by: aiautocommit

* refactor(python-poetry): remove default start command from config

* Remove the explicit start command to allow for standard project-level runtime defaults.
* The previous comment regarding poetry venv path issues is addressed by updated platform base images.

Generated-by: aiautocommit

* test: update snapshot

Generated-by: aiautocommit

* chore: remove unused railpack config example

Generated-by: aiautocommit
2026-07-13 14:59:07 -06:00
Michael BiancoandGitHub 50761d3388 docs: improve contribution guidelines and developer workflow (#612)
* refactor: clean up comments regarding version precedence

- Remove redundant comments about "last write wins" and version precedence, as the implementation order is clear from the code.
- Update the documentation for UseMiseVersions to clarify its role in the overwrite process.

Generated-by: aiautocommit

* docs: update contribution guidelines and add pull request template

- Establish clear "Lifecycle of a Change" guide for developers
- Formalize AI contribution policy and developer expectations
- Add standard PR template to improve contribution quality and consistency
- Refine documentation for local setup, testing, and workflow processes

Generated-by: aiautocommit

* docs: update contribution guidelines

- Improve formatting of links and instructions.
- Add instructions to run snapshot updates before finishing work.

Generated-by: aiautocommit

* feat: add retry-cli and apply to buildkit startup

* Add retry-cli via mise to improve CI reliability.
* Wrap the buildkit startup command with retry to mitigate transient connection or service availability issues during integration tests.

Generated-by: aiautocommit

* chore: replace retry-cli with local mise task

* Remove external dependency `retry-cli` to reduce toolchain overhead.
* Add a custom task script to handle command retries with exponential backoff directly within the project.
* Enable `locked` mode in `mise.toml` to ensure consistent environment versions.

Generated-by: aiautocommit

* chore: disable mise lockfile enforcement

* Commented out `locked` in `mise.toml` to allow for dependency updates without constant lockfile synchronization during development.

Generated-by: aiautocommit
2026-07-13 14:31:33 -06:00
Hoàng VũandGitHub efd7176263 fix: reorder version resolution to prioritize ENV for Python, Ruby, and Deno (#610) 2026-06-22 11:53:25 +02:00
Michael BiancoandGitHub 76d9036a33 chore: update mise 2026.5.16 (#564)
* fix: update mise to 2026.5.11

* test: update snapshots

* chore: update mise upgrade task to run locally

Use the --local flag for the mise upgrade task to ensure consistency with local environment configurations during dependency updates.

Generated-by: aiautocommit

* chore: update go, mise, and bun packages

* chore: update go, mise, and bun packages

* chore: update mise to 2026.5.15

- Update build plan snapshots to use mise version 2026.5.15 across all test examples.

Generated-by: aiautocommit

* chore: update mise to 2026.5.15

Generated-by: aiautocommit

* chore: ignore .antigravitycli directory

Generated-by: aiautocommit

* chore: update mise 2026.5.11

Generated-by: aiautocommit

* chore: update better-sqlite3 dependency version

Generated-by: aiautocommit

* feat(test): add example for testing npm native dependencies with node-lts

Generated-by: aiautocommit

* fix: do not run rdoc when compiling ruby

this fixes a locale issue which causes the build to fail

* chore: update python version in examples to 3.13.3

no GH attestations for 3.13.1

Generated-by: aiautocommit

* chore: bump better-sqlite3 in examples

Generated-by: aiautocommit

* chore(node): update pnpm path to include bin directory

Generated-by: aiautocommit

* chore: update railpack-builder and runtime to mise 2026.5.16

Generated-by: aiautocommit

* chore: bump mise version to 2026.5.16

Generated-by: aiautocommit

* chore: update mise to 2026.5.16

- Update mise CLI command structure for improved task execution.
- Includes upstream bug fixes and stability improvements.

Generated-by: aiautocommit

* feat(node): update pnpm path layout for version 11+

- Adjust the pnpm binary path detection to account for changes in pnpm v11, which uses a /pnpm/bin directory layout.
- Introduce version checking to ensure backward compatibility for older pnpm versions.
- Add unit tests to verify path resolution for various version scenarios.

Generated-by: aiautocommit

* chore(node): update pnpm home paths and versioning logic

Generated-by: aiautocommit

* chore: update python-freethreaded example configuration

Generated-by: aiautocommit

* feat: add mise-builder-shell task

- Adds a new task to facilitate debugging by spawning a shell inside the published builder container image.

Generated-by: aiautocommit

* test(python): fix fasthtml example

I have no idea why this wasn't caught before...

* chore: update mise configuration to 2026.5.16

- Set MISE_MINIMUM_RELEASE_AGE to match the builder default.
- Correct the mise setting key from `install_before` to `minimum_release_age`.

Generated-by: aiautocommit

* chore: ensure uv is installed when using pipx.uvx in mise

Generated-by: aiautocommit

* chore: update mise 2026.5.16

- Sync environment variables from the Elixir provider to the mise installation step to ensure installation consistency.

Generated-by: aiautocommit

* feat(node): prioritize mise-managed package manager versions

- Allow mise to override inferred package manager versions for pnpm, bun, and yarn.
- Ensure consistent version resolution between Railpack and user-defined mise environment settings.
- Update node provider logic to correctly identify and use package manager tool names from mise.

Generated-by: aiautocommit

* chore: update test configuration for pnpm 11 compatibility

- Enable stderr allowance in tests to accommodate pnpm 11 command logging behavior.

Generated-by: aiautocommit

* chore: update example env configuration for mise compatibility

- Replace python3-venv with dnsutils for build-time apt testing.
- Add python to RAILPACK_PACKAGES to ensure pipx and other requirements function correctly within the mise environment.
- Update build and start commands to verify the availability of the new packages and validate expected scoping.

Generated-by: aiautocommit

* chore: update test snapshots for mise 2026.5.16

- Update snapshot files to reflect changes in build plan generation, including the addition of `uv` to Python environments, corrected pathing for pnpm, and updated environment variables for Elixir configurations.
- Reflect renaming of `install_before` to `minimum_release_age` in configuration settings.

Generated-by: aiautocommit
2026-05-29 14:40:00 +02:00
Michael BiancoandGitHub 72614625c1 feat: use mise.toml not env vars for configuration (#504)
* feat: use mise.toml instead of env vars for configuration

This allows users to easily override defaults

* docs: llm instructions updates

* docs: py example fix

* refactor: cleaner mise.toml output

* test: snapshot update

* chore(deps): update mise.lock

Generated-by: aiautocommit

* docs(mise): document rationale for AddMiseSetting dot-path expansion

- Clarify why dot-path expansion is used for TOML encoding to ensure proper section nesting.
- Explain the merging behavior to prevent independent callers from clobbering existing settings.

Generated-by: aiautocommit
2026-03-23 10:46:02 -06:00
Ray ChenandGitHub a66d8d94b5 feat(python): Scan nested dependency files in usesDep (#457)
* feat(python): Scan nested dependency files in usesDep

* snapshot

* remove readme

* use single brace-expanded glob instead of three separate globs
2026-02-12 07:30:43 +08:00
Michael BiancoandGitHub 3355f7feb5 Revert "feat: automatically install packages required for playwright, and playwright browser (#348)" (#447)
This reverts commit c20ada430f.
2026-01-19 15:48:42 -07:00
Michael BiancoandGitHub c20ada430f feat: automatically install packages required for playwright, and playwright browser (#348)
* feat: support playwright on node and python

* test: update snapshot

* fix: log when SPA framework can't be detected

* fix: install playwright headless on node provider

* build: remove node_modules and venv during cleanup process

* refactor(node): cleanup apt package mapping and playwright/puppeteer install

* test: snapshot update

* refactor: simplify playwright install flow
2026-01-17 11:30:14 -07:00
86314dc9d8 fix: avoid apt package when psycopg-binary is used (#379)
* feat: detect psycopg[binary] and skip apt packages

When using psycopg2-binary or psycopg[binary], the PostgreSQL client
libraries (libpq-dev, libpq5) are not needed because these variants
ship with pre-compiled binaries. This change:

- Adds usesBinaryPsycopg() to detect binary variants
- Updates usesPostgres() to return false when binary variants are used
- Skips libpq-dev (build) and libpq5 (runtime) apt package installation
- Adds comprehensive unit tests for binary psycopg detection

This reduces image size and build time for projects using binary variants.

* test: add psycopg[binary] integration test

Adds a dedicated test example for psycopg[binary] to verify that the
bracket syntax for optional dependencies is correctly detected. This
ensures the binary detection works for both psycopg2-binary and
psycopg[binary] variants.

Test coverage now includes:
- psycopg2-binary (existing python-system-deps example)
- psycopg[binary] (new python-psycopg-binary example)
- psycopg non-binary (existing python-latest-psycopg example)
- psycopg2 non-binary (existing python-django example)

* test: snapshot update

* test: add binary pyscogp test

* test: ensure libpq is installed for pyscog operation

* build: add helper for running the current dir tests

* test: check to make sure the libpg library is not installed when a binary postgres connection is requested

* test: update snapshot

---------

Co-authored-by: Hanzo Dev <[email protected]>
2026-01-15 11:32:30 -07:00
Jake RunzerandGitHub a1a8a4ac0c feat(python): detect python projects with start.py or bot.py (#416)
* feat(python): detect python projects with start.py or bot.py

Refactor Detect() to use getMainPythonFile() instead of duplicating
the sentinel file check. Add start.py to the list of recognized
Python entry files.

Add test case and example for bot.py-only detection.

Fixes PRO-4625

* update
2026-01-07 16:24:00 -05:00
cbdb236184 feat: automatic start command for fastapi applications, improved provider docs (#353)
* docs: update provider documentation with missing features

Added missing documentation for Node, Python, and Ruby providers:

Node.js:
- Added .node-version file support for version detection
- Documented Tanstack Start framework detection and caching
- Added Puppeteer system dependencies documentation
- Clarified React Router cache support

Python:
- Added FastHTML framework detection and start command
- Documented Flask with gunicorn start command
- Added FastAPI framework detection
- Documented additional main file names (app.py, bot.py, hello.py, server.py)
- Added pycairo system dependency documentation

Ruby:
- Documented Node.js integration for Ruby projects
- Added Bootsnap precompilation support documentation
- Documented Propshaft asset pipeline support
- Added local path dependencies support documentation
- Documented Bundler version auto-detection
- Added YJIT/rustc requirement for Ruby 3.2+
- Documented jemalloc performance optimization
- Updated Charlock Holmes dependencies to include full list

* docs: complete FastAPI documentation section

Clarify that FastAPI detection is for metadata only and doesn't provide
automatic start command configuration. Users should configure their own
production ASGI server.

* feat: add python-fastapi example project

Add example project demonstrating FastAPI with custom start command
configuration. This example shows how to configure FastAPI applications
that need explicit ASGI server configuration.

Features:
- Simple FastAPI app with root and health endpoints
- Uses uvicorn as the ASGI server
- Custom start command in railpack.json
- HTTP check test to verify the app runs correctly

* feat: add automatic FastAPI start command detection

Add automatic start command detection for FastAPI projects when uvicorn
is available as a dependency, similar to how Flask and FastHTML are
handled.

Changes:
- Add isFastapi() method to Python provider
- Automatically detect FastAPI + uvicorn and set start command
- Update StartCommandHelp to include FastAPI
- Refactor getRuntime() to use isFastapi() method for consistency

Example updates:
- Convert python-fastapi example to use uv package manager
- Remove railpack.json (no longer needed with automatic detection)
- Add pyproject.toml and uv.lock for dependency management

Documentation updates:
- Update FastAPI section to reflect automatic start command detection
- Clarify that uvicorn must be present as a dependency

* refactor: remove unused /health endpoint from FastAPI example

* test: update snapshot

---------

Co-authored-by: Hanzo Dev <[email protected]>
2025-11-23 07:54:54 -07:00
092b81dff2 refactor: replace HasMatch with HasFile for specific file paths (#347)
Replace fuzzy matching (HasMatch) with exact file path checks (HasFile)
in all providers where specific files are being checked. This prevents
false positives from glob pattern matching when checking for specific
file names.

Changes:
- PHP provider: index.php, composer.json, artisan
- Go provider: main.go, go.mod, go.work, go.sum, go.work.sum
- Ruby provider: Gemfile, rails, bin/rails, config/environment.rb,
  config.ru, Rakefile
- Node providers: package.json, lock files, config files for Vite,
  Astro, Angular, React Router
- Python providers: main.py, requirements.txt, pyproject.toml, Pipfile,
  poetry.lock, pdm.lock, uv.lock, manage.py
- Rust provider: Cargo.toml, src/main.rs, src/lib.rs
- Elixir provider: mix.exs
- Deno provider: deno.json, deno.jsonc, main.ts/js/mjs/mts
- Java providers: gradlew, mvnw, gradle/maven wrapper properties
- Staticfile provider: index.html, Staticfile config
- Core: template.go and mise_step_builder.go

Directory checks (e.g. src/bin, node_modules, public, script) continue
to use HasMatch as they need pattern/directory matching.

Co-authored-by: Hanzo Dev <[email protected]>
2025-11-23 07:49:16 -07:00
ac447bc76f fix: detect psycopg3 and add required apt packages (#350)
* feat: add psycopg (psycopg3) to postgres dependency detection

Added psycopg to the list of Python dependencies that trigger installation
of PostgreSQL libraries (libpq-dev for build, libpq5 for runtime).

While psycopg[binary] includes a bundled libpq, the base psycopg package
and psycopg[c] both require system libpq. Since we cannot determine which
variant is being used from dependency files, we conservatively install
libpq when any psycopg dependency is detected.

Also added integration test example for psycopg3 to verify the dependency
detection works correctly.

* chore: add tmp/ to .gitignore

* test: enhance psycopg3 example to test actual database connectivity

Updated the python-psycopg3 example to:
- Connect to a real PostgreSQL database
- Execute test queries to verify connectivity
- Use docker-compose.yml to provide postgres service for integration tests
- Assert on multiple output strings to verify full connection lifecycle

This provides a comprehensive test that psycopg can successfully use
the system libpq libraries to connect to and query PostgreSQL.

* test: upgrade psycopg3 example to Python 3.14 and assert major version

Updated the python-psycopg3 example to:
- Use Python 3.14 (latest stable release)
- Specify psycopg>=3.2,<4.0 to ensure psycopg3 is used
- Add runtime check that verifies psycopg major version is 3
- Update test assertion to match new output message

This ensures the test explicitly validates we're using psycopg3 (not
psycopg2) and tests compatibility with the latest Python version.

* refactor: convert python-psycopg3 example to use uv and latest Python

- Changed .python-version from 3.14 to "latest"
- Converted from pip to uv package manager
- Created pyproject.toml with psycopg>=3.2,<4.0 dependency
- Generated uv.lock for reproducible builds
- Removed requirements.txt
- Reverted .gitignore changes (removed tmp/)

* test: update snapshot

---------

Co-authored-by: Hanzo Dev <[email protected]>
2025-11-20 15:38:37 -07:00
Michael BiancoandGitHub 269d29f774 fix: allow node_modules removal in build phase (#259)
* test: test install in build phase

* fix: detect node_modules removal and avoid caching node_modules/.cache

* test: add new snapshot

* build: adding go debugging tool and helper task

* refactor: node_modules detection is working

* test: test install in build phase

* refactor: pull plan cleansing into a separate file

* refactor: ai cleanup

* refactor: move cleanse to the provider level, stubs for all providers

* refactor: move existing node cleanse logic to a provider-specific implementation

* test: snapshot update

* docs: why we need node cleanse operation

* docs: note on corepack

* docs: on cache handling of node_modules
2025-11-18 10:52:48 -07:00
Michael BiancoandGitHub cffe6f8ccb feat: mise idiomatic file parsing (#344)
* test: update snapshots

* feat: use mise parse idiomatic .python-version{s} file
2025-11-12 17:03:37 -07:00
c1252f9e52 feat: set pipx.uvx = true when pipx backend is used in Python provider (#324)
* feat: set pipx.uvx = true when pipx backend is used in Python provider

Add support for mise settings configuration and set pipx.uvx = true
when using pipx in the Python provider. This configures pipx to use
uvx as the backend, as documented at:
https://mise.jdx.dev/dev-tools/backends/pipx.html

Changes:
- Add Settings field to MiseConfig struct to support mise settings
- Update GenerateMiseToml to accept and write settings to TOML
- Add Settings map to MiseStepBuilder
- Set pipx.uvx = true in Python provider when pipx is used

* fix: move to ENV vs config

* test: snapshot update

* fix: remove mise settings completely

* docs: notes on tmp/ and ENV

---------

Co-authored-by: Hanzo Dev <[email protected]>
2025-11-11 11:56:14 -07:00
Jake RunzerandGitHub 30cb74c79c fix: disable Python compilation to avoid package incompatibility issues (#301)
* fix: disable Python compilation to avoid package incompatibility issues

* update python compile settings
2025-10-23 21:26:35 -04:00
Michael BiancoandGitHub b6c915006b fix: use default mise backend for uv (#260)
* fix: use default mise backends for python package management when possible

* test: snapshot update
2025-10-18 10:21:17 -06:00
Michael BiancoandGitHub 4cf15bc783 feat: use py package versions from any mise-supported version specification file (#261)
* test: add .tool-versions test

* feat: extract locally defined mise package versions

* test: .tool-versions unit tests

* docs: integration tests docs

* build: local mise config for less annoying warnings

* feat: pull python ecosystem versions from mise

* feat: internal support for extracting mise-specified package versions from app folder

* refactor: move mise package version methods into context

* test: snapshots

* test: multiple test.json expectation lines

this is using newly implemented multiple expectations syntax

* test: support multiple expectations per test.json entry, don't use additional non-deterministic contains to throw an error

* refactor: refine mise interface

* refactor: make mise versions easier for a provider to use

* test: snapshot update

* refactor: move mise local package logic to step builder

* test: move mise package version extraction to mise step builder tests

* refactor: move mise package into mise step builder
2025-10-01 07:14:27 -06:00
24f0a773d8 feat: dockerignore support (#263)
* test: dockerignore test project

* docs: claude.md update

* feat: parse dockerignore files

* fixup! feat: parse dockerignore files

* feat: use revised local layer

* feat: parse dockerfiles and pass includes/excludes to the local layer

* test: snapshot

* refactor: ai cleanup

* test: dockerignore parsing tests

* refactor: remove obvious comment

* test: dockerignore failure tests

* Apply suggestion from @coffee-cup

Co-authored-by: Jake Runzer <[email protected]>

* Apply suggestion from @coffee-cup

Co-authored-by: Jake Runzer <[email protected]>

* docs: always use App for fs ops

* refactor: pass App to dockerignore context instead of a path to the repo

* test: pass app to dockerignore

---------

Co-authored-by: Jake Runzer <[email protected]>
2025-09-24 16:11:40 -06:00
Jake RunzerandGitHub 6c1823f3e6 Update default versions for Go, Python, Ruby, and Rust providers (#267)
* update provider default versions

* update golang test
2025-09-16 16:53:26 -04:00
Michael BiancoandGitHub 08a32ea8cc fix: remove python3-dev apt package (#256)
* fix: remove python build packages

mise uses precompiled versions of python, so this shouldn't be needed

* test: snapshot update
2025-09-15 18:44:59 -06:00
Jake RunzerandGitHub 3b5ab60b7e Revert "fix: use default mise backends for python packages (#249)" (#252)
This reverts commit f15960d2f7.
2025-09-04 22:44:10 -04:00
Michael BiancoandGitHub f15960d2f7 fix: use default mise backends for python packages (#249)
* fix: use mise default backends for uv and other package manager installs

* test: update snapshots
2025-09-03 16:17:12 -06:00
Michael BiancoandGitHub 5af5eb5161 refactor: use consistent local layers entrypoint (#241)
* fix: show-plan not showing json output

regression from $schema addition

* refactor: all providers using a consistent local layer entrypoint

* refactor: add local filesystem through a consistent entrypoint

* fix: improved error message on invalid firstInput

* test: remove path argument from NewLocalLayer test

* test: failing workspace example with uv

* test: passing workspace example

* feat: detect uv workspaces

* test: add packaged uv example

* test: snapshot update
2025-09-03 10:39:48 -06:00
Jake RunzerandGitHub 43229e0c14 Use pipx:package pattern for Python package managers (#186)
* Use pipx:package pattern for Python package managers in mise

Install Python package managers (poetry, pdm, uv, pipenv) using the
pipx:package pattern through mise instead of separate pipx install commands.
This approach is more efficient and consistent.

* update python snapshots
2025-06-24 17:14:24 -04:00
Jake RunzerandGitHub 1e6c3535d9 support pycairo (#178)
* support pycairo

* merge pycairo example with system deps
2025-06-13 19:13:29 -04:00
Jake RunzerandGitHub 93951b63ec prefer python_full_version in Pipfile (#142)
* prefer `python_full_version` in `Pipfile`

* update php snapshot
2025-04-21 14:46:10 -04:00
Jake RunzerandGitHub a1b23c76b0 fix poetry env (#136) 2025-04-01 17:29:45 -04:00
Jake RunzerandGitHub 0a5fe7f6ad [Python] copy all files to build context if necessary (#135)
* [Python] copy all files to build context if necessary

* update snapshot tests
2025-04-01 15:38:32 -04:00
Jake RunzerandGitHub d8f31b4589 Custom config step deploy outputs (#118)
* rename plan inputs to layers and use deploy base layer

* runtime deps installed

* step builders can create multiple steps

* support config step deploy outputs

* optimize when we merge vs copy layers

* update snapshots

* validate the deploy layers

* fix tests

* dont add mise if no packages

* fix pruning for php

* update layer merging and snapshot tests

* dont include mise commands or variables if no packages

* update docs

* update snapshots and normalization

* add guide for adding custom steps

* support .node-version file

* fix compile errors

* update snapshot tests
2025-04-01 13:33:30 -04:00
Jake Runzer 208284f1a4 support python app.py and bot.py 2025-03-13 20:59:43 -04:00
Jake Runzer f5f2ece51a store python install artifcats on separate layer 2025-03-11 16:47:19 -04:00
Jake Runzer 464cad4d09 move utils to internal 2025-03-10 19:05:21 -04:00
Jake Runzer e250e55749 optimize providers for merging states 2025-03-08 14:03:32 -05:00
Jake Runzer be3cf8f6db add pipx bin dir to path before installing 2025-03-07 18:33:46 -05:00
Jake Runzer dbb5b897a9 parse semver version from text 2025-03-07 18:32:09 -05:00
Jake Runzer 5bb084e8f3 update snapshots 2025-03-07 17:36:52 -05:00
Jake Runzer 60fb412dc3 install mysql client python runtime 2025-03-07 17:34:46 -05:00
Jake Runzer 46a3de71bf fix poetry virtual env 2025-03-07 13:41:34 -05:00
Jake RunzerandGitHub 039c26c07e Merge pull request #79 from railwayapp/jr/python-fasthtml-flask-ootb-support
support for fasthtml and flask
2025-03-07 02:14:37 -05:00
Jake Runzer 10e3509a22 support for fasthtml and flask 2025-03-07 01:49:26 -05:00
Jake RunzerandGitHub 667d491ba7 Merge branch 'main' into jr/default-python-3.11 2025-03-07 01:23:14 -05:00
Jake Runzer 588b2f1231 default to python 3.11 for compatability 2025-03-07 00:33:59 -05:00
Jake Runzer f902eb48a1 remove commented out code 2025-03-07 00:33:07 -05:00
Jake Runzer 18a34613d7 use a virtual env for pip installs 2025-03-07 00:28:20 -05:00
Jake Runzer 4af1477f14 append global python-packages/bin path for pip 2025-03-04 22:52:30 -05:00