Requirements management using version control.
STATUS: As of the 1.0 release, this project is no longer under active development. I still plan on accepting any passing pull requests to become part of future 2.x releases.
Doorstop manages the storage of textual requirements alongside source code in version control.
- Python 3.3+
- A version control system for requirements storage
Doorstop can be installed with pip:
$ pip install doorstop
or directly from source:
$ git clone https://github.com/jacebrowning/doorstop.git $ cd doorstop $ python setup.py install
After installation, Doorstop is available on the command-line:
$ doorstop --help
And the package is available under the name ‘doorstop’:
$ python >>> import doorstop >>> doorstop.__version__
Switch to an existing version control working directory, or create one:
$ git init .
Create a document
Create a new parent requirements document:
$ doorstop create SRD ./reqs/srd
Add a few items to that document:
$ doorstop add SRD $ doorstop add SRD $ doorstop add SRD
Run integrity checks on the document tree:
Publish the documents as HTML:
$ doorstop publish all ./public
- Moved the documentation to ReadTheDocs.
- Fixed a bug checking levels across inactive items.
- Added error message for all IO errors.
- Added ‘–skip’ options to disable documents during validation.
- Added Mercurial support. (credit: @tjasz)
- Restrict openpyxl < 2.2 (there appears to be a breaking change).
- Fixed a bug running VCS commands in subdirectories.
- Excluded openpyxl == 2.1.0 as a dependency version.
- Limit the maximum version of openpyxl to 2.1.0 due to deprecation bug.
- Fixed a bug requesting new item numbers from the server.
- Added doorstop clear ... to absolve items of their suspect link status.
- Added doorstop review ... to absolve items of their unreviewed status.
- Added Item.clear() to save stamps (hashes) of linked items.
- Added Item.review() to save stamps (hashes) of reviewed items.
- Added doorstop reorder ... to organize a document’s structure.
- Renamed Item.id and identifer arguments to uid
- Added ‘–no-body-levels’ to doorstop publish to hide levels on non-headings.
- Added doorstop-server to launch a REST API for UID reservation.
- Added ‘–server’ argument to doorstop add to specify the server address.
- Added ‘–warn-all’ and ‘–error-all’ options promote warnings to errors.
- Fixed bug importing items with empty attributes.
- Added doorstop delete ... to delete document directories.
- Added doorstop export ... to export content for external tools.
- Fixed doorstop publish ... handling of unknown formats.
- Added tree structure and traceability to index.html.
- Added clickable links using Item IDs in HTML header tags.
- Fixed bug publishing a document to a directory.
- Fixed bug publishing a document without an extension or type specified.
- Updated doorstop import ... to import from document export formats.
- Updated doorstop edit ... to support document export/import.
- Renamed doorstop new ... to doorstop create ....
- Made ‘all’ a reserved word, which cannot be used as a prefix.
- Refactored Item levels into a Level class.
- Refactored Item identifiers into an ID class.
- Refactored Item text into a Text class (behaves like str).
- Methods no longer require nor accept ‘document’ and ‘tree’ arguments.
- Renamed Item.find_rlinks() to Item.find_child_links().
- Changed ‘–no-rlink-check’ to ‘–no-child-check’.
- Added Item.find_child_items() and Item.find_child_documents().
- Added aliases to Item: parent_links, child_links/items/documents.
- Added ‘–with-child-links’ to doorstop publish to publish child links.
- Added doorstop import ... CLI to import documents and items.
- Refactored Document prefixes in a Prefix class.
- Added ‘–no-level-check’ to disable document level validation.
- Added ‘–reorder’ option to doorstop to enable reordering.
- Converted Item.issues() to a property and added Item.get_issues().
- Added ‘–level’ option to doorstop add to force an item level.
- Added warnings for duplicate item levels in a document.
- Added warnings for skipped item levels in a document.
- Renamed Item methods: add_link -> link, remove_link -> unlink, valid -> validate.
- Renamed Document methods: add -> add_item, remove -> remove_item, valid -> validate.
- Renamed Tree methods: new -> new_document, add -> add_item, remove -> remove_item, link -> link_items, unlink -> unlink_items, edit -> edit_item, valid -> validate.
- Added doorstop.importer functions to add exiting documents and items.
- Fixed storage of 2-part levels ending in a multiple of 10.
- Fixed a case where Item.root was not set.
- Fixed auto save/load decorator order.
- Added Tree.delete() to delete all document directories and item files.
- Added doorstop publish all <directory> to publish trees and index.html.
- Added find_document and find_item convenience functions.
- Added Document.delete() to delete a document directory and its item files.
- All Item text attributes are now be split by sentences and line-wrapped.
- Added Tree.load() for cases when lazy loading is too slow.
- Added caching to Tree.find_item() and Tree.find_document().
- Top-level items are no longer required to have a level ending in zero.
- Added Item/Document.extended to get a list of extended attribute names.
- Documents can now have item files in sub-folders.
- Updated doorstop.core.report to support lists of items.
- Updated doorstop.core.report to support items or documents.
- Removed the ‘iter_’ prefix from all generators.
- Fixed CSS bullets indent.
- Added caching of Item in the Document class.
- Added Document.remove() to delete an item by its ID.
- Item.find_rlinks() will now search the entire tree for links.
- Added Item.find_rlinks() to return reverse links and child documents.
- Changed the logging format.
- Added a ‘–project’ argument to provide a path to the root of the project.
- Fixed a mutable default argument bug in Item creation.
- Added Tree/Document/Item.iter_issues() method to yield all issues.
- Tree/Document/Item.check() now logs all issues rather than failing fast.
- Renamed Tree/Document/Item.check() to valid().
- Added Document.sep to separate prefix and item numbers.
- Fixed missing package data.
- Added Item.active property to disable certain items.
- Added Item.derived property to disable link checking on certain items.
- Switched to embedded CSS in generated HTML.
- Shortened default Item and Document string formatting.
- Added top-down link checking.
- Non-normative items with a zero-ended level are now headings.
- Added a CSS for generated HTML.
- The ‘publish’ command now accepts an output file path.
- Searching for ‘ref’ will now also find filenames.
- Item files can now contain arbitrary fields.
- Document prefixes can now contain numbers, dashes, and periods.
- Added a ‘normative’ attribute to the Item class.
- Always showing ‘ref’ in items.
- Reloading item attributes after a save.
- Inserting lines breaks after sentences in item ‘text’.
- Added basic report creation via doorstop publish ....
- Added item link and reference validation.
- Added cached of loaded items.
- Added preliminary VCS support for Git and Veracity.
- Implemented add, remove, link, and unlink commands.
- Added basic tree validation.
- Added the initial Document class.
- Items can now be ordered by ‘level’ in a document.
- Initial tutorial created.
- Changed doorstop init to doorstop new.
- Added the initial Item class.
- Added stubs for the Document class.
- Initial release of Doorstop.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|File Name & Checksum SHA256 Checksum Help||Version||File Type||Upload Date|
|Doorstop-1.0.1.post1-py3-none-any.whl (126.6 kB) Copy SHA256 Checksum SHA256||3.5||Wheel||Jun 8, 2016|
|Doorstop-1.0.1.post1.tar.gz (109.3 kB) Copy SHA256 Checksum SHA256||–||Source||Jun 8, 2016|