Skip to content
Daniel Mach edited this page Dec 9, 2025 · 7 revisions

OSC Roadmap

There is currently no timeline, this page only explains the overall direction of the project.

Constraints

  • Keep in mind that the minimal supported Python version is 3.6 (this may change in the future versions of osc)

Library

  • Split osc.core into smaller modules.

    • connection for anything related to HTTP(S) and URLs
    • obs_api for anything that communicates with OBS API
    • obs_scm for anything that handles OBS SCM checkouts
    • util for anything generic
  • Replace any code that uses ElementTree with an objects that manages the XML.

  • Consider moving from custom BaseModel and XmlModel to pydantic v2 once (and if) possible.

  • Replace osc.OscConfigParser if there's a config parser preserving comments.

  • Consider merging CredentialsManagerDescriptor classes into their CredentialsManager counterparts.

Commands

  • Split osc.commandline to osc.commands, one module per command.
  • Generate shell completion with argcomplete
  • Figure out how to deal with project/package vs project package arguments, make sure completion works for them. Argparse processes all arguments at once, has no callback that would allow us to split args and inject them back to the yet unparsed args.

Coding style, sanity

  • Follow PEP 8.
  • Use black for any new code - but only where it makes sense.
  • Use type hints in all function/method declarations.
  • Reduce as many mypy errors as possible.
  • Reduce as many pylint warnings as possible.

The next major release (brainstorming, no exact plans yet)

  • python 3.13+
  • get rid of decode_it() and anything related to migration from python2
  • split commandline.py to individual commands
    • unified arguments (e.g. prj/pac - remove the current ambiguity)
    • argcomplete
    • consider an alternative argument parser - argparse is slow when loading 100+ commands (includes subcommands)
  • probably wait until git-obs (and git workflow) are stabilized so we don't maintain it in 2 code bases

Developer information

End user information

Clone this wiki locally