Skip to content

Julia

Categories: julia

Renovate supports updating Julia dependencies.

File Matching

By default, Renovate will check any files matching the following regular expression: /(^|/)(Julia)?Project\.toml$/.

For details on how to extend a manager's managerFilePatterns value, please follow this link.

Supported datasources

This manager supports extracting the following datasources: julia-general-metadata.

Dependency types

This manager extracts the following depType values:

depType Description
deps A [compat] entry for a package in [deps]
weakdeps A [compat] entry for a package in [weakdeps], which extensions load
test A [compat] entry for a package in [extras] that [targets] lists for test
build A [compat] entry for a package in [extras] that [targets] lists for build only
extras A [compat] entry for a package in [extras] that no target lists
compat A [compat] entry for a package that no section lists

Default config

{
  "managerFilePatterns": [
    "/(^|/)(Julia)?Project\\.toml$/"
  ]
}

Additional Information

Extracts the [compat] entries of Julia Project.toml and JuliaProject.toml files, and looks each package up in the General registry with the julia-general-metadata datasource and julia versioning.

The manager skips:

  • the julia entry, which constrains the Julia version itself. Raising its lower bound drops support for older Julia versions, which is the maintainer's decision.
  • the standard libraries that ship only with Julia, such as LinearAlgebra and Test, because General has no versions for them. The list is fixed: if one of them is added to General later, the manager keeps skipping it until the list is updated.
  • a package that [sources] takes from a git repository or a local path.

A package's UUID comes from [deps], [weakdeps] or [extras]. With the UUID, a package from another registry that has the name of a General package gets no updates. Its lookup fails on every run, as does the lookup of a package that is not in General. To skip such packages, disable them with packageRules:

{
  "packageRules": [
    {
      "matchManagers": ["julia"],
      "matchDepNames": ["MyPrivatePackage"],
      "enabled": false
    }
  ]
}

A package's depType is the section that lists it, deps, weakdeps or extras, or for a package in [extras], the target that [targets] lists it for, test or build. So matchDepTypes targets the test dependencies in [targets], and matchFileNames those in a test/Project.toml, which are deps of that file. For example, to group the updates of test dependencies:

{
  "packageRules": [
    {
      "matchManagers": ["julia"],
      "matchDepTypes": ["test"],
      "groupName": "test dependencies"
    },
    {
      "matchManagers": ["julia"],
      "matchFileNames": ["**/test/Project.toml"],
      "groupName": "test dependencies"
    }
  ]
}

The default rangeStrategy is widen, which adds a specifier for the new release, as CompatHelper and dependabot do: "0.10, 0.11" with 0.12.1 becomes "0.10, 0.11, 0.12".

The manager updates Project.toml only, not Manifest.toml.