github pyinfra-dev/pyinfra v3.9.0

latest releases: v3.9.2, v3.9.1
6 hours ago

Another big release with a lot of fixes and improvements across the board - thank you to all contributors! This release also comes alongside completely refreshed documentation site, with a huge number of UX and copy improvements and a shiny new marketing site.

Core:

Operations/facts:

  • operations.dnf: add support for DNF modules (#1660) (@yagarea)
  • operations.git: chown worktree metadata in source repo (#1710) (@wowi42)
  • operations.files: add extended_regex option to line and replace (#1714) (@case)
  • operations.server: pre-check shadow tools in user op (#1707) (@wowi42)
  • operations.docker.volume: use docker volume rm to delete volumes (#1741) (@wowi42)
  • operations.apt: add sources_file operation (#1597) (@maisim)
  • operations.crontab: detect change of crontab entry with only special time (#1722) (@sebastiaanhoogeveen)
  • operations: handle output from the 'uutils' version of stat (eg. recent Ubuntu) (#1733) (@egnor)
  • operations.server: handle OpenBSD useradd properly (#1739) (@epicrazzmatazz)
  • facts.server: add EtcHosts, Last, Lastb, LoadAverage facts + server.etc_hosts op (#1669) (@wowi42)
  • facts.iptables: requires_command() error in when table specified (#1730) (@doug-fitzmaurice-rowden)
  • operations: handle password prompt from sudo-rs (eg. recent Ubuntu) (#1734) (@egnor)
  • facts: add AptPackages fact (#1740) (@mvanhorn)
  • operations.files: handle large download cache time (#1774) (@puneetdixit200)
  • facts.openrc: make OpenrcStatus match service names containing a dot (#1777) (@chimekkoo)
  • operations.python: correct type on exception argument
  • facts.util.packages: add PackageInfo model (phase 1 of #1725) (#1726) (@wowi42)
  • operations.files: shell-quote files.block content (#1759) (@wowi42)
  • operations.util.files: normalize octal mode spellings in ensure_mode_int (#1786) (@mvanhorn)
  • operations.gpg.key: use _matches_keyid for full-fingerprint idempotency check (#1718) (@maisim)

Connectors:

  • connectors.util: honour _temp_dir in askpass helpers (#1666) (@wowi42)
  • connectors.ssh: auto-load OpenSSH user certificates from ssh_config (#1750) (@wowi42)

CLI:

  • cli: add --use-sudo-login option (#1728) (@wucm667)
  • cli: keep trying module candidates when attribute is missing (#1748) (@wowi42)
  • cli: add --json flag for pure JSON stdout output (#1662) (@wowi42)

Docs/meta:

  • AGENTS: codify recurring PR review feedback as rules (#1700) (@wowi42)
  • style: extend linting with modern Python syntax checks (#1721) (@DonDebonair)
  • test: fix apt.packages update_cached fixture for non-UTC contributors (#1716) (@case)
  • docs: add contributing setup for editable module (#1755) (@evilham)
  • docs: Add missing apostrophes (#1761) (@blinskey)
  • docs: remove stray 'LINK' in chmod/chown FAQ entry (#1762) (#1765) (@mvanhorn)
  • docs: warn that _if must be a callable (#1771) (@wowi42)
  • docs: restore loop cycle error guidance (#1767) (@puneetdixit200)
  • docs: clarify fact-failure semantics for requires_command and check_preconditions (#1770) (@wowi42)
  • docs: correct python.raise_exception example (#1772) (@puneetdixit200)
  • docs: add BSD platform-specific instructions (#1754) (@evilham)
  • docs: convert docs to use zensical (#1713)
  • docs: add darkreader-lock
  • docs: remove redundant css and drop google fonts dependency
  • ci: update changelog generation

Other:

Don't miss a new pyinfra release

NewReleases is sending notifications on new releases.