The python modules are divided into 'package groups' which are in turn divided into 'packages'.
The package group and package is pre-pended to the name of each module, this naming convention enforces explicit imports when re-using code and disallows wide import statements like 'import abd'.
This naming convention also promotes the use of fully-qualified names in code so that it's easy to predict which module a sybmol comes from.
To simplify imports, all the Python source for each package group is in the same directory; this may be revisited as the source base grows. Since the name of each module is unique, there is no danger of name collision.
These are the top-level package groups:
abd
- Arcyd Branch Daemon implementation (may rename this toarc
later)aon
- Arcyon implementationphl
- code which can be considered re-usable as a 'PHabricator Library'.pig
- Phab-ping implementation
The abd package group is divided into packages like so:
abdcmd
- implementation of Arcyd subcommandsabdcmnt
- format and submit event-related comments to Differential reviewsabdi
- high-level Arcyd implementation detailsabdmail
- format and send event-related emails to peopleabdt
- shared types, conventions and tools
The aon package group is divided into packages like so:
aoncmd
- implementation of Arcyon subcommandsaont
- shared types, conventions and tools
The phl package group is divided into packages like so:
phlcon
- thin wrappers around Phabricator Conduit APIsphldef
- predefined data and constantsphlgit
- thin wrappers around Git subcommandsphlgitu
- high-level Git utilitiesphlsys
- wrappers around interaction with the operating system