├── .gitignore ├── Makefile ├── build ├── doctrees │ ├── environment.pickle │ ├── index.doctree │ └── pages │ │ ├── code_style.doctree │ │ ├── contributing.doctree │ │ ├── naming_convention.doctree │ │ └── project_file_structure.doctree └── html │ ├── .buildinfo │ ├── _sources │ ├── index.txt │ └── pages │ │ ├── code_style.txt │ │ ├── contributing.txt │ │ ├── naming_convention.txt │ │ └── project_file_structure.txt │ ├── _static │ ├── ajax-loader.gif │ ├── basic.css │ ├── comment-bright.png │ ├── comment-close.png │ ├── comment.png │ ├── default.css │ ├── doctools.js │ ├── down-pressed.png │ ├── down.png │ ├── file.png │ ├── jquery.js │ ├── minus.png │ ├── plus.png │ ├── pygments.css │ ├── rtd.css │ ├── rtd.css~ │ ├── searchtools.js │ ├── sidebar.js │ ├── underscore.js │ ├── up-pressed.png │ ├── up.png │ └── websupport.js │ ├── genindex.html │ ├── index.html │ ├── objects.inv │ ├── pages │ ├── code_style.html │ ├── contributing.html │ ├── naming_convention.html │ └── project_file_structure.html │ ├── search.html │ └── searchindex.js ├── make.bat └── source ├── _static ├── rtd.css └── rtd.css~ ├── _templates ├── layout.html └── layout.html~ ├── conf.py ├── conf.py~ ├── index.rst ├── index.rst~ ├── layout.html ├── naming_convention.rst~ └── pages ├── code_style.rst ├── contributing.rst ├── naming_convention.rst ├── naming_convention.rst~ ├── project_file_structure.rst ├── project_file_structure.rst~ ├── vcs_conventions~ └── vcs_convention~ /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by http://www.gitignore.io 2 | 3 | ### Intellij ### 4 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm 5 | 6 | ## Directory-based project format 7 | .idea/ 8 | # if you remove the above rule, at least ignore user-specific stuff: 9 | # .idea/workspace.xml 10 | # .idea/tasks.xml 11 | # and these sensitive or high-churn files: 12 | # .idea/dataSources.ids 13 | # .idea/dataSources.xml 14 | # .idea/sqlDataSources.xml 15 | # .idea/dynamic.xml 16 | 17 | ## File-based project format 18 | *.ipr 19 | *.iws 20 | *.iml 21 | 22 | ## Additional for IntelliJ 23 | out/ 24 | 25 | # generated by mpeltonen/sbt-idea plugin 26 | .idea_modules/ 27 | 28 | # generated by JIRA plugin 29 | atlassian-ide-plugin.xml 30 | 31 | # generated by Crashlytics plugin (for Android Studio and Intellij) 32 | com_crashlytics_export_strings.xml 33 | 34 | 35 | ### Linux ### 36 | *~ 37 | 38 | # KDE directory preferences 39 | .directory -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = build 9 | 10 | # User-friendly check for sphinx-build 11 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) 12 | $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) 13 | endif 14 | 15 | # Internal variables. 16 | PAPEROPT_a4 = -D latex_paper_size=a4 17 | PAPEROPT_letter = -D latex_paper_size=letter 18 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 19 | # the i18n builder cannot share the environment and doctrees with the others 20 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 21 | 22 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext 23 | 24 | help: 25 | @echo "Please use \`make ' where is one of" 26 | @echo " html to make standalone HTML files" 27 | @echo " dirhtml to make HTML files named index.html in directories" 28 | @echo " singlehtml to make a single large HTML file" 29 | @echo " pickle to make pickle files" 30 | @echo " json to make JSON files" 31 | @echo " htmlhelp to make HTML files and a HTML help project" 32 | @echo " qthelp to make HTML files and a qthelp project" 33 | @echo " devhelp to make HTML files and a Devhelp project" 34 | @echo " epub to make an epub" 35 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 36 | @echo " latexpdf to make LaTeX files and run them through pdflatex" 37 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" 38 | @echo " text to make text files" 39 | @echo " man to make manual pages" 40 | @echo " texinfo to make Texinfo files" 41 | @echo " info to make Texinfo files and run them through makeinfo" 42 | @echo " gettext to make PO message catalogs" 43 | @echo " changes to make an overview of all changed/added/deprecated items" 44 | @echo " xml to make Docutils-native XML files" 45 | @echo " pseudoxml to make pseudoxml-XML files for display purposes" 46 | @echo " linkcheck to check all external links for integrity" 47 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 48 | 49 | clean: 50 | rm -rf $(BUILDDIR)/* 51 | 52 | html: 53 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 54 | @echo 55 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 56 | 57 | dirhtml: 58 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 59 | @echo 60 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 61 | 62 | singlehtml: 63 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml 64 | @echo 65 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." 66 | 67 | pickle: 68 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 69 | @echo 70 | @echo "Build finished; now you can process the pickle files." 71 | 72 | json: 73 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 74 | @echo 75 | @echo "Build finished; now you can process the JSON files." 76 | 77 | htmlhelp: 78 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 79 | @echo 80 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 81 | ".hhp project file in $(BUILDDIR)/htmlhelp." 82 | 83 | qthelp: 84 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp 85 | @echo 86 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ 87 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" 88 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/CodingConvention.qhcp" 89 | @echo "To view the help file:" 90 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/CodingConvention.qhc" 91 | 92 | devhelp: 93 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp 94 | @echo 95 | @echo "Build finished." 96 | @echo "To view the help file:" 97 | @echo "# mkdir -p $$HOME/.local/share/devhelp/CodingConvention" 98 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/CodingConvention" 99 | @echo "# devhelp" 100 | 101 | epub: 102 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub 103 | @echo 104 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." 105 | 106 | latex: 107 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 108 | @echo 109 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 110 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ 111 | "(use \`make latexpdf' here to do that automatically)." 112 | 113 | latexpdf: 114 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 115 | @echo "Running LaTeX files through pdflatex..." 116 | $(MAKE) -C $(BUILDDIR)/latex all-pdf 117 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 118 | 119 | latexpdfja: 120 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 121 | @echo "Running LaTeX files through platex and dvipdfmx..." 122 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja 123 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 124 | 125 | text: 126 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text 127 | @echo 128 | @echo "Build finished. The text files are in $(BUILDDIR)/text." 129 | 130 | man: 131 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man 132 | @echo 133 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." 134 | 135 | texinfo: 136 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 137 | @echo 138 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." 139 | @echo "Run \`make' in that directory to run these through makeinfo" \ 140 | "(use \`make info' here to do that automatically)." 141 | 142 | info: 143 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 144 | @echo "Running Texinfo files through makeinfo..." 145 | make -C $(BUILDDIR)/texinfo info 146 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." 147 | 148 | gettext: 149 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale 150 | @echo 151 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." 152 | 153 | changes: 154 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 155 | @echo 156 | @echo "The overview file is in $(BUILDDIR)/changes." 157 | 158 | linkcheck: 159 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 160 | @echo 161 | @echo "Link check complete; look for any errors in the above output " \ 162 | "or in $(BUILDDIR)/linkcheck/output.txt." 163 | 164 | doctest: 165 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 166 | @echo "Testing of doctests in the sources finished, look at the " \ 167 | "results in $(BUILDDIR)/doctest/output.txt." 168 | 169 | xml: 170 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml 171 | @echo 172 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml." 173 | 174 | pseudoxml: 175 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml 176 | @echo 177 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." 178 | -------------------------------------------------------------------------------- /build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/doctrees/environment.pickle -------------------------------------------------------------------------------- /build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/doctrees/index.doctree -------------------------------------------------------------------------------- /build/doctrees/pages/code_style.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/doctrees/pages/code_style.doctree -------------------------------------------------------------------------------- /build/doctrees/pages/contributing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/doctrees/pages/contributing.doctree -------------------------------------------------------------------------------- /build/doctrees/pages/naming_convention.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/doctrees/pages/naming_convention.doctree -------------------------------------------------------------------------------- /build/doctrees/pages/project_file_structure.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/doctrees/pages/project_file_structure.doctree -------------------------------------------------------------------------------- /build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: a551cff8155a086896a1685b3d0df61c 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /build/html/_sources/index.txt: -------------------------------------------------------------------------------- 1 | .. CodingConvention documentation master file, created by 2 | sphinx-quickstart on Wed May 21 21:31:34 2014. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | 7 | 8 | 9 | 10 | 11 | Python Coding Conventions 12 | ============================================ 13 | 14 | This convention guide serves to establish consistency and readability in our python projects. Like all convention guides, this one is imperfect and in some cases, the convention might be at odds with backwards compatibility or code readability. In these cases, the convention should be abandoned. Readability is more important than strict adherence to the guidelines. 15 | 16 | This guide is based on PEP8. If information is found to be lacking here, go with what PEP8 says, and notify me at AnthonyReid99@gmail.com to update the guide. 17 | 18 | :doc:`pages/project_file_structure` 19 | 20 | :doc:`pages/naming_convention` 21 | 22 | :doc:`pages/contributing` 23 | 24 | :doc:`pages/code_style` 25 | -------------------------------------------------------------------------------- /build/html/_sources/pages/code_style.txt: -------------------------------------------------------------------------------- 1 | .. _code_style: 2 | 3 | =============================== 4 | Python Coding Style Conventions 5 | =============================== 6 | 7 | 1. Whitespace 8 | ============= 9 | 10 | 1.1. Indentation 11 | ---------------- 12 | 13 | * Lines should be indented with a multiple of 4 spaces depending on indent level 14 | * Hanging indents, code that is a continuation of the line above, should be indented to the next level 15 | * Use spaces exclusively, no tabs! 16 | 17 | 1.2. Blank Lines 18 | ---------------- 19 | 20 | * Leave 2 blank lines between class definitions and module-level functions 21 | * Leave 1 blank line between methods in a class 22 | * Use blank lines as needed in functions, methods, and modules to visually split up logical blocks of code 23 | 24 | 1.3. Spaces In Code 25 | ------------------- 26 | 27 | * Surround binary operators with a space on each side 28 | * Do not include spaces around '=' when used to indicate a default argument or keyword argument 29 | * In all other cases, extraneous spaces are frowned upon 30 | 31 | 2. Imports 32 | ========== 33 | 34 | * Imports should occur at the top of the module, after any module docstring 35 | * Standard imports (those beginning with "import") should each be on a separate line. Do not combine imports into one line. 36 | * "From ... import ..."-style imports may be combined together on one line if possible 37 | * Wildcard imports should only be used when absolutely necessary, otherwise only import the modules to be used 38 | 39 | 3. Code Blocks 40 | ============== 41 | 42 | * Do not use parenthesis in the condition for a code block header unless it would be otherwise appropriate to use parenthesis around that condition 43 | * Do not use any single line code blocks. Even those with a single statement in the body should occupy multiple lines 44 | 45 | 46 | 4. Comments 47 | =========== 48 | 49 | * First and foremost, comments should be up to date and accurate. When updating code, always make sure to update any comments that refer to it 50 | * Comments should be wrapped to 72 characters 51 | * Use plain English sentences with proper spelling and grammar. Strongly prefer complete sentences. 52 | * Single sentence comments need not end in a period 53 | * Clever humor is acceptable on occasion 54 | * Do not merely summarize the code that follows. State its overall purpose, justify its inclusion, or explain quirks that other programmers may need to know 55 | 56 | 4.1. Docstring Comments 57 | ----------------------- 58 | 59 | * Docstring comments should consist of a short summary line, optionally (but usually) followed by a blank line, then additional paragraphs with further explanation 60 | * All classes and methods should contain a docstring 61 | * Modules should contain a docstring if they serve a purpose other than as a container for a class -------------------------------------------------------------------------------- /build/html/_sources/pages/contributing.txt: -------------------------------------------------------------------------------- 1 | .. _contributing: 2 | 3 | =========================== 4 | Contributing to the Project 5 | =========================== 6 | 7 | 1. Roles and Responsibilities 8 | ============================= 9 | There are four main roles for contributing, based on the `YUI Contributor Model `_. They are outlined below. 10 | 11 | 1.1. Users 12 | ---------- 13 | Users are community members who have a need for the project. Anyone can be a User; there are no special requirements. Common User contributions include evangelizing the project (e.g., display a link on a website and raise awareness through word-of-mouth), informing developers of strengths and weaknesses from a new user perspective, or providing moral support (a "thank you" goes a long way). 14 | 15 | Users who continue to engage with the project and its community will often become more and more involved. Such Users may find themselves becoming Contributors, as described in the next section. 16 | 17 | 1.2. Contributors 18 | ----------------- 19 | Contributors are community members who contribute in concrete ways to the project, most often in the form of code and/or documentation. Anyone can become a Contributor, and contributions can take many forms. There is no expectation of commitment to the project, no specific skill requirements, and no selection process. 20 | 21 | As Contributors gain experience and familiarity with the project, their profile within, and commitment to, the community will increase. At some stage, they may find themselves being nominated for committership by an existing Committer. 22 | 23 | 1.3. Committers 24 | --------------- 25 | Committers are community members who have shown that they are committed to the continued development of the project through ongoing engagement with the community. Committers are given push access to the project's GitHub repo and must abide by the project's Contribution Standards, including milestones such as feature complete and code freeze. 26 | 27 | While committership indicates a valued member of the community who has demonstrated a healthy respect for the project's aims and objectives, their work continues to be reviewed by Reviewers (see below) before acceptance in an official release. 28 | 29 | To become a Committer, one must have shown a willingness and ability to participate in the project as a team player. Typically, a potential Committer will need to show that they have an understanding of and alignment with the project, its objectives, and its strategy. They will also have provided valuable contributions to the project over a period of time and, specifically, a minimum of 8 qualifying pull requests. What's a qualifying pull request? One that carries significant technical weight and requires little effort to accept because it’s well documented and tested. 30 | 31 | New Committers can be nominated by any existing Committer. Once they have been nominated, there will be a discussion and vote by the Reviewers. While there is no formal system in place for this right now, Reviewers will try to use their best judgement, always keeping the project's best interests in mind. 32 | 33 | It is important to recognize that committership is a privilege, not a right. That privilege must be earned and once earned it can be removed by the Reviewers (see next section) in extreme circumstances. However, under normal circumstances committership exists for as long as the Committer wishes to continue engaging with the project. 34 | 35 | A Committer who shows an above-average level of contribution to the project, particularly with respect to its strategic direction and long-term health, may be nominated to become a Reviewer, described below. 36 | 37 | 1.4. Reviewers 38 | -------------- 39 | Reviewers are individuals identified as "project admins" for the project on GitHub. Reviewers have additional responsibilities over and above those of a Committer. These responsibilities ensure the smooth running of the project. Reviewers are expected to review code contributions, approve changes to this document, and manage the copyrights within the project outputs. 40 | 41 | Reviewers' contributions can be reviewed by other Reviewers, but this is not explicitly required. Reviewers do not have significant authority over other members of the community, although it is the Reviewers that vote on new Committers. They also make decisions when community consensus cannot be reached. 42 | 43 | A Committer is invited to become a Reviewer by existing Reviewers. An existing Committer may be considered for Reviewer status only after they have submitted 40 qualifying pull requests of technical significance that have been accepted without significant rework into the project. A nomination will result in discussion and then a vote by the existing Reviewers. 44 | 45 | 2. GitHub 46 | ========= 47 | 48 | 2.1. Forking 49 | ------------ 50 | To begin working on the project, you need to grab the latest code first. This can be done by `forking `_ the repository. 51 | 52 | 2.1. Pull Requests 53 | ------------------ 54 | All contributions to this project must be made through `Pull Requests `_. Pull requests are reviewed on a first come first serve basis by at least one of the Reviewers. In order to be accepted, the submitted code must meet the following criteria: 55 | * It must be apparently free of bugs, or if intractable bugs are present and the code is still useful, bugs must be clearly documented and relevant `issues `_ must be created on GitHub 56 | * It must meet all of the coding and documenting conventions laid out in these documents 57 | * It must integrate well with existing code 58 | 59 | 2.2. Pulling from Upstream 60 | -------------------------- 61 | To get the latest changes from the original repository, you need to `pull from upstream `_. 62 | 63 | 2.3. Issue Tracking 64 | ------------------- 65 | GitHub's `Issues `_ system will be used to track known bugs and issues, as well as manage feature requests. 66 | 67 | 3. Git 68 | ====== 69 | 70 | 3.1. Committing 71 | --------------- 72 | 73 | 3.1.1. Commit Messages 74 | ###################### 75 | 76 | Commit messages consist of: 77 | * A short summary of changes made to be limited to 50 characters in width. This line should not end with a period, and should always be followed by a blank line. 78 | * Additional paragraphs providing more detail, separated by blank lines, and limited to 72 characters in width. 79 | * Bullet points may also be used, and may be indicated by a '*' or a '-' 80 | * The commit message should be written in the imperative tone, that is, as if commanding somebody to make your changes 81 | * Good: "Fix the time zone bug and change the path" 82 | * Bad: "Fixed the time zone bug and changed the path" 83 | For more on why this is good practice, check out `this article `_. 84 | 85 | 3.1.2. Commit Size 86 | ################## 87 | Commits should address one issue at a time. Those that contain multiple unrelated changes should be split appropriately. Adjacent commits that each contain partial changes related to the same feature should be squashed together. Read up on `rewriting commit history `_ for more on managing commit size. -------------------------------------------------------------------------------- /build/html/_sources/pages/naming_convention.txt: -------------------------------------------------------------------------------- 1 | .. _naming_convention: 2 | 3 | ========================= 4 | Python Naming Conventions 5 | ========================= 6 | 7 | 1. General 8 | ========== 9 | * Avoid using names that are too general or too wordy. Strike a good balance between the two. 10 | * Bad: data_structure, my_list, info_map, dictionary_for_the_purpose_of_storing_data_representing_word_definitions 11 | * Good: user_profile, menu_options, word_definitions 12 | * Don’t be a jackass and name things “O”, “l”, or “I” 13 | * When using CamelCase names, capitalize all letters of an abbreviation (e.g. HTTPServer) 14 | 15 | 2. Packages 16 | =========== 17 | * Package names should be all lower case 18 | * When multiple words are needed, an underscore should separate them 19 | * It is usually preferable to stick to 1 word names 20 | 21 | 22 | 3. Modules 23 | ========== 24 | * Module names should be all lower case 25 | * When multiple words are needed, an underscore should separate them 26 | * It is usually preferable to stick to 1 word names 27 | 28 | 29 | 4. Classes 30 | ========== 31 | * Class names should follow the UpperCaseCamelCase convention 32 | * Python's built-in classes, however are typically lowercase words 33 | * Exception classes should end in “Error” 34 | 35 | 36 | 5. Global (module-level) Variables 37 | ================================== 38 | * Global variables should be all lowercase 39 | * Words in a global variable name should be separated by an underscore 40 | 41 | 42 | 6. Instance Variables 43 | ===================== 44 | * Instance variable names should be all lower case 45 | * Words in an instance variable name should be separated by an underscore 46 | * Non-public instance variables should begin with a single underscore 47 | * If an instance name needs to be mangled, two underscores may begin its name 48 | 49 | 50 | 7. Methods 51 | ========== 52 | * Method names should be all lower case 53 | * Words in an method name should be separated by an underscore 54 | * Non-public method should begin with a single underscore 55 | * If a method name needs to be mangled, two underscores may begin its name 56 | 57 | 58 | 8. Method Arguments 59 | =================== 60 | * Instance methods should have their first argument named ‘self’. 61 | * Class methods should have their first argument named ‘cls’ 62 | 63 | 64 | 9. Functions 65 | ============ 66 | * Function names should be all lower case 67 | * Words in a function name should be separated by an underscore 68 | 69 | 10. Constants 70 | ============= 71 | * Constant names must be fully capitalized 72 | * Words in a constant name should be separated by an underscore -------------------------------------------------------------------------------- /build/html/_sources/pages/project_file_structure.txt: -------------------------------------------------------------------------------- 1 | .. _project_file_structure: 2 | 3 | ============================= 4 | Python Project File Structure 5 | ============================= 6 | 7 | 1. Overall Structure 8 | ==================== 9 | * project_root 10 | * src 11 | * git 12 | * ui 13 | * canvas 14 | * dashboard 15 | * ui 16 | * resources 17 | * doc 18 | * api 19 | * guide 20 | 21 | 2. Directory Details 22 | ==================== 23 | 24 | 2.1. project_root 25 | ----------------- 26 | All files that are part of the project. The directory should be named after the project itself, and should be the git repo root directory. 27 | 28 | 2.2. src 29 | -------- 30 | All python source modules, separated into packages where there is shared functionality. In PyCharm, the src folder must be marked as the "Sources Root" directory by right-clicking on it and selecting Mark Directory As > Sources Root. 31 | 32 | 2.2.1. git 33 | ########## 34 | Git data model and git command API. 35 | 36 | 2.2.2. ui 37 | ######### 38 | User interface. 39 | 40 | 2.3. ui 41 | ------- 42 | All of the .ui interface files generated by qt-designer. It contains a subfolder, called 'resources' that contains all resources referenced from .ui files or from code. 43 | 44 | 2.4. doc 45 | -------- 46 | All of the documentation generated for this project. Within it are two subfolders, 'api' and 'guide'. 'api' contains API documentation (i.e. docs culled from sources), whereas the 'guide' folder contains our main documentation guide. 47 | -------------------------------------------------------------------------------- /build/html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /build/html/_static/basic.css: -------------------------------------------------------------------------------- 1 | /* 2 | * basic.css 3 | * ~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- basic theme. 6 | * 7 | * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | /* -- main layout ----------------------------------------------------------- */ 13 | 14 | div.clearer { 15 | clear: both; 16 | } 17 | 18 | /* -- relbar ---------------------------------------------------------------- */ 19 | 20 | div.related { 21 | width: 100%; 22 | font-size: 90%; 23 | } 24 | 25 | div.related h3 { 26 | display: none; 27 | } 28 | 29 | div.related ul { 30 | margin: 0; 31 | padding: 0 0 0 10px; 32 | list-style: none; 33 | } 34 | 35 | div.related li { 36 | display: inline; 37 | } 38 | 39 | div.related li.right { 40 | float: right; 41 | margin-right: 5px; 42 | } 43 | 44 | /* -- sidebar --------------------------------------------------------------- */ 45 | 46 | div.sphinxsidebarwrapper { 47 | padding: 10px 5px 0 10px; 48 | } 49 | 50 | div.sphinxsidebar { 51 | float: left; 52 | width: 230px; 53 | margin-left: -100%; 54 | font-size: 90%; 55 | } 56 | 57 | div.sphinxsidebar ul { 58 | list-style: none; 59 | } 60 | 61 | div.sphinxsidebar ul ul, 62 | div.sphinxsidebar ul.want-points { 63 | margin-left: 20px; 64 | list-style: square; 65 | } 66 | 67 | div.sphinxsidebar ul ul { 68 | margin-top: 0; 69 | margin-bottom: 0; 70 | } 71 | 72 | div.sphinxsidebar form { 73 | margin-top: 10px; 74 | } 75 | 76 | div.sphinxsidebar input { 77 | border: 1px solid #98dbcc; 78 | font-family: sans-serif; 79 | font-size: 1em; 80 | } 81 | 82 | div.sphinxsidebar #searchbox input[type="text"] { 83 | width: 170px; 84 | } 85 | 86 | div.sphinxsidebar #searchbox input[type="submit"] { 87 | width: 30px; 88 | } 89 | 90 | img { 91 | border: 0; 92 | max-width: 100%; 93 | } 94 | 95 | /* -- search page ----------------------------------------------------------- */ 96 | 97 | ul.search { 98 | margin: 10px 0 0 20px; 99 | padding: 0; 100 | } 101 | 102 | ul.search li { 103 | padding: 5px 0 5px 20px; 104 | background-image: url(file.png); 105 | background-repeat: no-repeat; 106 | background-position: 0 7px; 107 | } 108 | 109 | ul.search li a { 110 | font-weight: bold; 111 | } 112 | 113 | ul.search li div.context { 114 | color: #888; 115 | margin: 2px 0 0 30px; 116 | text-align: left; 117 | } 118 | 119 | ul.keywordmatches li.goodmatch a { 120 | font-weight: bold; 121 | } 122 | 123 | /* -- index page ------------------------------------------------------------ */ 124 | 125 | table.contentstable { 126 | width: 90%; 127 | } 128 | 129 | table.contentstable p.biglink { 130 | line-height: 150%; 131 | } 132 | 133 | a.biglink { 134 | font-size: 1.3em; 135 | } 136 | 137 | span.linkdescr { 138 | font-style: italic; 139 | padding-top: 5px; 140 | font-size: 90%; 141 | } 142 | 143 | /* -- general index --------------------------------------------------------- */ 144 | 145 | table.indextable { 146 | width: 100%; 147 | } 148 | 149 | table.indextable td { 150 | text-align: left; 151 | vertical-align: top; 152 | } 153 | 154 | table.indextable dl, table.indextable dd { 155 | margin-top: 0; 156 | margin-bottom: 0; 157 | } 158 | 159 | table.indextable tr.pcap { 160 | height: 10px; 161 | } 162 | 163 | table.indextable tr.cap { 164 | margin-top: 10px; 165 | background-color: #f2f2f2; 166 | } 167 | 168 | img.toggler { 169 | margin-right: 3px; 170 | margin-top: 3px; 171 | cursor: pointer; 172 | } 173 | 174 | div.modindex-jumpbox { 175 | border-top: 1px solid #ddd; 176 | border-bottom: 1px solid #ddd; 177 | margin: 1em 0 1em 0; 178 | padding: 0.4em; 179 | } 180 | 181 | div.genindex-jumpbox { 182 | border-top: 1px solid #ddd; 183 | border-bottom: 1px solid #ddd; 184 | margin: 1em 0 1em 0; 185 | padding: 0.4em; 186 | } 187 | 188 | /* -- general body styles --------------------------------------------------- */ 189 | 190 | a.headerlink { 191 | visibility: hidden; 192 | } 193 | 194 | h1:hover > a.headerlink, 195 | h2:hover > a.headerlink, 196 | h3:hover > a.headerlink, 197 | h4:hover > a.headerlink, 198 | h5:hover > a.headerlink, 199 | h6:hover > a.headerlink, 200 | dt:hover > a.headerlink { 201 | visibility: visible; 202 | } 203 | 204 | div.body p.caption { 205 | text-align: inherit; 206 | } 207 | 208 | div.body td { 209 | text-align: left; 210 | } 211 | 212 | .field-list ul { 213 | padding-left: 1em; 214 | } 215 | 216 | .first { 217 | margin-top: 0 !important; 218 | } 219 | 220 | p.rubric { 221 | margin-top: 30px; 222 | font-weight: bold; 223 | } 224 | 225 | img.align-left, .figure.align-left, object.align-left { 226 | clear: left; 227 | float: left; 228 | margin-right: 1em; 229 | } 230 | 231 | img.align-right, .figure.align-right, object.align-right { 232 | clear: right; 233 | float: right; 234 | margin-left: 1em; 235 | } 236 | 237 | img.align-center, .figure.align-center, object.align-center { 238 | display: block; 239 | margin-left: auto; 240 | margin-right: auto; 241 | } 242 | 243 | .align-left { 244 | text-align: left; 245 | } 246 | 247 | .align-center { 248 | text-align: center; 249 | } 250 | 251 | .align-right { 252 | text-align: right; 253 | } 254 | 255 | /* -- sidebars -------------------------------------------------------------- */ 256 | 257 | div.sidebar { 258 | margin: 0 0 0.5em 1em; 259 | border: 1px solid #ddb; 260 | padding: 7px 7px 0 7px; 261 | background-color: #ffe; 262 | width: 40%; 263 | float: right; 264 | } 265 | 266 | p.sidebar-title { 267 | font-weight: bold; 268 | } 269 | 270 | /* -- topics ---------------------------------------------------------------- */ 271 | 272 | div.topic { 273 | border: 1px solid #ccc; 274 | padding: 7px 7px 0 7px; 275 | margin: 10px 0 10px 0; 276 | } 277 | 278 | p.topic-title { 279 | font-size: 1.1em; 280 | font-weight: bold; 281 | margin-top: 10px; 282 | } 283 | 284 | /* -- admonitions ----------------------------------------------------------- */ 285 | 286 | div.admonition { 287 | margin-top: 10px; 288 | margin-bottom: 10px; 289 | padding: 7px; 290 | } 291 | 292 | div.admonition dt { 293 | font-weight: bold; 294 | } 295 | 296 | div.admonition dl { 297 | margin-bottom: 0; 298 | } 299 | 300 | p.admonition-title { 301 | margin: 0px 10px 5px 0px; 302 | font-weight: bold; 303 | } 304 | 305 | div.body p.centered { 306 | text-align: center; 307 | margin-top: 25px; 308 | } 309 | 310 | /* -- tables ---------------------------------------------------------------- */ 311 | 312 | table.docutils { 313 | border: 0; 314 | border-collapse: collapse; 315 | } 316 | 317 | table.docutils td, table.docutils th { 318 | padding: 1px 8px 1px 5px; 319 | border-top: 0; 320 | border-left: 0; 321 | border-right: 0; 322 | border-bottom: 1px solid #aaa; 323 | } 324 | 325 | table.field-list td, table.field-list th { 326 | border: 0 !important; 327 | } 328 | 329 | table.footnote td, table.footnote th { 330 | border: 0 !important; 331 | } 332 | 333 | th { 334 | text-align: left; 335 | padding-right: 5px; 336 | } 337 | 338 | table.citation { 339 | border-left: solid 1px gray; 340 | margin-left: 1px; 341 | } 342 | 343 | table.citation td { 344 | border-bottom: none; 345 | } 346 | 347 | /* -- other body styles ----------------------------------------------------- */ 348 | 349 | ol.arabic { 350 | list-style: decimal; 351 | } 352 | 353 | ol.loweralpha { 354 | list-style: lower-alpha; 355 | } 356 | 357 | ol.upperalpha { 358 | list-style: upper-alpha; 359 | } 360 | 361 | ol.lowerroman { 362 | list-style: lower-roman; 363 | } 364 | 365 | ol.upperroman { 366 | list-style: upper-roman; 367 | } 368 | 369 | dl { 370 | margin-bottom: 15px; 371 | } 372 | 373 | dd p { 374 | margin-top: 0px; 375 | } 376 | 377 | dd ul, dd table { 378 | margin-bottom: 10px; 379 | } 380 | 381 | dd { 382 | margin-top: 3px; 383 | margin-bottom: 10px; 384 | margin-left: 30px; 385 | } 386 | 387 | dt:target, .highlighted { 388 | background-color: #fbe54e; 389 | } 390 | 391 | dl.glossary dt { 392 | font-weight: bold; 393 | font-size: 1.1em; 394 | } 395 | 396 | .field-list ul { 397 | margin: 0; 398 | padding-left: 1em; 399 | } 400 | 401 | .field-list p { 402 | margin: 0; 403 | } 404 | 405 | .optional { 406 | font-size: 1.3em; 407 | } 408 | 409 | .versionmodified { 410 | font-style: italic; 411 | } 412 | 413 | .system-message { 414 | background-color: #fda; 415 | padding: 5px; 416 | border: 3px solid red; 417 | } 418 | 419 | .footnote:target { 420 | background-color: #ffa; 421 | } 422 | 423 | .line-block { 424 | display: block; 425 | margin-top: 1em; 426 | margin-bottom: 1em; 427 | } 428 | 429 | .line-block .line-block { 430 | margin-top: 0; 431 | margin-bottom: 0; 432 | margin-left: 1.5em; 433 | } 434 | 435 | .guilabel, .menuselection { 436 | font-family: sans-serif; 437 | } 438 | 439 | .accelerator { 440 | text-decoration: underline; 441 | } 442 | 443 | .classifier { 444 | font-style: oblique; 445 | } 446 | 447 | abbr, acronym { 448 | border-bottom: dotted 1px; 449 | cursor: help; 450 | } 451 | 452 | /* -- code displays --------------------------------------------------------- */ 453 | 454 | pre { 455 | overflow: auto; 456 | overflow-y: hidden; /* fixes display issues on Chrome browsers */ 457 | } 458 | 459 | td.linenos pre { 460 | padding: 5px 0px; 461 | border: 0; 462 | background-color: transparent; 463 | color: #aaa; 464 | } 465 | 466 | table.highlighttable { 467 | margin-left: 0.5em; 468 | } 469 | 470 | table.highlighttable td { 471 | padding: 0 0.5em 0 0.5em; 472 | } 473 | 474 | tt.descname { 475 | background-color: transparent; 476 | font-weight: bold; 477 | font-size: 1.2em; 478 | } 479 | 480 | tt.descclassname { 481 | background-color: transparent; 482 | } 483 | 484 | tt.xref, a tt { 485 | background-color: transparent; 486 | font-weight: bold; 487 | } 488 | 489 | h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { 490 | background-color: transparent; 491 | } 492 | 493 | .viewcode-link { 494 | float: right; 495 | } 496 | 497 | .viewcode-back { 498 | float: right; 499 | font-family: sans-serif; 500 | } 501 | 502 | div.viewcode-block:target { 503 | margin: -1px -10px; 504 | padding: 0 10px; 505 | } 506 | 507 | /* -- math display ---------------------------------------------------------- */ 508 | 509 | img.math { 510 | vertical-align: middle; 511 | } 512 | 513 | div.body div.math p { 514 | text-align: center; 515 | } 516 | 517 | span.eqno { 518 | float: right; 519 | } 520 | 521 | /* -- printout stylesheet --------------------------------------------------- */ 522 | 523 | @media print { 524 | div.document, 525 | div.documentwrapper, 526 | div.bodywrapper { 527 | margin: 0 !important; 528 | width: 100%; 529 | } 530 | 531 | div.sphinxsidebar, 532 | div.related, 533 | div.footer, 534 | #top-link { 535 | display: none; 536 | } 537 | } -------------------------------------------------------------------------------- /build/html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/comment-bright.png -------------------------------------------------------------------------------- /build/html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/comment-close.png -------------------------------------------------------------------------------- /build/html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/comment.png -------------------------------------------------------------------------------- /build/html/_static/default.css: -------------------------------------------------------------------------------- 1 | /* 2 | * default.css_t 3 | * ~~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- default theme. 6 | * 7 | * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | @import url("basic.css"); 13 | 14 | /* -- page layout ----------------------------------------------------------- */ 15 | 16 | body { 17 | font-family: sans-serif; 18 | font-size: 100%; 19 | background-color: #11303d; 20 | color: #000; 21 | margin: 0; 22 | padding: 0; 23 | } 24 | 25 | div.document { 26 | background-color: #1c4e63; 27 | } 28 | 29 | div.documentwrapper { 30 | float: left; 31 | width: 100%; 32 | } 33 | 34 | div.bodywrapper { 35 | margin: 0 0 0 230px; 36 | } 37 | 38 | div.body { 39 | background-color: #ffffff; 40 | color: #000000; 41 | padding: 0 20px 30px 20px; 42 | } 43 | 44 | div.footer { 45 | color: #ffffff; 46 | width: 100%; 47 | padding: 9px 0 9px 0; 48 | text-align: center; 49 | font-size: 75%; 50 | } 51 | 52 | div.footer a { 53 | color: #ffffff; 54 | text-decoration: underline; 55 | } 56 | 57 | div.related { 58 | background-color: #133f52; 59 | line-height: 30px; 60 | color: #ffffff; 61 | } 62 | 63 | div.related a { 64 | color: #ffffff; 65 | } 66 | 67 | div.sphinxsidebar { 68 | } 69 | 70 | div.sphinxsidebar h3 { 71 | font-family: 'Trebuchet MS', sans-serif; 72 | color: #ffffff; 73 | font-size: 1.4em; 74 | font-weight: normal; 75 | margin: 0; 76 | padding: 0; 77 | } 78 | 79 | div.sphinxsidebar h3 a { 80 | color: #ffffff; 81 | } 82 | 83 | div.sphinxsidebar h4 { 84 | font-family: 'Trebuchet MS', sans-serif; 85 | color: #ffffff; 86 | font-size: 1.3em; 87 | font-weight: normal; 88 | margin: 5px 0 0 0; 89 | padding: 0; 90 | } 91 | 92 | div.sphinxsidebar p { 93 | color: #ffffff; 94 | } 95 | 96 | div.sphinxsidebar p.topless { 97 | margin: 5px 10px 10px 10px; 98 | } 99 | 100 | div.sphinxsidebar ul { 101 | margin: 10px; 102 | padding: 0; 103 | color: #ffffff; 104 | } 105 | 106 | div.sphinxsidebar a { 107 | color: #98dbcc; 108 | } 109 | 110 | div.sphinxsidebar input { 111 | border: 1px solid #98dbcc; 112 | font-family: sans-serif; 113 | font-size: 1em; 114 | } 115 | 116 | 117 | 118 | /* -- hyperlink styles ------------------------------------------------------ */ 119 | 120 | a { 121 | color: #355f7c; 122 | text-decoration: none; 123 | } 124 | 125 | a:visited { 126 | color: #355f7c; 127 | text-decoration: none; 128 | } 129 | 130 | a:hover { 131 | text-decoration: underline; 132 | } 133 | 134 | 135 | 136 | /* -- body styles ----------------------------------------------------------- */ 137 | 138 | div.body h1, 139 | div.body h2, 140 | div.body h3, 141 | div.body h4, 142 | div.body h5, 143 | div.body h6 { 144 | font-family: 'Trebuchet MS', sans-serif; 145 | background-color: #f2f2f2; 146 | font-weight: normal; 147 | color: #20435c; 148 | border-bottom: 1px solid #ccc; 149 | margin: 20px -20px 10px -20px; 150 | padding: 3px 0 3px 10px; 151 | } 152 | 153 | div.body h1 { margin-top: 0; font-size: 200%; } 154 | div.body h2 { font-size: 160%; } 155 | div.body h3 { font-size: 140%; } 156 | div.body h4 { font-size: 120%; } 157 | div.body h5 { font-size: 110%; } 158 | div.body h6 { font-size: 100%; } 159 | 160 | a.headerlink { 161 | color: #c60f0f; 162 | font-size: 0.8em; 163 | padding: 0 4px 0 4px; 164 | text-decoration: none; 165 | } 166 | 167 | a.headerlink:hover { 168 | background-color: #c60f0f; 169 | color: white; 170 | } 171 | 172 | div.body p, div.body dd, div.body li { 173 | text-align: justify; 174 | line-height: 130%; 175 | } 176 | 177 | div.admonition p.admonition-title + p { 178 | display: inline; 179 | } 180 | 181 | div.admonition p { 182 | margin-bottom: 5px; 183 | } 184 | 185 | div.admonition pre { 186 | margin-bottom: 5px; 187 | } 188 | 189 | div.admonition ul, div.admonition ol { 190 | margin-bottom: 5px; 191 | } 192 | 193 | div.note { 194 | background-color: #eee; 195 | border: 1px solid #ccc; 196 | } 197 | 198 | div.seealso { 199 | background-color: #ffc; 200 | border: 1px solid #ff6; 201 | } 202 | 203 | div.topic { 204 | background-color: #eee; 205 | } 206 | 207 | div.warning { 208 | background-color: #ffe4e4; 209 | border: 1px solid #f66; 210 | } 211 | 212 | p.admonition-title { 213 | display: inline; 214 | } 215 | 216 | p.admonition-title:after { 217 | content: ":"; 218 | } 219 | 220 | pre { 221 | padding: 5px; 222 | background-color: #eeffcc; 223 | color: #333333; 224 | line-height: 120%; 225 | border: 1px solid #ac9; 226 | border-left: none; 227 | border-right: none; 228 | } 229 | 230 | tt { 231 | background-color: #ecf0f3; 232 | padding: 0 1px 0 1px; 233 | font-size: 0.95em; 234 | } 235 | 236 | th { 237 | background-color: #ede; 238 | } 239 | 240 | .warning tt { 241 | background: #efc2c2; 242 | } 243 | 244 | .note tt { 245 | background: #d6d6d6; 246 | } 247 | 248 | .viewcode-back { 249 | font-family: sans-serif; 250 | } 251 | 252 | div.viewcode-block:target { 253 | background-color: #f4debf; 254 | border-top: 1px solid #ac9; 255 | border-bottom: 1px solid #ac9; 256 | } -------------------------------------------------------------------------------- /build/html/_static/doctools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * doctools.js 3 | * ~~~~~~~~~~~ 4 | * 5 | * Sphinx JavaScript utilities for all documentation. 6 | * 7 | * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | /** 13 | * select a different prefix for underscore 14 | */ 15 | $u = _.noConflict(); 16 | 17 | /** 18 | * make the code below compatible with browsers without 19 | * an installed firebug like debugger 20 | if (!window.console || !console.firebug) { 21 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir", 22 | "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", 23 | "profile", "profileEnd"]; 24 | window.console = {}; 25 | for (var i = 0; i < names.length; ++i) 26 | window.console[names[i]] = function() {}; 27 | } 28 | */ 29 | 30 | /** 31 | * small helper function to urldecode strings 32 | */ 33 | jQuery.urldecode = function(x) { 34 | return decodeURIComponent(x).replace(/\+/g, ' '); 35 | }; 36 | 37 | /** 38 | * small helper function to urlencode strings 39 | */ 40 | jQuery.urlencode = encodeURIComponent; 41 | 42 | /** 43 | * This function returns the parsed url parameters of the 44 | * current request. Multiple values per key are supported, 45 | * it will always return arrays of strings for the value parts. 46 | */ 47 | jQuery.getQueryParameters = function(s) { 48 | if (typeof s == 'undefined') 49 | s = document.location.search; 50 | var parts = s.substr(s.indexOf('?') + 1).split('&'); 51 | var result = {}; 52 | for (var i = 0; i < parts.length; i++) { 53 | var tmp = parts[i].split('=', 2); 54 | var key = jQuery.urldecode(tmp[0]); 55 | var value = jQuery.urldecode(tmp[1]); 56 | if (key in result) 57 | result[key].push(value); 58 | else 59 | result[key] = [value]; 60 | } 61 | return result; 62 | }; 63 | 64 | /** 65 | * highlight a given string on a jquery object by wrapping it in 66 | * span elements with the given class name. 67 | */ 68 | jQuery.fn.highlightText = function(text, className) { 69 | function highlight(node) { 70 | if (node.nodeType == 3) { 71 | var val = node.nodeValue; 72 | var pos = val.toLowerCase().indexOf(text); 73 | if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { 74 | var span = document.createElement("span"); 75 | span.className = className; 76 | span.appendChild(document.createTextNode(val.substr(pos, text.length))); 77 | node.parentNode.insertBefore(span, node.parentNode.insertBefore( 78 | document.createTextNode(val.substr(pos + text.length)), 79 | node.nextSibling)); 80 | node.nodeValue = val.substr(0, pos); 81 | } 82 | } 83 | else if (!jQuery(node).is("button, select, textarea")) { 84 | jQuery.each(node.childNodes, function() { 85 | highlight(this); 86 | }); 87 | } 88 | } 89 | return this.each(function() { 90 | highlight(this); 91 | }); 92 | }; 93 | 94 | /** 95 | * Small JavaScript module for the documentation. 96 | */ 97 | var Documentation = { 98 | 99 | init : function() { 100 | this.fixFirefoxAnchorBug(); 101 | this.highlightSearchWords(); 102 | this.initIndexTable(); 103 | }, 104 | 105 | /** 106 | * i18n support 107 | */ 108 | TRANSLATIONS : {}, 109 | PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, 110 | LOCALE : 'unknown', 111 | 112 | // gettext and ngettext don't access this so that the functions 113 | // can safely bound to a different name (_ = Documentation.gettext) 114 | gettext : function(string) { 115 | var translated = Documentation.TRANSLATIONS[string]; 116 | if (typeof translated == 'undefined') 117 | return string; 118 | return (typeof translated == 'string') ? translated : translated[0]; 119 | }, 120 | 121 | ngettext : function(singular, plural, n) { 122 | var translated = Documentation.TRANSLATIONS[singular]; 123 | if (typeof translated == 'undefined') 124 | return (n == 1) ? singular : plural; 125 | return translated[Documentation.PLURALEXPR(n)]; 126 | }, 127 | 128 | addTranslations : function(catalog) { 129 | for (var key in catalog.messages) 130 | this.TRANSLATIONS[key] = catalog.messages[key]; 131 | this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); 132 | this.LOCALE = catalog.locale; 133 | }, 134 | 135 | /** 136 | * add context elements like header anchor links 137 | */ 138 | addContextElements : function() { 139 | $('div[id] > :header:first').each(function() { 140 | $('\u00B6'). 141 | attr('href', '#' + this.id). 142 | attr('title', _('Permalink to this headline')). 143 | appendTo(this); 144 | }); 145 | $('dt[id]').each(function() { 146 | $('\u00B6'). 147 | attr('href', '#' + this.id). 148 | attr('title', _('Permalink to this definition')). 149 | appendTo(this); 150 | }); 151 | }, 152 | 153 | /** 154 | * workaround a firefox stupidity 155 | */ 156 | fixFirefoxAnchorBug : function() { 157 | if (document.location.hash && $.browser.mozilla) 158 | window.setTimeout(function() { 159 | document.location.href += ''; 160 | }, 10); 161 | }, 162 | 163 | /** 164 | * highlight the search words provided in the url in the text 165 | */ 166 | highlightSearchWords : function() { 167 | var params = $.getQueryParameters(); 168 | var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; 169 | if (terms.length) { 170 | var body = $('div.body'); 171 | if (!body.length) { 172 | body = $('body'); 173 | } 174 | window.setTimeout(function() { 175 | $.each(terms, function() { 176 | body.highlightText(this.toLowerCase(), 'highlighted'); 177 | }); 178 | }, 10); 179 | $('') 181 | .appendTo($('#searchbox')); 182 | } 183 | }, 184 | 185 | /** 186 | * init the domain index toggle buttons 187 | */ 188 | initIndexTable : function() { 189 | var togglers = $('img.toggler').click(function() { 190 | var src = $(this).attr('src'); 191 | var idnum = $(this).attr('id').substr(7); 192 | $('tr.cg-' + idnum).toggle(); 193 | if (src.substr(-9) == 'minus.png') 194 | $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); 195 | else 196 | $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); 197 | }).css('display', ''); 198 | if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { 199 | togglers.click(); 200 | } 201 | }, 202 | 203 | /** 204 | * helper function to hide the search marks again 205 | */ 206 | hideSearchWords : function() { 207 | $('#searchbox .highlight-link').fadeOut(300); 208 | $('span.highlighted').removeClass('highlighted'); 209 | }, 210 | 211 | /** 212 | * make the url absolute 213 | */ 214 | makeURL : function(relativeURL) { 215 | return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; 216 | }, 217 | 218 | /** 219 | * get the current relative url 220 | */ 221 | getCurrentURL : function() { 222 | var path = document.location.pathname; 223 | var parts = path.split(/\//); 224 | $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { 225 | if (this == '..') 226 | parts.pop(); 227 | }); 228 | var url = parts.join('/'); 229 | return path.substring(url.lastIndexOf('/') + 1, path.length - 1); 230 | } 231 | }; 232 | 233 | // quick alias for translations 234 | _ = Documentation.gettext; 235 | 236 | $(document).ready(function() { 237 | Documentation.init(); 238 | }); 239 | -------------------------------------------------------------------------------- /build/html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/down-pressed.png -------------------------------------------------------------------------------- /build/html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/down.png -------------------------------------------------------------------------------- /build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/file.png -------------------------------------------------------------------------------- /build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/minus.png -------------------------------------------------------------------------------- /build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/plus.png -------------------------------------------------------------------------------- /build/html/_static/pygments.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffffcc } 2 | .highlight { background: #eeffcc; } 3 | .highlight .c { color: #408090; font-style: italic } /* Comment */ 4 | .highlight .err { border: 1px solid #FF0000 } /* Error */ 5 | .highlight .k { color: #007020; font-weight: bold } /* Keyword */ 6 | .highlight .o { color: #666666 } /* Operator */ 7 | .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ 8 | .highlight .cp { color: #007020 } /* Comment.Preproc */ 9 | .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ 10 | .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ 11 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #FF0000 } /* Generic.Error */ 14 | .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 15 | .highlight .gi { color: #00A000 } /* Generic.Inserted */ 16 | .highlight .go { color: #333333 } /* Generic.Output */ 17 | .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ 18 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 19 | .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 20 | .highlight .gt { color: #0044DD } /* Generic.Traceback */ 21 | .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ 22 | .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ 23 | .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ 24 | .highlight .kp { color: #007020 } /* Keyword.Pseudo */ 25 | .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #902000 } /* Keyword.Type */ 27 | .highlight .m { color: #208050 } /* Literal.Number */ 28 | .highlight .s { color: #4070a0 } /* Literal.String */ 29 | .highlight .na { color: #4070a0 } /* Name.Attribute */ 30 | .highlight .nb { color: #007020 } /* Name.Builtin */ 31 | .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #60add5 } /* Name.Constant */ 33 | .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ 34 | .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ 35 | .highlight .ne { color: #007020 } /* Name.Exception */ 36 | .highlight .nf { color: #06287e } /* Name.Function */ 37 | .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ 38 | .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ 39 | .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ 40 | .highlight .nv { color: #bb60d5 } /* Name.Variable */ 41 | .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ 42 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 43 | .highlight .mf { color: #208050 } /* Literal.Number.Float */ 44 | .highlight .mh { color: #208050 } /* Literal.Number.Hex */ 45 | .highlight .mi { color: #208050 } /* Literal.Number.Integer */ 46 | .highlight .mo { color: #208050 } /* Literal.Number.Oct */ 47 | .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ 48 | .highlight .sc { color: #4070a0 } /* Literal.String.Char */ 49 | .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ 50 | .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ 51 | .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ 52 | .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ 53 | .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ 54 | .highlight .sx { color: #c65d09 } /* Literal.String.Other */ 55 | .highlight .sr { color: #235388 } /* Literal.String.Regex */ 56 | .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ 57 | .highlight .ss { color: #517918 } /* Literal.String.Symbol */ 58 | .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ 59 | .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ 60 | .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ 61 | .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ 62 | .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /build/html/_static/rtd.css~: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/rtd.css~ -------------------------------------------------------------------------------- /build/html/_static/sidebar.js: -------------------------------------------------------------------------------- 1 | /* 2 | * sidebar.js 3 | * ~~~~~~~~~~ 4 | * 5 | * This script makes the Sphinx sidebar collapsible. 6 | * 7 | * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds 8 | * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton 9 | * used to collapse and expand the sidebar. 10 | * 11 | * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden 12 | * and the width of the sidebar and the margin-left of the document 13 | * are decreased. When the sidebar is expanded the opposite happens. 14 | * This script saves a per-browser/per-session cookie used to 15 | * remember the position of the sidebar among the pages. 16 | * Once the browser is closed the cookie is deleted and the position 17 | * reset to the default (expanded). 18 | * 19 | * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. 20 | * :license: BSD, see LICENSE for details. 21 | * 22 | */ 23 | 24 | $(function() { 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | // global elements used by the functions. 34 | // the 'sidebarbutton' element is defined as global after its 35 | // creation, in the add_sidebar_button function 36 | var bodywrapper = $('.bodywrapper'); 37 | var sidebar = $('.sphinxsidebar'); 38 | var sidebarwrapper = $('.sphinxsidebarwrapper'); 39 | 40 | // for some reason, the document has no sidebar; do not run into errors 41 | if (!sidebar.length) return; 42 | 43 | // original margin-left of the bodywrapper and width of the sidebar 44 | // with the sidebar expanded 45 | var bw_margin_expanded = bodywrapper.css('margin-left'); 46 | var ssb_width_expanded = sidebar.width(); 47 | 48 | // margin-left of the bodywrapper and width of the sidebar 49 | // with the sidebar collapsed 50 | var bw_margin_collapsed = '.8em'; 51 | var ssb_width_collapsed = '.8em'; 52 | 53 | // colors used by the current theme 54 | var dark_color = $('.related').css('background-color'); 55 | var light_color = $('.document').css('background-color'); 56 | 57 | function sidebar_is_collapsed() { 58 | return sidebarwrapper.is(':not(:visible)'); 59 | } 60 | 61 | function toggle_sidebar() { 62 | if (sidebar_is_collapsed()) 63 | expand_sidebar(); 64 | else 65 | collapse_sidebar(); 66 | } 67 | 68 | function collapse_sidebar() { 69 | sidebarwrapper.hide(); 70 | sidebar.css('width', ssb_width_collapsed); 71 | bodywrapper.css('margin-left', bw_margin_collapsed); 72 | sidebarbutton.css({ 73 | 'margin-left': '0', 74 | 'height': bodywrapper.height() 75 | }); 76 | sidebarbutton.find('span').text('»'); 77 | sidebarbutton.attr('title', _('Expand sidebar')); 78 | document.cookie = 'sidebar=collapsed'; 79 | } 80 | 81 | function expand_sidebar() { 82 | bodywrapper.css('margin-left', bw_margin_expanded); 83 | sidebar.css('width', ssb_width_expanded); 84 | sidebarwrapper.show(); 85 | sidebarbutton.css({ 86 | 'margin-left': ssb_width_expanded-12, 87 | 'height': bodywrapper.height() 88 | }); 89 | sidebarbutton.find('span').text('«'); 90 | sidebarbutton.attr('title', _('Collapse sidebar')); 91 | document.cookie = 'sidebar=expanded'; 92 | } 93 | 94 | function add_sidebar_button() { 95 | sidebarwrapper.css({ 96 | 'float': 'left', 97 | 'margin-right': '0', 98 | 'width': ssb_width_expanded - 28 99 | }); 100 | // create the button 101 | sidebar.append( 102 | '
«
' 103 | ); 104 | var sidebarbutton = $('#sidebarbutton'); 105 | light_color = sidebarbutton.css('background-color'); 106 | // find the height of the viewport to center the '<<' in the page 107 | var viewport_height; 108 | if (window.innerHeight) 109 | viewport_height = window.innerHeight; 110 | else 111 | viewport_height = $(window).height(); 112 | sidebarbutton.find('span').css({ 113 | 'display': 'block', 114 | 'margin-top': (viewport_height - sidebar.position().top - 20) / 2 115 | }); 116 | 117 | sidebarbutton.click(toggle_sidebar); 118 | sidebarbutton.attr('title', _('Collapse sidebar')); 119 | sidebarbutton.css({ 120 | 'color': '#FFFFFF', 121 | 'border-left': '1px solid ' + dark_color, 122 | 'font-size': '1.2em', 123 | 'cursor': 'pointer', 124 | 'height': bodywrapper.height(), 125 | 'padding-top': '1px', 126 | 'margin-left': ssb_width_expanded - 12 127 | }); 128 | 129 | sidebarbutton.hover( 130 | function () { 131 | $(this).css('background-color', dark_color); 132 | }, 133 | function () { 134 | $(this).css('background-color', light_color); 135 | } 136 | ); 137 | } 138 | 139 | function set_position_from_cookie() { 140 | if (!document.cookie) 141 | return; 142 | var items = document.cookie.split(';'); 143 | for(var k=0; k2;a== 12 | null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= 13 | function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= 14 | e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= 15 | function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, 17 | c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; 24 | b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, 25 | 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; 26 | b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; 27 | b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), 28 | function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ 29 | u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= 30 | function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= 31 | true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); 32 | -------------------------------------------------------------------------------- /build/html/_static/up-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/up-pressed.png -------------------------------------------------------------------------------- /build/html/_static/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/_static/up.png -------------------------------------------------------------------------------- /build/html/genindex.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Index — CodingConvention 0 documentation 11 | 12 | 13 | 14 | 15 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 38 | 39 | 40 | 58 | 59 | 60 | 72 | 73 | 74 | 75 | 76 | 77 | 86 | 87 |
88 |
89 |
90 |
91 | 92 | 93 |

Index

94 | 95 |
96 | 97 |
98 | 99 | 100 |
101 |
102 |
103 |
104 |
105 | 106 | 107 | 108 | 120 | 121 |
122 |
123 |
124 |
125 | 134 | 138 | 139 | -------------------------------------------------------------------------------- /build/html/index.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Python Coding Conventions — CodingConvention 0 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 57 | 58 | 59 | 71 | 72 | 73 | 74 | 75 | 76 | 85 | 86 |
87 |
88 |
89 |
90 | 91 |
92 |

Python Coding Conventions

93 |

This convention guide serves to establish consistency and readability in our python projects. Like all convention guides, this one is imperfect and in some cases, the convention might be at odds with backwards compatibility or code readability. In these cases, the convention should be abandoned. Readability is more important than strict adherence to the guidelines.

94 |

This guide is based on PEP8. If information is found to be lacking here, go with what PEP8 says, and notify me at AnthonyReid99@gmail.com to update the guide.

95 |

Python Project File Structure

96 |

Python Naming Conventions

97 |

Contributing to the Project

98 |

Python Coding Style Conventions

99 |
100 | 101 | 102 |
103 |
104 |
105 |
106 |
107 |

This Page

108 | 112 | 124 | 125 |
126 |
127 |
128 |
129 | 138 | 142 | 143 | -------------------------------------------------------------------------------- /build/html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/build/html/objects.inv -------------------------------------------------------------------------------- /build/html/pages/code_style.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Python Coding Style Conventions — CodingConvention 0 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 57 | 58 | 59 | 71 | 72 | 73 | 74 | 75 | 76 | 85 | 86 |
87 |
88 |
89 |
90 | 91 |
92 |

Python Coding Style Conventions

93 |
94 |

1. Whitespace

95 |
96 |

1.1. Indentation

97 |
    98 |
  • Lines should be indented with a multiple of 4 spaces depending on indent level
  • 99 |
  • Hanging indents, code that is a continuation of the line above, should be indented to the next level
  • 100 |
  • Use spaces exclusively, no tabs!
  • 101 |
102 |
103 |
104 |

1.2. Blank Lines

105 |
    106 |
  • Leave 2 blank lines between class definitions and module-level functions
  • 107 |
  • Leave 1 blank line between methods in a class
  • 108 |
  • Use blank lines as needed in functions, methods, and modules to visually split up logical blocks of code
  • 109 |
110 |
111 |
112 |

1.3. Spaces In Code

113 |
    114 |
  • Surround binary operators with a space on each side
  • 115 |
  • Do not include spaces around ‘=’ when used to indicate a default argument or keyword argument
  • 116 |
  • In all other cases, extraneous spaces are frowned upon
  • 117 |
118 |
119 |
120 |
121 |

2. Imports

122 |
    123 |
  • Imports should occur at the top of the module, after any module docstring
  • 124 |
  • Standard imports (those beginning with “import”) should each be on a separate line. Do not combine imports into one line.
  • 125 |
  • “From ... import ...”-style imports may be combined together on one line if possible
  • 126 |
  • Wildcard imports should only be used when absolutely necessary, otherwise only import the modules to be used
  • 127 |
128 |
129 |
130 |

3. Code Blocks

131 |
    132 |
  • Do not use parenthesis in the condition for a code block header unless it would be otherwise appropriate to use parenthesis around that condition
  • 133 |
  • Do not use any single line code blocks. Even those with a single statement in the body should occupy multiple lines
  • 134 |
135 |
136 |
137 |

4. Comments

138 |
    139 |
  • First and foremost, comments should be up to date and accurate. When updating code, always make sure to update any comments that refer to it
  • 140 |
  • Comments should be wrapped to 72 characters
  • 141 |
  • Use plain English sentences with proper spelling and grammar. Strongly prefer complete sentences.
  • 142 |
  • Single sentence comments need not end in a period
  • 143 |
  • Clever humor is acceptable on occasion
  • 144 |
  • Do not merely summarize the code that follows. State its overall purpose, justify its inclusion, or explain quirks that other programmers may need to know
  • 145 |
146 |
147 |

4.1. Docstring Comments

148 |
    149 |
  • Docstring comments should consist of a short summary line, optionally (but usually) followed by a blank line, then additional paragraphs with further explanation
  • 150 |
  • All classes and methods should contain a docstring
  • 151 |
  • Modules should contain a docstring if they serve a purpose other than as a container for a class
  • 152 |
153 |
154 |
155 |
156 | 157 | 158 |
159 |
160 |
161 |
162 |
163 |

Table Of Contents

164 | 181 | 182 |

This Page

183 | 187 | 199 | 200 |
201 |
202 |
203 |
204 | 213 | 217 | 218 | -------------------------------------------------------------------------------- /build/html/pages/contributing.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Contributing to the Project — CodingConvention 0 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 57 | 58 | 59 | 71 | 72 | 73 | 74 | 75 | 76 | 85 | 86 |
87 |
88 |
89 |
90 | 91 |
92 |

Contributing to the Project

93 |
94 |

1. Roles and Responsibilities

95 |

There are four main roles for contributing, based on the YUI Contributor Model. They are outlined below.

96 |
97 |

1.1. Users

98 |

Users are community members who have a need for the project. Anyone can be a User; there are no special requirements. Common User contributions include evangelizing the project (e.g., display a link on a website and raise awareness through word-of-mouth), informing developers of strengths and weaknesses from a new user perspective, or providing moral support (a “thank you” goes a long way).

99 |

Users who continue to engage with the project and its community will often become more and more involved. Such Users may find themselves becoming Contributors, as described in the next section.

100 |
101 |
102 |

1.2. Contributors

103 |

Contributors are community members who contribute in concrete ways to the project, most often in the form of code and/or documentation. Anyone can become a Contributor, and contributions can take many forms. There is no expectation of commitment to the project, no specific skill requirements, and no selection process.

104 |

As Contributors gain experience and familiarity with the project, their profile within, and commitment to, the community will increase. At some stage, they may find themselves being nominated for committership by an existing Committer.

105 |
106 |
107 |

1.3. Committers

108 |

Committers are community members who have shown that they are committed to the continued development of the project through ongoing engagement with the community. Committers are given push access to the project’s GitHub repo and must abide by the project’s Contribution Standards, including milestones such as feature complete and code freeze.

109 |

While committership indicates a valued member of the community who has demonstrated a healthy respect for the project’s aims and objectives, their work continues to be reviewed by Reviewers (see below) before acceptance in an official release.

110 |

To become a Committer, one must have shown a willingness and ability to participate in the project as a team player. Typically, a potential Committer will need to show that they have an understanding of and alignment with the project, its objectives, and its strategy. They will also have provided valuable contributions to the project over a period of time and, specifically, a minimum of 8 qualifying pull requests. What’s a qualifying pull request? One that carries significant technical weight and requires little effort to accept because it’s well documented and tested.

111 |

New Committers can be nominated by any existing Committer. Once they have been nominated, there will be a discussion and vote by the Reviewers. While there is no formal system in place for this right now, Reviewers will try to use their best judgement, always keeping the project’s best interests in mind.

112 |

It is important to recognize that committership is a privilege, not a right. That privilege must be earned and once earned it can be removed by the Reviewers (see next section) in extreme circumstances. However, under normal circumstances committership exists for as long as the Committer wishes to continue engaging with the project.

113 |

A Committer who shows an above-average level of contribution to the project, particularly with respect to its strategic direction and long-term health, may be nominated to become a Reviewer, described below.

114 |
115 |
116 |

1.4. Reviewers

117 |

Reviewers are individuals identified as “project admins” for the project on GitHub. Reviewers have additional responsibilities over and above those of a Committer. These responsibilities ensure the smooth running of the project. Reviewers are expected to review code contributions, approve changes to this document, and manage the copyrights within the project outputs.

118 |

Reviewers’ contributions can be reviewed by other Reviewers, but this is not explicitly required. Reviewers do not have significant authority over other members of the community, although it is the Reviewers that vote on new Committers. They also make decisions when community consensus cannot be reached.

119 |

A Committer is invited to become a Reviewer by existing Reviewers. An existing Committer may be considered for Reviewer status only after they have submitted 40 qualifying pull requests of technical significance that have been accepted without significant rework into the project. A nomination will result in discussion and then a vote by the existing Reviewers.

120 |
121 |
122 |
123 |

2. GitHub

124 |
125 |

2.1. Forking

126 |

To begin working on the project, you need to grab the latest code first. This can be done by forking the repository.

127 |
128 |
129 |

2.1. Pull Requests

130 |
131 |
All contributions to this project must be made through Pull Requests. Pull requests are reviewed on a first come first serve basis by at least one of the Reviewers. In order to be accepted, the submitted code must meet the following criteria:
132 |
    133 |
  • It must be apparently free of bugs, or if intractable bugs are present and the code is still useful, bugs must be clearly documented and relevant issues must be created on GitHub
  • 134 |
  • It must meet all of the coding and documenting conventions laid out in these documents
  • 135 |
  • It must integrate well with existing code
  • 136 |
137 |
138 |
139 |
140 |
141 |

2.2. Pulling from Upstream

142 |

To get the latest changes from the original repository, you need to pull from upstream.

143 |
144 |
145 |

2.3. Issue Tracking

146 |

GitHub’s Issues system will be used to track known bugs and issues, as well as manage feature requests.

147 |
148 |
149 |
150 |

3. Git

151 |
152 |

3.1. Committing

153 |
154 |

3.1.1. Commit Messages

155 |
156 |
Commit messages consist of:
157 |
    158 |
  • A short summary of changes made to be limited to 50 characters in width. This line should not end with a period, and should always be followed by a blank line.
  • 159 |
  • Additional paragraphs providing more detail, separated by blank lines, and limited to 72 characters in width.
  • 160 |
  • Bullet points may also be used, and may be indicated by a ‘*’ or a ‘-‘
  • 161 |
162 |
163 |
164 |
    165 |
  • 166 |
    The commit message should be written in the imperative tone, that is, as if commanding somebody to make your changes
    167 |
      168 |
    • Good: “Fix the time zone bug and change the path”
    • 169 |
    • Bad: “Fixed the time zone bug and changed the path”
    • 170 |
    171 |
    172 |
    173 |
  • 174 |
175 |

For more on why this is good practice, check out this article.

176 |
177 |
178 |

3.1.2. Commit Size

179 |

Commits should address one issue at a time. Those that contain multiple unrelated changes should be split appropriately. Adjacent commits that each contain partial changes related to the same feature should be squashed together. Read up on rewriting commit history for more on managing commit size.

180 |
181 |
182 |
183 |
184 | 185 | 186 |
187 |
188 |
189 |
190 |
191 |

Table Of Contents

192 | 219 | 220 |

This Page

221 | 225 | 237 | 238 |
239 |
240 |
241 |
242 | 251 | 255 | 256 | -------------------------------------------------------------------------------- /build/html/pages/naming_convention.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Python Naming Conventions — CodingConvention 0 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 57 | 58 | 59 | 71 | 72 | 73 | 74 | 75 | 76 | 85 | 86 |
87 |
88 |
89 |
90 | 91 |
92 |

Python Naming Conventions

93 |
94 |

1. General

95 |
    96 |
  • Avoid using names that are too general or too wordy. Strike a good balance between the two.
  • 97 |
  • Bad: data_structure, my_list, info_map, dictionary_for_the_purpose_of_storing_data_representing_word_definitions
  • 98 |
  • Good: user_profile, menu_options, word_definitions
  • 99 |
  • Don’t be a jackass and name things “O”, “l”, or “I”
  • 100 |
  • When using CamelCase names, capitalize all letters of an abbreviation (e.g. HTTPServer)
  • 101 |
102 |
103 |
104 |

2. Packages

105 |
    106 |
  • Package names should be all lower case
  • 107 |
  • When multiple words are needed, an underscore should separate them
  • 108 |
  • It is usually preferable to stick to 1 word names
  • 109 |
110 |
111 |
112 |

3. Modules

113 |
    114 |
  • Module names should be all lower case
  • 115 |
  • When multiple words are needed, an underscore should separate them
  • 116 |
  • It is usually preferable to stick to 1 word names
  • 117 |
118 |
119 |
120 |

4. Classes

121 |
    122 |
  • Class names should follow the UpperCaseCamelCase convention
  • 123 |
  • Python’s built-in classes, however are typically lowercase words
  • 124 |
  • Exception classes should end in “Error”
  • 125 |
126 |
127 |
128 |

5. Global (module-level) Variables

129 |
    130 |
  • Global variables should be all lowercase
  • 131 |
  • Words in a global variable name should be separated by an underscore
  • 132 |
133 |
134 |
135 |

6. Instance Variables

136 |
    137 |
  • Instance variable names should be all lower case
  • 138 |
  • Words in an instance variable name should be separated by an underscore
  • 139 |
  • Non-public instance variables should begin with a single underscore
  • 140 |
  • If an instance name needs to be mangled, two underscores may begin its name
  • 141 |
142 |
143 |
144 |

7. Methods

145 |
    146 |
  • Method names should be all lower case
  • 147 |
  • Words in an method name should be separated by an underscore
  • 148 |
  • Non-public method should begin with a single underscore
  • 149 |
  • If a method name needs to be mangled, two underscores may begin its name
  • 150 |
151 |
152 |
153 |

8. Method Arguments

154 |
    155 |
  • Instance methods should have their first argument named ‘self’.
  • 156 |
  • Class methods should have their first argument named ‘cls’
  • 157 |
158 |
159 |
160 |

9. Functions

161 |
    162 |
  • Function names should be all lower case
  • 163 |
  • Words in a function name should be separated by an underscore
  • 164 |
165 |
166 |
167 |

10. Constants

168 |
    169 |
  • Constant names must be fully capitalized
  • 170 |
  • Words in a constant name should be separated by an underscore
  • 171 |
172 |
173 |
174 | 175 | 176 |
177 |
178 |
179 |
180 |
181 |

Table Of Contents

182 | 197 | 198 |

This Page

199 | 203 | 215 | 216 |
217 |
218 |
219 |
220 | 229 | 233 | 234 | -------------------------------------------------------------------------------- /build/html/pages/project_file_structure.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Python Project File Structure — CodingConvention 0 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 57 | 58 | 59 | 71 | 72 | 73 | 74 | 75 | 76 | 85 | 86 |
87 |
88 |
89 |
90 | 91 |
92 |

Python Project File Structure

93 |
94 |

1. Overall Structure

95 |
    96 |
  • 97 |
    project_root
    98 |
      99 |
    • 100 |
      src
      101 |
        102 |
      • git

        103 |
      • 104 |
      • 105 |
        ui
        106 |
          107 |
        • canvas
        • 108 |
        • dashboard
        • 109 |
        110 |
        111 |
        112 |
      • 113 |
      114 |
      115 |
      116 |
    • 117 |
    • 118 |
      ui
      119 |
        120 |
      • resources
      • 121 |
      122 |
      123 |
      124 |
    • 125 |
    • 126 |
      doc
      127 |
        128 |
      • api
      • 129 |
      • guide
      • 130 |
      131 |
      132 |
      133 |
    • 134 |
    135 |
    136 |
    137 |
  • 138 |
139 |
140 |
141 |

2. Directory Details

142 |
143 |

2.1. project_root

144 |

All files that are part of the project. The directory should be named after the project itself, and should be the git repo root directory.

145 |
146 |
147 |

2.2. src

148 |

All python source modules, separated into packages where there is shared functionality. In PyCharm, the src folder must be marked as the “Sources Root” directory by right-clicking on it and selecting Mark Directory As > Sources Root.

149 |
150 |

2.2.1. git

151 |

Git data model and git command API.

152 |
153 |
154 |

2.2.2. ui

155 |

User interface.

156 |
157 |
158 |
159 |

2.3. ui

160 |

All of the .ui interface files generated by qt-designer. It contains a subfolder, called ‘resources’ that contains all resources referenced from .ui files or from code.

161 |
162 |
163 |

2.4. doc

164 |

All of the documentation generated for this project. Within it are two subfolders, ‘api’ and ‘guide’. ‘api’ contains API documentation (i.e. docs culled from sources), whereas the ‘guide’ folder contains our main documentation guide.

165 |
166 |
167 |
168 | 169 | 170 |
171 |
172 |
173 |
174 |
175 |

Table Of Contents

176 | 193 | 194 |

This Page

195 | 199 | 211 | 212 |
213 |
214 |
215 |
216 | 225 | 229 | 230 | -------------------------------------------------------------------------------- /build/html/search.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Search — CodingConvention 0 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 46 | 64 | 65 | 66 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 93 | 94 |
95 |
96 |
97 |
98 | 99 |

Search

100 |
101 | 102 |

103 | Please activate JavaScript to enable the search 104 | functionality. 105 |

106 |
107 |

108 | From here you can search these documents. Enter your search 109 | words into the box below and click "search". Note that the search 110 | function will automatically search for all of the words. Pages 111 | containing fewer words won't appear in the result list. 112 |

113 |
114 | 115 | 116 | 117 |
118 | 119 |
120 | 121 |
122 | 123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 | 141 | 145 | 146 | -------------------------------------------------------------------------------- /build/html/searchindex.js: -------------------------------------------------------------------------------- 1 | Search.setIndex({envversion:42,terms:{all:[0,1,2,3,4],partial:2,lack:1,four:2,signific:2,abil:2,follow:[0,2,3],abid:2,accur:3,depend:3,zone:2,user_profil:0,readabl:1,articl:2,concret:2,decis:2,under:2,sourc:4,than:[1,3],my_list:0,evangel:2,appar:2,relev:2,level:[2,3],"try":2,team:2,work:2,resourc:4,direct:2,design:4,further:3,odd:1,click:4,compat:1,what:[1,2],section:2,access:2,abbrevi:0,"new":2,"public":0,cull:4,ongo:2,themselv:2,here:1,bodi:3,address:2,path:2,standard:[2,3],valu:2,invit:2,healthi:2,extrem:2,typic:[0,2],although:2,modul:3,prefer:[0,3],api:4,moral:2,demonstr:2,establish:1,select:[4,2],from:3,describ:2,would:3,commun:2,two:[0,4],next:[2,3],websit:2,call:4,criteria:2,strike:0,more:[1,2],capit:0,clever:3,relat:2,visual:3,indic:[2,3],known:2,effort:2,must:[0,4,2],word:[0,2],valuabl:2,outlin:2,imper:2,histori:2,paragraph:[2,3],can:2,abandon:1,meet:2,rework:2,purpos:3,root:4,process:2,share:4,accept:[2,3],minimum:2,tab:3,occur:3,alwai:[2,3],multipl:[0,2,3],anyon:2,those:[2,3],perspect:2,updat:[1,3],recogn:2,referenc:4,after:[4,2,3],befor:2,mai:[0,2,3],end:[0,2,3],underscor:0,data:4,averag:2,circumst:2,"short":[2,3],practic:2,ani:[2,3],mangl:0,inform:[1,2],combin:3,exclus:3,order:2,origin:2,offici:2,approv:2,becaus:2,word_definit:0,through:2,still:2,style:1,thank:2,consensu:2,fix:2,willing:2,main:[4,2],might:1,them:0,good:[0,2],thei:[2,3],sentenc:3,overal:3,strateg:2,somebodi:2,now:2,discuss:2,term:2,grammar:3,name:1,separ:[0,4,2,3],each:[2,3],found:1,side:3,weight:2,individu:2,continu:[2,3],ensur:2,expect:2,our:[1,4],special:2,out:2,shown:2,goe:2,mere:3,profil:2,rewrit:2,laid:2,health:2,integr:2,qualifi:2,committership:2,wherea:4,free:2,parenthesi:3,base:[1,2],releas:2,upon:3,basi:2,keep:2,yui:2,thing:0,menu_opt:0,place:2,first:[0,2,3],oper:3,notifi:1,carri:2,onc:2,date:3,done:2,submit:2,vote:2,given:2,nomin:2,strict:1,top:3,system:2,least:2,too:0,statement:3,adher:1,imperfect:1,option:3,uppercasecamelcas:0,part:4,technic:2,serv:[1,2,3],keyword:3,provid:2,remov:2,structur:1,charact:[2,3],project:1,balanc:0,sai:1,mind:2,clearli:2,have:[0,2],need:[0,2,3],data_structur:0,strength:2,built:0,self:0,also:2,take:2,singl:[0,3],even:3,begin:[0,2,3],sure:3,unless:3,mileston:2,object:2,reach:2,most:2,mouth:2,letter:0,"class":3,don:0,wildcard:3,latest:2,show:2,particularli:2,find:2,involv:2,absolut:3,onli:[2,3],explicitli:2,copyright:2,explain:3,written:2,should:[0,1,2,3,4],folder:4,over:2,contribut:1,get:2,familiar:2,wordi:0,foremost:3,repo:[4,2],cannot:2,increas:2,requir:2,earn:2,method:3,bad:[0,2],common:2,contain:[4,2,3],privileg:2,grab:2,where:4,summari:[2,3],info_map:0,see:2,result:2,best:2,gmail:1,awar:2,statu:2,particip:2,state:3,between:[0,3],"import":1,experi:2,weak:2,lowercas:0,come:2,addit:[2,3],admin:2,howev:[0,2],logic:3,mani:2,com:1,tone:2,point:2,guidelin:1,period:[2,3],header:3,respect:2,guid:[1,4],summar:3,becom:2,subfold:4,been:2,mark:4,interest:2,jackass:0,strategi:2,squash:2,argument:3,understand:2,togeth:[2,3],present:2,"case":[0,1,3],plain:3,align:2,aim:2,"while":2,dashboard:4,abov:[2,3],error:0,occas:3,engag:2,non:0,player:2,itself:4,around:3,httpserver:0,develop:2,author:2,make:[2,3],same:2,member:2,binari:3,split:[2,3],document:[4,2],complet:[2,3],spell:3,hang:3,rais:2,canva:4,chang:2,lower:0,appropri:[2,3],well:2,justifi:3,pep8:1,without:2,command:[4,2],thi:[1,2,4],english:3,programm:3,model:[4,2],usual:[0,3],explan:3,identifi:2,skill:2,dictionary_for_the_purpose_of_storing_data_representing_word_definit:0,except:0,littl:2,frown:3,quirk:3,read:2,judgement:2,camelcas:0,know:3,formal:2,like:1,specif:2,necessari:3,output:2,manag:2,right:[4,2],often:2,some:[1,2],proper:3,freez:2,humor:3,avoid:0,normal:2,definit:3,intract:2,leav:3,condit:3,refer:3,who:2,run:2,repositori:2,fulli:0,anthonyreid99:1,stage:2,surround:3,within:[4,2],wrap:3,your:2,occupi:3,inclus:3,wai:2,support:2,"long":2,why:2,width:2,adjac:2,interfac:4,includ:[2,3],"function":3,form:2,link:2,gain:2,bug:2,made:2,consist:[1,2,3],possibl:3,"default":3,wish:2,smooth:2,displai:2,below:2,limit:2,otherwis:3,unrel:2,featur:2,creat:2,pycharm:4,strongli:3,exist:2,file:1,check:2,when:[0,2,3],detail:2,other:[2,3],test:2,you:2,consid:2,bullet:2,extran:3,potenti:2,time:2,push:2,backward:1,stick:0},objtypes:{},objnames:{},filenames:["pages/naming_convention","index","pages/contributing","pages/code_style","pages/project_file_structure"],titles:["Python Naming Conventions","Python Coding Conventions","Contributing to the Project","Python Coding Style Conventions","Python Project File Structure"],objects:{},titleterms:{comment:3,fork:2,code:[1,3],constant:0,modul:0,respons:2,argument:0,packag:0,file:4,blank:3,contributor:2,size:2,variabl:0,project:[4,2],style:3,git:[4,2],from:2,convent:[0,1,3],space:3,review:2,detail:4,messag:2,python:[0,1,3,4],instanc:0,role:2,"import":3,method:0,"function":0,global:0,contribut:2,pull:2,track:2,gener:0,overal:4,docstr:3,committ:2,user:2,upstream:2,line:3,"class":0,src:4,github:2,indent:3,name:0,whitespac:3,directori:4,doc:4,level:0,request:2,structur:4,issu:2,project_root:4,commit:2,block:3}}) -------------------------------------------------------------------------------- /make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM Command file for Sphinx documentation 4 | 5 | if "%SPHINXBUILD%" == "" ( 6 | set SPHINXBUILD=sphinx-build 7 | ) 8 | set BUILDDIR=build 9 | set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source 10 | set I18NSPHINXOPTS=%SPHINXOPTS% source 11 | if NOT "%PAPER%" == "" ( 12 | set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% 13 | set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% 14 | ) 15 | 16 | if "%1" == "" goto help 17 | 18 | if "%1" == "help" ( 19 | :help 20 | echo.Please use `make ^` where ^ is one of 21 | echo. html to make standalone HTML files 22 | echo. dirhtml to make HTML files named index.html in directories 23 | echo. singlehtml to make a single large HTML file 24 | echo. pickle to make pickle files 25 | echo. json to make JSON files 26 | echo. htmlhelp to make HTML files and a HTML help project 27 | echo. qthelp to make HTML files and a qthelp project 28 | echo. devhelp to make HTML files and a Devhelp project 29 | echo. epub to make an epub 30 | echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter 31 | echo. text to make text files 32 | echo. man to make manual pages 33 | echo. texinfo to make Texinfo files 34 | echo. gettext to make PO message catalogs 35 | echo. changes to make an overview over all changed/added/deprecated items 36 | echo. xml to make Docutils-native XML files 37 | echo. pseudoxml to make pseudoxml-XML files for display purposes 38 | echo. linkcheck to check all external links for integrity 39 | echo. doctest to run all doctests embedded in the documentation if enabled 40 | goto end 41 | ) 42 | 43 | if "%1" == "clean" ( 44 | for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i 45 | del /q /s %BUILDDIR%\* 46 | goto end 47 | ) 48 | 49 | 50 | %SPHINXBUILD% 2> nul 51 | if errorlevel 9009 ( 52 | echo. 53 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 54 | echo.installed, then set the SPHINXBUILD environment variable to point 55 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 56 | echo.may add the Sphinx directory to PATH. 57 | echo. 58 | echo.If you don't have Sphinx installed, grab it from 59 | echo.http://sphinx-doc.org/ 60 | exit /b 1 61 | ) 62 | 63 | if "%1" == "html" ( 64 | %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html 65 | if errorlevel 1 exit /b 1 66 | echo. 67 | echo.Build finished. The HTML pages are in %BUILDDIR%/html. 68 | goto end 69 | ) 70 | 71 | if "%1" == "dirhtml" ( 72 | %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml 73 | if errorlevel 1 exit /b 1 74 | echo. 75 | echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. 76 | goto end 77 | ) 78 | 79 | if "%1" == "singlehtml" ( 80 | %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml 81 | if errorlevel 1 exit /b 1 82 | echo. 83 | echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. 84 | goto end 85 | ) 86 | 87 | if "%1" == "pickle" ( 88 | %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle 89 | if errorlevel 1 exit /b 1 90 | echo. 91 | echo.Build finished; now you can process the pickle files. 92 | goto end 93 | ) 94 | 95 | if "%1" == "json" ( 96 | %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json 97 | if errorlevel 1 exit /b 1 98 | echo. 99 | echo.Build finished; now you can process the JSON files. 100 | goto end 101 | ) 102 | 103 | if "%1" == "htmlhelp" ( 104 | %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp 105 | if errorlevel 1 exit /b 1 106 | echo. 107 | echo.Build finished; now you can run HTML Help Workshop with the ^ 108 | .hhp project file in %BUILDDIR%/htmlhelp. 109 | goto end 110 | ) 111 | 112 | if "%1" == "qthelp" ( 113 | %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp 114 | if errorlevel 1 exit /b 1 115 | echo. 116 | echo.Build finished; now you can run "qcollectiongenerator" with the ^ 117 | .qhcp project file in %BUILDDIR%/qthelp, like this: 118 | echo.^> qcollectiongenerator %BUILDDIR%\qthelp\CodingConvention.qhcp 119 | echo.To view the help file: 120 | echo.^> assistant -collectionFile %BUILDDIR%\qthelp\CodingConvention.ghc 121 | goto end 122 | ) 123 | 124 | if "%1" == "devhelp" ( 125 | %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp 126 | if errorlevel 1 exit /b 1 127 | echo. 128 | echo.Build finished. 129 | goto end 130 | ) 131 | 132 | if "%1" == "epub" ( 133 | %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub 134 | if errorlevel 1 exit /b 1 135 | echo. 136 | echo.Build finished. The epub file is in %BUILDDIR%/epub. 137 | goto end 138 | ) 139 | 140 | if "%1" == "latex" ( 141 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 142 | if errorlevel 1 exit /b 1 143 | echo. 144 | echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. 145 | goto end 146 | ) 147 | 148 | if "%1" == "latexpdf" ( 149 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 150 | cd %BUILDDIR%/latex 151 | make all-pdf 152 | cd %BUILDDIR%/.. 153 | echo. 154 | echo.Build finished; the PDF files are in %BUILDDIR%/latex. 155 | goto end 156 | ) 157 | 158 | if "%1" == "latexpdfja" ( 159 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 160 | cd %BUILDDIR%/latex 161 | make all-pdf-ja 162 | cd %BUILDDIR%/.. 163 | echo. 164 | echo.Build finished; the PDF files are in %BUILDDIR%/latex. 165 | goto end 166 | ) 167 | 168 | if "%1" == "text" ( 169 | %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text 170 | if errorlevel 1 exit /b 1 171 | echo. 172 | echo.Build finished. The text files are in %BUILDDIR%/text. 173 | goto end 174 | ) 175 | 176 | if "%1" == "man" ( 177 | %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man 178 | if errorlevel 1 exit /b 1 179 | echo. 180 | echo.Build finished. The manual pages are in %BUILDDIR%/man. 181 | goto end 182 | ) 183 | 184 | if "%1" == "texinfo" ( 185 | %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo 186 | if errorlevel 1 exit /b 1 187 | echo. 188 | echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. 189 | goto end 190 | ) 191 | 192 | if "%1" == "gettext" ( 193 | %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale 194 | if errorlevel 1 exit /b 1 195 | echo. 196 | echo.Build finished. The message catalogs are in %BUILDDIR%/locale. 197 | goto end 198 | ) 199 | 200 | if "%1" == "changes" ( 201 | %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes 202 | if errorlevel 1 exit /b 1 203 | echo. 204 | echo.The overview file is in %BUILDDIR%/changes. 205 | goto end 206 | ) 207 | 208 | if "%1" == "linkcheck" ( 209 | %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck 210 | if errorlevel 1 exit /b 1 211 | echo. 212 | echo.Link check complete; look for any errors in the above output ^ 213 | or in %BUILDDIR%/linkcheck/output.txt. 214 | goto end 215 | ) 216 | 217 | if "%1" == "doctest" ( 218 | %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest 219 | if errorlevel 1 exit /b 1 220 | echo. 221 | echo.Testing of doctests in the sources finished, look at the ^ 222 | results in %BUILDDIR%/doctest/output.txt. 223 | goto end 224 | ) 225 | 226 | if "%1" == "xml" ( 227 | %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml 228 | if errorlevel 1 exit /b 1 229 | echo. 230 | echo.Build finished. The XML files are in %BUILDDIR%/xml. 231 | goto end 232 | ) 233 | 234 | if "%1" == "pseudoxml" ( 235 | %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml 236 | if errorlevel 1 exit /b 1 237 | echo. 238 | echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. 239 | goto end 240 | ) 241 | 242 | :end 243 | -------------------------------------------------------------------------------- /source/_static/rtd.css: -------------------------------------------------------------------------------- 1 | /* 2 | * rtd.css 3 | * ~~~~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- sphinxdoc theme. Originally created by 6 | * Armin Ronacher for Werkzeug. 7 | * 8 | * Customized for ReadTheDocs by Eric Pierce & Eric Holscher 9 | * 10 | * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. 11 | * :license: BSD, see LICENSE for details. 12 | * 13 | */ 14 | 15 | /* RTD colors 16 | * light blue: #e8ecef 17 | * medium blue: #8ca1af 18 | * dark blue: #465158 19 | * dark grey: #444444 20 | * 21 | * white hover: #d1d9df; 22 | * medium blue hover: #697983; 23 | * green highlight: #8ecc4c 24 | * light blue (project bar): #e8ecef 25 | */ 26 | 27 | @import url("basic.css"); 28 | 29 | /* PAGE LAYOUT -------------------------------------------------------------- */ 30 | 31 | body { 32 | font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; 33 | text-align: center; 34 | color: black; 35 | background-color: #465158; 36 | padding: 0; 37 | margin: 0; 38 | } 39 | 40 | div.document { 41 | text-align: left; 42 | background-color: #e8ecef; 43 | } 44 | 45 | div.bodywrapper { 46 | background-color: #ffffff; 47 | border-left: 1px solid #ccc; 48 | border-bottom: 1px solid #ccc; 49 | margin: 0 0 0 16em; 50 | } 51 | 52 | div.body { 53 | margin: 0; 54 | padding: 0.5em 1.3em; 55 | min-width: 20em; 56 | } 57 | 58 | div.related { 59 | font-size: 1em; 60 | background-color: #465158; 61 | } 62 | 63 | div.documentwrapper { 64 | float: left; 65 | width: 100%; 66 | background-color: #e8ecef; 67 | } 68 | 69 | 70 | /* HEADINGS --------------------------------------------------------------- */ 71 | 72 | h1 { 73 | margin: 0; 74 | padding: 0.7em 0 0.3em 0; 75 | font-size: 1.5em; 76 | line-height: 1.15; 77 | color: #111; 78 | clear: both; 79 | } 80 | 81 | h2 { 82 | margin: 2em 0 0.2em 0; 83 | font-size: 1.35em; 84 | padding: 0; 85 | color: #465158; 86 | } 87 | 88 | h3 { 89 | margin: 1em 0 -0.3em 0; 90 | font-size: 1.2em; 91 | color: #6c818f; 92 | } 93 | 94 | div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { 95 | color: black; 96 | } 97 | 98 | h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { 99 | display: none; 100 | margin: 0 0 0 0.3em; 101 | padding: 0 0.2em 0 0.2em; 102 | color: #aaa !important; 103 | } 104 | 105 | h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, 106 | h5:hover a.anchor, h6:hover a.anchor { 107 | display: inline; 108 | } 109 | 110 | h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, 111 | h5 a.anchor:hover, h6 a.anchor:hover { 112 | color: #777; 113 | background-color: #eee; 114 | } 115 | 116 | 117 | /* LINKS ------------------------------------------------------------------ */ 118 | 119 | /* Normal links get a pseudo-underline */ 120 | a { 121 | color: #444; 122 | text-decoration: none; 123 | border-bottom: 1px solid #ccc; 124 | } 125 | 126 | /* Links in sidebar, TOC, index trees and tables have no underline */ 127 | .sphinxsidebar a, 128 | .toctree-wrapper a, 129 | .indextable a, 130 | #indices-and-tables a { 131 | color: #444; 132 | text-decoration: none; 133 | /* border-bottom: none; */ 134 | } 135 | 136 | /* Search box size */ 137 | div.sphinxsidebar #searchbox input[type="submit"] { 138 | width: 50px; 139 | } 140 | 141 | /* Most links get an underline-effect when hovered */ 142 | a:hover, 143 | div.toctree-wrapper a:hover, 144 | .indextable a:hover, 145 | #indices-and-tables a:hover { 146 | color: #111; 147 | text-decoration: none; 148 | border-bottom: 1px solid #111; 149 | } 150 | 151 | /* Footer links */ 152 | div.footer a { 153 | color: #86989B; 154 | text-decoration: none; 155 | border: none; 156 | } 157 | div.footer a:hover { 158 | color: #a6b8bb; 159 | text-decoration: underline; 160 | border: none; 161 | } 162 | 163 | /* Permalink anchor (subtle grey with a red hover) */ 164 | div.body a.headerlink { 165 | color: #ccc; 166 | font-size: 1em; 167 | margin-left: 6px; 168 | padding: 0 4px 0 4px; 169 | text-decoration: none; 170 | border: none; 171 | } 172 | div.body a.headerlink:hover { 173 | color: #c60f0f; 174 | border: none; 175 | } 176 | 177 | 178 | /* NAVIGATION BAR --------------------------------------------------------- */ 179 | 180 | div.related ul { 181 | height: 2.5em; 182 | } 183 | 184 | div.related ul li { 185 | margin: 0; 186 | padding: 0.65em 0; 187 | float: left; 188 | display: block; 189 | color: white; /* For the >> separators */ 190 | font-size: 0.8em; 191 | } 192 | 193 | div.related ul li.right { 194 | float: right; 195 | margin-right: 5px; 196 | color: transparent; /* Hide the | separators */ 197 | } 198 | 199 | /* "Breadcrumb" links in nav bar */ 200 | div.related ul li a { 201 | order: none; 202 | background-color: inherit; 203 | font-weight: bold; 204 | margin: 6px 0 6px 4px; 205 | line-height: 1.75em; 206 | color: #ffffff; 207 | padding: 0.4em 0.8em; 208 | border: none; 209 | border-radius: 3px; 210 | } 211 | /* previous / next / modules / index links look more like buttons */ 212 | div.related ul li.right a { 213 | margin: 0.375em 0; 214 | background-color: #697983; 215 | text-shadow: 0 1px rgba(0, 0, 0, 0.5); 216 | border-radius: 3px; 217 | -webkit-border-radius: 3px; 218 | -moz-border-radius: 3px; 219 | } 220 | /* All navbar links light up as buttons when hovered */ 221 | div.related ul li a:hover { 222 | background-color: #8ca1af; 223 | color: #ffffff; 224 | text-decoration: none; 225 | border-radius: 3px; 226 | -webkit-border-radius: 3px; 227 | -moz-border-radius: 3px; 228 | } 229 | /* Take extra precautions for tt within links */ 230 | a tt, 231 | div.related ul li a tt { 232 | background: inherit !important; 233 | color: inherit !important; 234 | } 235 | 236 | 237 | /* SIDEBAR ---------------------------------------------------------------- */ 238 | 239 | div.sphinxsidebarwrapper { 240 | padding: 0; 241 | } 242 | 243 | div.sphinxsidebar { 244 | margin: 0; 245 | margin-left: -100%; 246 | float: left; 247 | top: 3em; 248 | left: 0; 249 | padding: 0 1em; 250 | width: 14em; 251 | font-size: 1em; 252 | text-align: left; 253 | background-color: #e8ecef; 254 | } 255 | 256 | div.sphinxsidebar img { 257 | max-width: 12em; 258 | } 259 | 260 | div.sphinxsidebar h3, 261 | div.sphinxsidebar h4, 262 | div.sphinxsidebar p.logo { 263 | margin: 1.2em 0 0.3em 0; 264 | font-size: 1em; 265 | padding: 0; 266 | color: #222222; 267 | font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; 268 | } 269 | 270 | div.sphinxsidebar h3 a { 271 | color: #444444; 272 | } 273 | 274 | div.sphinxsidebar ul, 275 | div.sphinxsidebar p { 276 | margin-top: 0; 277 | padding-left: 0; 278 | line-height: 130%; 279 | background-color: #e8ecef; 280 | } 281 | 282 | /* No bullets for nested lists, but a little extra indentation */ 283 | div.sphinxsidebar ul ul { 284 | list-style-type: none; 285 | margin-left: 1.5em; 286 | padding: 0; 287 | } 288 | 289 | /* A little top/bottom padding to prevent adjacent links' borders 290 | * from overlapping each other */ 291 | div.sphinxsidebar ul li { 292 | padding: 1px 0; 293 | } 294 | 295 | /* A little left-padding to make these align with the ULs */ 296 | div.sphinxsidebar p.topless { 297 | padding-left: 0 0 0 1em; 298 | } 299 | 300 | /* Make these into hidden one-liners */ 301 | div.sphinxsidebar ul li, 302 | div.sphinxsidebar p.topless { 303 | white-space: nowrap; 304 | overflow: hidden; 305 | } 306 | /* ...which become visible when hovered */ 307 | div.sphinxsidebar ul li:hover, 308 | div.sphinxsidebar p.topless:hover { 309 | overflow: visible; 310 | } 311 | 312 | /* Search text box and "Go" button */ 313 | #searchbox { 314 | margin-top: 2em; 315 | margin-bottom: 1em; 316 | background: #ddd; 317 | padding: 0.5em; 318 | border-radius: 6px; 319 | -moz-border-radius: 6px; 320 | -webkit-border-radius: 6px; 321 | } 322 | #searchbox h3 { 323 | margin-top: 0; 324 | } 325 | 326 | /* Make search box and button abut and have a border */ 327 | input, 328 | div.sphinxsidebar input { 329 | border: 1px solid #999; 330 | float: left; 331 | } 332 | 333 | /* Search textbox */ 334 | input[type="text"] { 335 | margin: 0; 336 | padding: 0 3px; 337 | height: 20px; 338 | width: 144px; 339 | border-top-left-radius: 3px; 340 | border-bottom-left-radius: 3px; 341 | -moz-border-radius-topleft: 3px; 342 | -moz-border-radius-bottomleft: 3px; 343 | -webkit-border-top-left-radius: 3px; 344 | -webkit-border-bottom-left-radius: 3px; 345 | } 346 | /* Search button */ 347 | input[type="submit"] { 348 | margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ 349 | height: 22px; 350 | color: #444; 351 | background-color: #e8ecef; 352 | padding: 1px 4px; 353 | font-weight: bold; 354 | border-top-right-radius: 3px; 355 | border-bottom-right-radius: 3px; 356 | -moz-border-radius-topright: 3px; 357 | -moz-border-radius-bottomright: 3px; 358 | -webkit-border-top-right-radius: 3px; 359 | -webkit-border-bottom-right-radius: 3px; 360 | } 361 | input[type="submit"]:hover { 362 | color: #ffffff; 363 | background-color: #8ecc4c; 364 | } 365 | 366 | div.sphinxsidebar p.searchtip { 367 | clear: both; 368 | padding: 0.5em 0 0 0; 369 | background: #ddd; 370 | color: #666; 371 | font-size: 0.9em; 372 | } 373 | 374 | /* Sidebar links are unusual */ 375 | div.sphinxsidebar li a, 376 | div.sphinxsidebar p a { 377 | background: #e8ecef; /* In case links overlap main content */ 378 | border-radius: 3px; 379 | -moz-border-radius: 3px; 380 | -webkit-border-radius: 3px; 381 | border: 1px solid transparent; /* To prevent things jumping around on hover */ 382 | padding: 0 5px 0 5px; 383 | } 384 | div.sphinxsidebar li a:hover, 385 | div.sphinxsidebar p a:hover { 386 | color: #111; 387 | text-decoration: none; 388 | border: 1px solid #888; 389 | } 390 | div.sphinxsidebar p.logo a { 391 | border: 0; 392 | } 393 | 394 | /* Tweak any link appearing in a heading */ 395 | div.sphinxsidebar h3 a { 396 | } 397 | 398 | 399 | 400 | 401 | /* OTHER STUFF ------------------------------------------------------------ */ 402 | 403 | cite, code, tt { 404 | font-family: 'Consolas', 'Deja Vu Sans Mono', 405 | 'Bitstream Vera Sans Mono', monospace; 406 | font-size: 0.95em; 407 | letter-spacing: 0.01em; 408 | } 409 | 410 | tt { 411 | background-color: #f2f2f2; 412 | color: #444; 413 | } 414 | 415 | tt.descname, tt.descclassname, tt.xref { 416 | border: 0; 417 | } 418 | 419 | hr { 420 | border: 1px solid #abc; 421 | margin: 2em; 422 | } 423 | 424 | 425 | pre, #_fontwidthtest { 426 | font-family: 'Consolas', 'Deja Vu Sans Mono', 427 | 'Bitstream Vera Sans Mono', monospace; 428 | margin: 1em 2em; 429 | font-size: 0.95em; 430 | letter-spacing: 0.015em; 431 | line-height: 120%; 432 | padding: 0.5em; 433 | border: 1px solid #ccc; 434 | background-color: #eee; 435 | border-radius: 6px; 436 | -moz-border-radius: 6px; 437 | -webkit-border-radius: 6px; 438 | } 439 | 440 | pre a { 441 | color: inherit; 442 | text-decoration: underline; 443 | } 444 | 445 | td.linenos pre { 446 | margin: 1em 0em; 447 | } 448 | 449 | td.code pre { 450 | margin: 1em 0em; 451 | } 452 | 453 | div.quotebar { 454 | background-color: #f8f8f8; 455 | max-width: 250px; 456 | float: right; 457 | padding: 2px 7px; 458 | border: 1px solid #ccc; 459 | } 460 | 461 | div.topic { 462 | background-color: #f8f8f8; 463 | } 464 | 465 | table { 466 | border-collapse: collapse; 467 | margin: 0 -0.5em 0 -0.5em; 468 | } 469 | 470 | table td, table th { 471 | padding: 0.2em 0.5em 0.2em 0.5em; 472 | } 473 | 474 | 475 | /* ADMONITIONS AND WARNINGS ------------------------------------------------- */ 476 | 477 | /* Shared by admonitions, warnings and sidebars */ 478 | div.admonition, 479 | div.warning, 480 | div.sidebar { 481 | font-size: 0.9em; 482 | margin: 2em; 483 | padding: 0; 484 | /* 485 | border-radius: 6px; 486 | -moz-border-radius: 6px; 487 | -webkit-border-radius: 6px; 488 | */ 489 | } 490 | div.admonition p, 491 | div.warning p, 492 | div.sidebar p { 493 | margin: 0.5em 1em 0.5em 1em; 494 | padding: 0; 495 | } 496 | div.admonition pre, 497 | div.warning pre, 498 | div.sidebar pre { 499 | margin: 0.4em 1em 0.4em 1em; 500 | } 501 | div.admonition p.admonition-title, 502 | div.warning p.admonition-title, 503 | div.sidebar p.sidebar-title { 504 | margin: 0; 505 | padding: 0.1em 0 0.1em 0.5em; 506 | color: white; 507 | font-weight: bold; 508 | font-size: 1.1em; 509 | text-shadow: 0 1px rgba(0, 0, 0, 0.5); 510 | } 511 | div.admonition ul, div.admonition ol, 512 | div.warning ul, div.warning ol, 513 | div.sidebar ul, div.sidebar ol { 514 | margin: 0.1em 0.5em 0.5em 3em; 515 | padding: 0; 516 | } 517 | 518 | 519 | /* Admonitions and sidebars only */ 520 | div.admonition, div.sidebar { 521 | border: 1px solid #609060; 522 | background-color: #e9ffe9; 523 | } 524 | div.admonition p.admonition-title, 525 | div.sidebar p.sidebar-title { 526 | background-color: #70A070; 527 | border-bottom: 1px solid #609060; 528 | } 529 | 530 | 531 | /* Warnings only */ 532 | div.warning { 533 | border: 1px solid #900000; 534 | background-color: #ffe9e9; 535 | } 536 | div.warning p.admonition-title { 537 | background-color: #b04040; 538 | border-bottom: 1px solid #900000; 539 | } 540 | 541 | 542 | /* Sidebars only */ 543 | div.sidebar { 544 | max-width: 30%; 545 | } 546 | 547 | 548 | 549 | div.versioninfo { 550 | margin: 1em 0 0 0; 551 | border: 1px solid #ccc; 552 | background-color: #DDEAF0; 553 | padding: 8px; 554 | line-height: 1.3em; 555 | font-size: 0.9em; 556 | } 557 | 558 | .viewcode-back { 559 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 560 | 'Verdana', sans-serif; 561 | } 562 | 563 | div.viewcode-block:target { 564 | background-color: #f4debf; 565 | border-top: 1px solid #ac9; 566 | border-bottom: 1px solid #ac9; 567 | } 568 | 569 | dl { 570 | margin: 1em 0 2.5em 0; 571 | } 572 | 573 | dl dt { 574 | font-style: italic; 575 | } 576 | 577 | dl dd { 578 | color: rgb(68, 68, 68); 579 | font-size: 0.95em; 580 | } 581 | 582 | /* Highlight target when you click an internal link */ 583 | dt:target { 584 | background: #ffe080; 585 | } 586 | /* Don't highlight whole divs */ 587 | div.highlight { 588 | background: transparent; 589 | } 590 | /* But do highlight spans (so search results can be highlighted) */ 591 | span.highlight { 592 | background: #ffe080; 593 | } 594 | 595 | div.footer { 596 | background-color: #465158; 597 | color: #eeeeee; 598 | padding: 0 2em 2em 2em; 599 | clear: both; 600 | font-size: 0.8em; 601 | text-align: center; 602 | } 603 | 604 | p { 605 | margin: 0.8em 0 0.5em 0; 606 | } 607 | 608 | .section p img.math { 609 | margin: 0; 610 | } 611 | 612 | 613 | .section p img { 614 | margin: 1em 2em; 615 | } 616 | 617 | table.docutils td, table.docutils th { 618 | padding: 1px 8px 1px 5px; 619 | } 620 | 621 | 622 | /* MOBILE LAYOUT -------------------------------------------------------------- */ 623 | 624 | @media screen and (max-width: 600px) { 625 | 626 | h1, h2, h3, h4, h5 { 627 | position: relative; 628 | } 629 | 630 | ul { 631 | padding-left: 1.25em; 632 | } 633 | 634 | div.bodywrapper a.headerlink, #indices-and-tables h1 a { 635 | color: #e6e6e6; 636 | font-size: 80%; 637 | float: right; 638 | line-height: 1.8; 639 | position: absolute; 640 | right: -0.7em; 641 | visibility: inherit; 642 | } 643 | 644 | div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { 645 | line-height: 1.5; 646 | } 647 | 648 | pre { 649 | font-size: 0.7em; 650 | overflow: auto; 651 | word-wrap: break-word; 652 | white-space: pre-wrap; 653 | } 654 | 655 | div.related ul { 656 | height: 2.5em; 657 | padding: 0; 658 | text-align: left; 659 | } 660 | 661 | div.related ul li { 662 | clear: both; 663 | color: #465158; 664 | padding: 0.2em 0; 665 | } 666 | 667 | div.related ul li:last-child { 668 | border-bottom: 1px dotted #8ca1af; 669 | padding-bottom: 0.4em; 670 | margin-bottom: 1em; 671 | width: 100%; 672 | } 673 | 674 | div.related ul li a { 675 | color: #465158; 676 | padding-right: 0; 677 | } 678 | 679 | div.related ul li a:hover { 680 | background: inherit; 681 | color: inherit; 682 | } 683 | 684 | div.related ul li.right { 685 | clear: none; 686 | padding: 0.65em 0; 687 | margin-bottom: 0.5em; 688 | } 689 | 690 | div.related ul li.right a { 691 | color: #fff; 692 | padding-right: 0.8em; 693 | } 694 | 695 | div.related ul li.right a:hover { 696 | background-color: #8ca1af; 697 | } 698 | 699 | div.body { 700 | clear: both; 701 | min-width: 0; 702 | word-wrap: break-word; 703 | } 704 | 705 | div.bodywrapper { 706 | margin: 0 0 0 0; 707 | } 708 | 709 | div.sphinxsidebar { 710 | float: none; 711 | margin: 0; 712 | width: auto; 713 | } 714 | 715 | div.sphinxsidebar input[type="text"] { 716 | height: 2em; 717 | line-height: 2em; 718 | width: 70%; 719 | } 720 | 721 | div.sphinxsidebar input[type="submit"] { 722 | height: 2em; 723 | margin-left: 0.5em; 724 | width: 20%; 725 | } 726 | 727 | div.sphinxsidebar p.searchtip { 728 | background: inherit; 729 | margin-bottom: 1em; 730 | } 731 | 732 | div.sphinxsidebar ul li, div.sphinxsidebar p.topless { 733 | white-space: normal; 734 | } 735 | 736 | .bodywrapper img { 737 | display: block; 738 | margin-left: auto; 739 | margin-right: auto; 740 | max-width: 100%; 741 | } 742 | 743 | div.documentwrapper { 744 | float: none; 745 | } 746 | 747 | div.admonition, div.warning, pre, blockquote { 748 | margin-left: 0em; 749 | margin-right: 0em; 750 | } 751 | 752 | .body p img { 753 | margin: 0; 754 | } 755 | 756 | #searchbox { 757 | background: transparent; 758 | } 759 | 760 | .related:not(:first-child) li { 761 | display: none; 762 | } 763 | 764 | .related:not(:first-child) li.right { 765 | display: block; 766 | } 767 | 768 | div.footer { 769 | padding: 1em; 770 | } 771 | 772 | .rtd_doc_footer .rtd-badge { 773 | float: none; 774 | margin: 1em auto; 775 | position: static; 776 | } 777 | 778 | .rtd_doc_footer .rtd-badge.revsys-inline { 779 | margin-right: auto; 780 | margin-bottom: 2em; 781 | } 782 | 783 | table.indextable { 784 | display: block; 785 | width: auto; 786 | } 787 | 788 | .indextable tr { 789 | display: block; 790 | } 791 | 792 | .indextable td { 793 | display: block; 794 | padding: 0; 795 | width: auto !important; 796 | } 797 | 798 | .indextable td dt { 799 | margin: 1em 0; 800 | } 801 | 802 | ul.search { 803 | margin-left: 0.25em; 804 | } 805 | 806 | ul.search li div.context { 807 | font-size: 90%; 808 | line-height: 1.1; 809 | margin-bottom: 1; 810 | margin-left: 0; 811 | } 812 | 813 | } 814 | 815 | 816 | -------------------------------------------------------------------------------- /source/_static/rtd.css~: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/source/_static/rtd.css~ -------------------------------------------------------------------------------- /source/_templates/layout.html: -------------------------------------------------------------------------------- 1 | {% extends "!layout.html" %} 2 | 3 | {% block extrahead %} 4 | {{ super() }} 5 | 6 | {% set ending = "/" if builder == "readthedocsdirhtml" else ".html" %} 7 | {% set canonical_page = pagename + ending %} 8 | {% if canonical_url %} 9 | {% if single_version %} 10 | 14 | 15 | {% else %} 16 | 20 | 21 | {% endif %} 22 | {% else %} 23 | 28 | 29 | {% endif %} 30 | 48 | 49 | 50 | 67 | 68 | 69 | {% endblock %} 70 | 71 | -------------------------------------------------------------------------------- /source/_templates/layout.html~: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnthonyChiavelli/VisualGitDocs/c89e60ab118dba17c16fee8158cc2c726f970db4/source/_templates/layout.html~ -------------------------------------------------------------------------------- /source/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # CodingConvention documentation build configuration file, created by 4 | # sphinx-quickstart on Wed May 21 21:31:34 2014. 5 | # 6 | # This file is execfile()d with the current directory set to its 7 | # containing dir. 8 | # 9 | # Note that not all possible configuration values are present in this 10 | # autogenerated file. 11 | # 12 | # All configuration values have a default; values that are commented out 13 | # serve to show the default. 14 | 15 | import sys 16 | import os 17 | 18 | # If extensions (or modules to document with autodoc) are in another directory, 19 | # add these directories to sys.path here. If the directory is relative to the 20 | # documentation root, use os.path.abspath to make it absolute, like shown here. 21 | #sys.path.insert(0, os.path.abspath('.')) 22 | 23 | # -- General configuration ------------------------------------------------ 24 | 25 | # If your documentation needs a minimal Sphinx version, state it here. 26 | #needs_sphinx = '1.0' 27 | 28 | # Add any Sphinx extension module names here, as strings. They can be 29 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 30 | # ones. 31 | extensions = [ 32 | 'sphinx.ext.autodoc', 33 | 'sphinx.ext.doctest', 34 | 'sphinx.ext.intersphinx', 35 | 'sphinx.ext.todo', 36 | 'sphinx.ext.coverage', 37 | 'sphinx.ext.pngmath', 38 | 'sphinx.ext.ifconfig', 39 | 'sphinx.ext.viewcode', 40 | ] 41 | 42 | # Add any paths that contain templates here, relative to this directory. 43 | templates_path = ['_templates'] 44 | 45 | # The suffix of source filenames. 46 | source_suffix = '.rst' 47 | 48 | # The encoding of source files. 49 | #source_encoding = 'utf-8-sig' 50 | 51 | # The master toctree document. 52 | master_doc = 'index' 53 | 54 | # General information about the project. 55 | project = u'CodingConvention' 56 | copyright = u'2014, Dev Team' 57 | 58 | # The version info for the project you're documenting, acts as replacement for 59 | # |version| and |release|, also used in various other places throughout the 60 | # built documents. 61 | # 62 | # The short X.Y version. 63 | version = '0' 64 | # The full version, including alpha/beta/rc tags. 65 | release = '0' 66 | 67 | # The language for content autogenerated by Sphinx. Refer to documentation 68 | # for a list of supported languages. 69 | #language = None 70 | 71 | # There are two options for replacing |today|: either, you set today to some 72 | # non-false value, then it is used: 73 | #today = '' 74 | # Else, today_fmt is used as the format for a strftime call. 75 | #today_fmt = '%B %d, %Y' 76 | 77 | # List of patterns, relative to source directory, that match files and 78 | # directories to ignore when looking for source files. 79 | exclude_patterns = [] 80 | 81 | # The reST default role (used for this markup: `text`) to use for all 82 | # documents. 83 | #default_role = None 84 | 85 | # If true, '()' will be appended to :func: etc. cross-reference text. 86 | #add_function_parentheses = True 87 | 88 | # If true, the current module name will be prepended to all description 89 | # unit titles (such as .. function::). 90 | #add_module_names = True 91 | 92 | # If true, sectionauthor and moduleauthor directives will be shown in the 93 | # output. They are ignored by default. 94 | #show_authors = False 95 | 96 | # The name of the Pygments (syntax highlighting) style to use. 97 | pygments_style = 'sphinx' 98 | 99 | # A list of ignored prefixes for module index sorting. 100 | #modindex_common_prefix = [] 101 | 102 | # If true, keep warnings as "system message" paragraphs in the built documents. 103 | #keep_warnings = False 104 | 105 | 106 | # -- Options for HTML output ---------------------------------------------- 107 | 108 | # The theme to use for HTML and HTML Help pages. See the documentation for 109 | # a list of builtin themes. 110 | #html_theme = 'default' 111 | 112 | # Theme options are theme-specific and customize the look and feel of a theme 113 | # further. For a list of options available for each theme, see the 114 | # documentation. 115 | #html_theme_options = {} 116 | 117 | # Add any paths that contain custom themes here, relative to this directory. 118 | #html_theme_path = [] 119 | 120 | # The name for this set of Sphinx documents. If None, it defaults to 121 | # " v documentation". 122 | #html_title = None 123 | 124 | # A shorter title for the navigation bar. Default is the same as html_title. 125 | #html_short_title = None 126 | 127 | # The name of an image file (relative to this directory) to place at the top 128 | # of the sidebar. 129 | #html_logo = None 130 | 131 | # The name of an image file (within the static path) to use as favicon of the 132 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 133 | # pixels large. 134 | #html_favicon = None 135 | 136 | # Add any paths that contain custom static files (such as style sheets) here, 137 | # relative to this directory. They are copied after the builtin static files, 138 | # so a file named "default.css" will overwrite the builtin "default.css". 139 | html_static_path = ['_static'] 140 | 141 | # Add any extra paths that contain custom files (such as robots.txt or 142 | # .htaccess) here, relative to this directory. These files are copied 143 | # directly to the root of the documentation. 144 | #html_extra_path = [] 145 | 146 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 147 | # using the given strftime format. 148 | #html_last_updated_fmt = '%b %d, %Y' 149 | 150 | # If true, SmartyPants will be used to convert quotes and dashes to 151 | # typographically correct entities. 152 | #html_use_smartypants = True 153 | 154 | # Custom sidebar templates, maps document names to template names. 155 | #html_sidebars = {} 156 | 157 | # Additional templates that should be rendered to pages, maps page names to 158 | # template names. 159 | #html_additional_pages = {} 160 | 161 | # If false, no module index is generated. 162 | #html_domain_indices = True 163 | 164 | # If false, no index is generated. 165 | #html_use_index = True 166 | 167 | # If true, the index is split into individual pages for each letter. 168 | #html_split_index = False 169 | 170 | # If true, links to the reST sources are added to the pages. 171 | #html_show_sourcelink = True 172 | 173 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 174 | #html_show_sphinx = True 175 | 176 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 177 | #html_show_copyright = True 178 | 179 | # If true, an OpenSearch description file will be output, and all pages will 180 | # contain a tag referring to it. The value of this option must be the 181 | # base URL from which the finished HTML is served. 182 | #html_use_opensearch = '' 183 | 184 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 185 | #html_file_suffix = None 186 | 187 | # Output file base name for HTML help builder. 188 | htmlhelp_basename = 'CodingConventiondoc' 189 | 190 | 191 | # -- Options for LaTeX output --------------------------------------------- 192 | 193 | latex_elements = { 194 | # The paper size ('letterpaper' or 'a4paper'). 195 | #'papersize': 'letterpaper', 196 | 197 | # The font size ('10pt', '11pt' or '12pt'). 198 | #'pointsize': '10pt', 199 | 200 | # Additional stuff for the LaTeX preamble. 201 | #'preamble': '', 202 | } 203 | 204 | # Grouping the document tree into LaTeX files. List of tuples 205 | # (source start file, target name, title, 206 | # author, documentclass [howto, manual, or own class]). 207 | latex_documents = [ 208 | ('index', 'CodingConvention.tex', u'CodingConvention Documentation', 209 | u'Dev Team', 'manual'), 210 | ] 211 | 212 | # The name of an image file (relative to this directory) to place at the top of 213 | # the title page. 214 | #latex_logo = None 215 | 216 | # For "manual" documents, if this is true, then toplevel headings are parts, 217 | # not chapters. 218 | #latex_use_parts = False 219 | 220 | # If true, show page references after internal links. 221 | #latex_show_pagerefs = False 222 | 223 | # If true, show URL addresses after external links. 224 | #latex_show_urls = False 225 | 226 | # Documents to append as an appendix to all manuals. 227 | #latex_appendices = [] 228 | 229 | # If false, no module index is generated. 230 | #latex_domain_indices = True 231 | 232 | 233 | # -- Options for manual page output --------------------------------------- 234 | 235 | # One entry per manual page. List of tuples 236 | # (source start file, name, description, authors, manual section). 237 | man_pages = [ 238 | ('index', 'codingconvention', u'CodingConvention Documentation', 239 | [u'Dev Team'], 1) 240 | ] 241 | 242 | # If true, show URL addresses after external links. 243 | #man_show_urls = False 244 | 245 | 246 | # -- Options for Texinfo output ------------------------------------------- 247 | 248 | # Grouping the document tree into Texinfo files. List of tuples 249 | # (source start file, target name, title, author, 250 | # dir menu entry, description, category) 251 | texinfo_documents = [ 252 | ('index', 'CodingConvention', u'CodingConvention Documentation', 253 | u'Dev Team', 'CodingConvention', 'One line description of project.', 254 | 'Miscellaneous'), 255 | ] 256 | 257 | # Documents to append as an appendix to all manuals. 258 | #texinfo_appendices = [] 259 | 260 | # If false, no module index is generated. 261 | #texinfo_domain_indices = True 262 | 263 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 264 | #texinfo_show_urls = 'footnote' 265 | 266 | # If true, do not generate a @detailmenu in the "Top" node's menu. 267 | #texinfo_no_detailmenu = False 268 | 269 | 270 | # -- Options for Epub output ---------------------------------------------- 271 | 272 | # Bibliographic Dublin Core info. 273 | epub_title = u'CodingConvention' 274 | epub_author = u'Dev Team' 275 | epub_publisher = u'Dev Team' 276 | epub_copyright = u'2014, Dev Team' 277 | 278 | # The basename for the epub file. It defaults to the project name. 279 | #epub_basename = u'CodingConvention' 280 | 281 | # The HTML theme for the epub output. Since the default themes are not optimized 282 | # for small screen space, using the same theme for HTML and epub output is 283 | # usually not wise. This defaults to 'epub', a theme designed to save visual 284 | # space. 285 | #epub_theme = 'epub' 286 | 287 | # The language of the text. It defaults to the language option 288 | # or en if the language is not set. 289 | #epub_language = '' 290 | 291 | # The scheme of the identifier. Typical schemes are ISBN or URL. 292 | #epub_scheme = '' 293 | 294 | # The unique identifier of the text. This can be a ISBN number 295 | # or the project homepage. 296 | #epub_identifier = '' 297 | 298 | # A unique identification for the text. 299 | #epub_uid = '' 300 | 301 | # A tuple containing the cover image and cover page html template filenames. 302 | #epub_cover = () 303 | 304 | # A sequence of (type, uri, title) tuples for the guide element of content.opf. 305 | #epub_guide = () 306 | 307 | # HTML files that should be inserted before the pages created by sphinx. 308 | # The format is a list of tuples containing the path and title. 309 | #epub_pre_files = [] 310 | 311 | # HTML files shat should be inserted after the pages created by sphinx. 312 | # The format is a list of tuples containing the path and title. 313 | #epub_post_files = [] 314 | 315 | # A list of files that should not be packed into the epub file. 316 | epub_exclude_files = ['search.html'] 317 | 318 | # The depth of the table of contents in toc.ncx. 319 | #epub_tocdepth = 3 320 | 321 | # Allow duplicate toc entries. 322 | #epub_tocdup = True 323 | 324 | # Choose between 'default' and 'includehidden'. 325 | #epub_tocscope = 'default' 326 | 327 | # Fix unsupported image types using the PIL. 328 | #epub_fix_images = False 329 | 330 | # Scale large images. 331 | #epub_max_image_width = 0 332 | 333 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 334 | #epub_show_urls = 'inline' 335 | 336 | # If false, no index is generated. 337 | #epub_use_index = True 338 | 339 | 340 | # Example configuration for intersphinx: refer to the Python standard library. 341 | intersphinx_mapping = {'http://docs.python.org/': None} 342 | -------------------------------------------------------------------------------- /source/conf.py~: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # CodingConvention documentation build configuration file, created by 4 | # sphinx-quickstart on Wed May 21 21:31:34 2014. 5 | # 6 | # This file is execfile()d with the current directory set to its 7 | # containing dir. 8 | # 9 | # Note that not all possible configuration values are present in this 10 | # autogenerated file. 11 | # 12 | # All configuration values have a default; values that are commented out 13 | # serve to show the default. 14 | 15 | import sys 16 | import os 17 | import sphinx_bootstrap_theme 18 | 19 | # If extensions (or modules to document with autodoc) are in another directory, 20 | # add these directories to sys.path here. If the directory is relative to the 21 | # documentation root, use os.path.abspath to make it absolute, like shown here. 22 | #sys.path.insert(0, os.path.abspath('.')) 23 | 24 | # -- General configuration ------------------------------------------------ 25 | 26 | # If your documentation needs a minimal Sphinx version, state it here. 27 | #needs_sphinx = '1.0' 28 | 29 | # Add any Sphinx extension module names here, as strings. They can be 30 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 31 | # ones. 32 | extensions = [ 33 | 'sphinx.ext.autodoc', 34 | 'sphinx.ext.doctest', 35 | 'sphinx.ext.intersphinx', 36 | 'sphinx.ext.todo', 37 | 'sphinx.ext.coverage', 38 | 'sphinx.ext.pngmath', 39 | 'sphinx.ext.ifconfig', 40 | 'sphinx.ext.viewcode', 41 | ] 42 | 43 | # Activate the theme. 44 | html_theme = 'bootstrap' 45 | html_theme_path = sphinx_bootstrap_theme.get_html_theme_path() 46 | 47 | # Add any paths that contain templates here, relative to this directory. 48 | templates_path = ['_templates'] 49 | 50 | # The suffix of source filenames. 51 | source_suffix = '.rst' 52 | 53 | # The encoding of source files. 54 | #source_encoding = 'utf-8-sig' 55 | 56 | # The master toctree document. 57 | master_doc = 'index' 58 | 59 | # General information about the project. 60 | project = u'CodingConvention' 61 | copyright = u'2014, Dev Team' 62 | 63 | # The version info for the project you're documenting, acts as replacement for 64 | # |version| and |release|, also used in various other places throughout the 65 | # built documents. 66 | # 67 | # The short X.Y version. 68 | version = '0' 69 | # The full version, including alpha/beta/rc tags. 70 | release = '0' 71 | 72 | # The language for content autogenerated by Sphinx. Refer to documentation 73 | # for a list of supported languages. 74 | #language = None 75 | 76 | # There are two options for replacing |today|: either, you set today to some 77 | # non-false value, then it is used: 78 | #today = '' 79 | # Else, today_fmt is used as the format for a strftime call. 80 | #today_fmt = '%B %d, %Y' 81 | 82 | # List of patterns, relative to source directory, that match files and 83 | # directories to ignore when looking for source files. 84 | exclude_patterns = [] 85 | 86 | # The reST default role (used for this markup: `text`) to use for all 87 | # documents. 88 | #default_role = None 89 | 90 | # If true, '()' will be appended to :func: etc. cross-reference text. 91 | #add_function_parentheses = True 92 | 93 | # If true, the current module name will be prepended to all description 94 | # unit titles (such as .. function::). 95 | #add_module_names = True 96 | 97 | # If true, sectionauthor and moduleauthor directives will be shown in the 98 | # output. They are ignored by default. 99 | #show_authors = False 100 | 101 | # The name of the Pygments (syntax highlighting) style to use. 102 | pygments_style = 'sphinx' 103 | 104 | # A list of ignored prefixes for module index sorting. 105 | #modindex_common_prefix = [] 106 | 107 | # If true, keep warnings as "system message" paragraphs in the built documents. 108 | #keep_warnings = False 109 | 110 | 111 | # -- Options for HTML output ---------------------------------------------- 112 | 113 | # The theme to use for HTML and HTML Help pages. See the documentation for 114 | # a list of builtin themes. 115 | #html_theme = 'default' 116 | 117 | # Theme options are theme-specific and customize the look and feel of a theme 118 | # further. For a list of options available for each theme, see the 119 | # documentation. 120 | #html_theme_options = {} 121 | 122 | # Add any paths that contain custom themes here, relative to this directory. 123 | #html_theme_path = [] 124 | 125 | # The name for this set of Sphinx documents. If None, it defaults to 126 | # " v documentation". 127 | #html_title = None 128 | 129 | # A shorter title for the navigation bar. Default is the same as html_title. 130 | #html_short_title = None 131 | 132 | # The name of an image file (relative to this directory) to place at the top 133 | # of the sidebar. 134 | #html_logo = None 135 | 136 | # The name of an image file (within the static path) to use as favicon of the 137 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 138 | # pixels large. 139 | #html_favicon = None 140 | 141 | # Add any paths that contain custom static files (such as style sheets) here, 142 | # relative to this directory. They are copied after the builtin static files, 143 | # so a file named "default.css" will overwrite the builtin "default.css". 144 | html_static_path = ['_static'] 145 | 146 | # Add any extra paths that contain custom files (such as robots.txt or 147 | # .htaccess) here, relative to this directory. These files are copied 148 | # directly to the root of the documentation. 149 | #html_extra_path = [] 150 | 151 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 152 | # using the given strftime format. 153 | #html_last_updated_fmt = '%b %d, %Y' 154 | 155 | # If true, SmartyPants will be used to convert quotes and dashes to 156 | # typographically correct entities. 157 | #html_use_smartypants = True 158 | 159 | # Custom sidebar templates, maps document names to template names. 160 | #html_sidebars = {} 161 | 162 | # Additional templates that should be rendered to pages, maps page names to 163 | # template names. 164 | #html_additional_pages = {} 165 | 166 | # If false, no module index is generated. 167 | #html_domain_indices = True 168 | 169 | # If false, no index is generated. 170 | #html_use_index = True 171 | 172 | # If true, the index is split into individual pages for each letter. 173 | #html_split_index = False 174 | 175 | # If true, links to the reST sources are added to the pages. 176 | #html_show_sourcelink = True 177 | 178 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 179 | #html_show_sphinx = True 180 | 181 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 182 | #html_show_copyright = True 183 | 184 | # If true, an OpenSearch description file will be output, and all pages will 185 | # contain a tag referring to it. The value of this option must be the 186 | # base URL from which the finished HTML is served. 187 | #html_use_opensearch = '' 188 | 189 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 190 | #html_file_suffix = None 191 | 192 | # Output file base name for HTML help builder. 193 | htmlhelp_basename = 'CodingConventiondoc' 194 | 195 | 196 | # -- Options for LaTeX output --------------------------------------------- 197 | 198 | latex_elements = { 199 | # The paper size ('letterpaper' or 'a4paper'). 200 | #'papersize': 'letterpaper', 201 | 202 | # The font size ('10pt', '11pt' or '12pt'). 203 | #'pointsize': '10pt', 204 | 205 | # Additional stuff for the LaTeX preamble. 206 | #'preamble': '', 207 | } 208 | 209 | # Grouping the document tree into LaTeX files. List of tuples 210 | # (source start file, target name, title, 211 | # author, documentclass [howto, manual, or own class]). 212 | latex_documents = [ 213 | ('index', 'CodingConvention.tex', u'CodingConvention Documentation', 214 | u'Dev Team', 'manual'), 215 | ] 216 | 217 | # The name of an image file (relative to this directory) to place at the top of 218 | # the title page. 219 | #latex_logo = None 220 | 221 | # For "manual" documents, if this is true, then toplevel headings are parts, 222 | # not chapters. 223 | #latex_use_parts = False 224 | 225 | # If true, show page references after internal links. 226 | #latex_show_pagerefs = False 227 | 228 | # If true, show URL addresses after external links. 229 | #latex_show_urls = False 230 | 231 | # Documents to append as an appendix to all manuals. 232 | #latex_appendices = [] 233 | 234 | # If false, no module index is generated. 235 | #latex_domain_indices = True 236 | 237 | 238 | # -- Options for manual page output --------------------------------------- 239 | 240 | # One entry per manual page. List of tuples 241 | # (source start file, name, description, authors, manual section). 242 | man_pages = [ 243 | ('index', 'codingconvention', u'CodingConvention Documentation', 244 | [u'Dev Team'], 1) 245 | ] 246 | 247 | # If true, show URL addresses after external links. 248 | #man_show_urls = False 249 | 250 | 251 | # -- Options for Texinfo output ------------------------------------------- 252 | 253 | # Grouping the document tree into Texinfo files. List of tuples 254 | # (source start file, target name, title, author, 255 | # dir menu entry, description, category) 256 | texinfo_documents = [ 257 | ('index', 'CodingConvention', u'CodingConvention Documentation', 258 | u'Dev Team', 'CodingConvention', 'One line description of project.', 259 | 'Miscellaneous'), 260 | ] 261 | 262 | # Documents to append as an appendix to all manuals. 263 | #texinfo_appendices = [] 264 | 265 | # If false, no module index is generated. 266 | #texinfo_domain_indices = True 267 | 268 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 269 | #texinfo_show_urls = 'footnote' 270 | 271 | # If true, do not generate a @detailmenu in the "Top" node's menu. 272 | #texinfo_no_detailmenu = False 273 | 274 | 275 | # -- Options for Epub output ---------------------------------------------- 276 | 277 | # Bibliographic Dublin Core info. 278 | epub_title = u'CodingConvention' 279 | epub_author = u'Dev Team' 280 | epub_publisher = u'Dev Team' 281 | epub_copyright = u'2014, Dev Team' 282 | 283 | # The basename for the epub file. It defaults to the project name. 284 | #epub_basename = u'CodingConvention' 285 | 286 | # The HTML theme for the epub output. Since the default themes are not optimized 287 | # for small screen space, using the same theme for HTML and epub output is 288 | # usually not wise. This defaults to 'epub', a theme designed to save visual 289 | # space. 290 | #epub_theme = 'epub' 291 | 292 | # The language of the text. It defaults to the language option 293 | # or en if the language is not set. 294 | #epub_language = '' 295 | 296 | # The scheme of the identifier. Typical schemes are ISBN or URL. 297 | #epub_scheme = '' 298 | 299 | # The unique identifier of the text. This can be a ISBN number 300 | # or the project homepage. 301 | #epub_identifier = '' 302 | 303 | # A unique identification for the text. 304 | #epub_uid = '' 305 | 306 | # A tuple containing the cover image and cover page html template filenames. 307 | #epub_cover = () 308 | 309 | # A sequence of (type, uri, title) tuples for the guide element of content.opf. 310 | #epub_guide = () 311 | 312 | # HTML files that should be inserted before the pages created by sphinx. 313 | # The format is a list of tuples containing the path and title. 314 | #epub_pre_files = [] 315 | 316 | # HTML files shat should be inserted after the pages created by sphinx. 317 | # The format is a list of tuples containing the path and title. 318 | #epub_post_files = [] 319 | 320 | # A list of files that should not be packed into the epub file. 321 | epub_exclude_files = ['search.html'] 322 | 323 | # The depth of the table of contents in toc.ncx. 324 | #epub_tocdepth = 3 325 | 326 | # Allow duplicate toc entries. 327 | #epub_tocdup = True 328 | 329 | # Choose between 'default' and 'includehidden'. 330 | #epub_tocscope = 'default' 331 | 332 | # Fix unsupported image types using the PIL. 333 | #epub_fix_images = False 334 | 335 | # Scale large images. 336 | #epub_max_image_width = 0 337 | 338 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 339 | #epub_show_urls = 'inline' 340 | 341 | # If false, no index is generated. 342 | #epub_use_index = True 343 | 344 | 345 | # Example configuration for intersphinx: refer to the Python standard library. 346 | intersphinx_mapping = {'http://docs.python.org/': None} 347 | -------------------------------------------------------------------------------- /source/index.rst: -------------------------------------------------------------------------------- 1 | .. CodingConvention documentation master file, created by 2 | sphinx-quickstart on Wed May 21 21:31:34 2014. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | 7 | 8 | 9 | 10 | 11 | Python Coding Conventions 12 | ============================================ 13 | 14 | This convention guide serves to establish consistency and readability in our python projects. Like all convention guides, this one is imperfect and in some cases, the convention might be at odds with backwards compatibility or code readability. In these cases, the convention should be abandoned. Readability is more important than strict adherence to the guidelines. 15 | 16 | This guide is based on PEP8. If information is found to be lacking here, go with what PEP8 says, and notify me at AnthonyReid99@gmail.com to update the guide. 17 | 18 | :doc:`pages/project_file_structure` 19 | 20 | :doc:`pages/naming_convention` 21 | 22 | :doc:`pages/contributing` 23 | 24 | :doc:`pages/code_style` 25 | -------------------------------------------------------------------------------- /source/index.rst~: -------------------------------------------------------------------------------- 1 | .. CodingConvention documentation master file, created by 2 | sphinx-quickstart on Wed May 21 21:31:34 2014. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | 7 | 8 | 9 | 10 | 11 | Python Coding Conventions 12 | ============================================ 13 | 14 | :doc:`pages/project_file_structure` 15 | 16 | :doc:`pages/naming_convention` 17 | 18 | :doc:`pages/vcs_convention` 19 | -------------------------------------------------------------------------------- /source/layout.html: -------------------------------------------------------------------------------- 1 | {% extends "!layout.html" %} 2 | 3 | {% block extrahead %} 4 | {{ super() }} 5 | 6 | {% set ending = "/" if builder == "readthedocsdirhtml" else ".html" %} 7 | {% set canonical_page = pagename + ending %} 8 | {% if canonical_url %} 9 | {% if single_version %} 10 | 14 | 15 | {% else %} 16 | 20 | 21 | {% endif %} 22 | {% else %} 23 | 28 | 29 | {% endif %} 30 | 48 | 49 | 50 | 67 | 68 | 69 | {% endblock %} 70 | 71 | -------------------------------------------------------------------------------- /source/naming_convention.rst~: -------------------------------------------------------------------------------- 1 | 2 | 3 | Python Naming Conventions 4 | ============================================ 5 | 6 | yadda yadda yadda 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /source/pages/code_style.rst: -------------------------------------------------------------------------------- 1 | .. _code_style: 2 | 3 | =============================== 4 | Python Coding Style Conventions 5 | =============================== 6 | 7 | 1. Whitespace 8 | ============= 9 | 10 | 1.1. Indentation 11 | ---------------- 12 | 13 | * Lines should be indented with a multiple of 4 spaces depending on indent level 14 | * Hanging indents, code that is a continuation of the line above, should be indented to the next level 15 | * Use spaces exclusively, no tabs! 16 | 17 | 1.2. Blank Lines 18 | ---------------- 19 | 20 | * Leave 2 blank lines between class definitions and module-level functions 21 | * Leave 1 blank line between methods in a class 22 | * Use blank lines as needed in functions, methods, and modules to visually split up logical blocks of code 23 | 24 | 1.3. Spaces In Code 25 | ------------------- 26 | 27 | * Surround binary operators with a space on each side 28 | * Do not include spaces around '=' when used to indicate a default argument or keyword argument 29 | * In all other cases, extraneous spaces are frowned upon 30 | 31 | 2. Imports 32 | ========== 33 | 34 | * Imports should occur at the top of the module, after any module docstring 35 | * Standard imports (those beginning with "import") should each be on a separate line. Do not combine imports into one line. 36 | * "From ... import ..."-style imports may be combined together on one line if possible 37 | * Wildcard imports should only be used when absolutely necessary, otherwise only import the modules to be used 38 | 39 | 3. Code Blocks 40 | ============== 41 | 42 | * Do not use parenthesis in the condition for a code block header unless it would be otherwise appropriate to use parenthesis around that condition 43 | * Do not use any single line code blocks. Even those with a single statement in the body should occupy multiple lines 44 | 45 | 46 | 4. Comments 47 | =========== 48 | 49 | * First and foremost, comments should be up to date and accurate. When updating code, always make sure to update any comments that refer to it 50 | * Comments should be wrapped to 72 characters 51 | * Use plain English sentences with proper spelling and grammar. Strongly prefer complete sentences. 52 | * Single sentence comments need not end in a period 53 | * Clever humor is acceptable on occasion 54 | * Do not merely summarize the code that follows. State its overall purpose, justify its inclusion, or explain quirks that other programmers may need to know 55 | 56 | 4.1. Docstring Comments 57 | ----------------------- 58 | 59 | * Docstring comments should consist of a short summary line, optionally (but usually) followed by a blank line, then additional paragraphs with further explanation 60 | * All classes and methods should contain a docstring 61 | * Modules should contain a docstring if they serve a purpose other than as a container for a class -------------------------------------------------------------------------------- /source/pages/contributing.rst: -------------------------------------------------------------------------------- 1 | .. _contributing: 2 | 3 | =========================== 4 | Contributing to the Project 5 | =========================== 6 | 7 | 1. Roles and Responsibilities 8 | ============================= 9 | There are four main roles for contributing, based on the `YUI Contributor Model `_. They are outlined below. 10 | 11 | 1.1. Users 12 | ---------- 13 | Users are community members who have a need for the project. Anyone can be a User; there are no special requirements. Common User contributions include evangelizing the project (e.g., display a link on a website and raise awareness through word-of-mouth), informing developers of strengths and weaknesses from a new user perspective, or providing moral support (a "thank you" goes a long way). 14 | 15 | Users who continue to engage with the project and its community will often become more and more involved. Such Users may find themselves becoming Contributors, as described in the next section. 16 | 17 | 1.2. Contributors 18 | ----------------- 19 | Contributors are community members who contribute in concrete ways to the project, most often in the form of code and/or documentation. Anyone can become a Contributor, and contributions can take many forms. There is no expectation of commitment to the project, no specific skill requirements, and no selection process. 20 | 21 | As Contributors gain experience and familiarity with the project, their profile within, and commitment to, the community will increase. At some stage, they may find themselves being nominated for committership by an existing Committer. 22 | 23 | 1.3. Committers 24 | --------------- 25 | Committers are community members who have shown that they are committed to the continued development of the project through ongoing engagement with the community. Committers are given push access to the project's GitHub repo and must abide by the project's Contribution Standards, including milestones such as feature complete and code freeze. 26 | 27 | While committership indicates a valued member of the community who has demonstrated a healthy respect for the project's aims and objectives, their work continues to be reviewed by Reviewers (see below) before acceptance in an official release. 28 | 29 | To become a Committer, one must have shown a willingness and ability to participate in the project as a team player. Typically, a potential Committer will need to show that they have an understanding of and alignment with the project, its objectives, and its strategy. They will also have provided valuable contributions to the project over a period of time and, specifically, a minimum of 8 qualifying pull requests. What's a qualifying pull request? One that carries significant technical weight and requires little effort to accept because it’s well documented and tested. 30 | 31 | New Committers can be nominated by any existing Committer. Once they have been nominated, there will be a discussion and vote by the Reviewers. While there is no formal system in place for this right now, Reviewers will try to use their best judgement, always keeping the project's best interests in mind. 32 | 33 | It is important to recognize that committership is a privilege, not a right. That privilege must be earned and once earned it can be removed by the Reviewers (see next section) in extreme circumstances. However, under normal circumstances committership exists for as long as the Committer wishes to continue engaging with the project. 34 | 35 | A Committer who shows an above-average level of contribution to the project, particularly with respect to its strategic direction and long-term health, may be nominated to become a Reviewer, described below. 36 | 37 | 1.4. Reviewers 38 | -------------- 39 | Reviewers are individuals identified as "project admins" for the project on GitHub. Reviewers have additional responsibilities over and above those of a Committer. These responsibilities ensure the smooth running of the project. Reviewers are expected to review code contributions, approve changes to this document, and manage the copyrights within the project outputs. 40 | 41 | Reviewers' contributions can be reviewed by other Reviewers, but this is not explicitly required. Reviewers do not have significant authority over other members of the community, although it is the Reviewers that vote on new Committers. They also make decisions when community consensus cannot be reached. 42 | 43 | A Committer is invited to become a Reviewer by existing Reviewers. An existing Committer may be considered for Reviewer status only after they have submitted 40 qualifying pull requests of technical significance that have been accepted without significant rework into the project. A nomination will result in discussion and then a vote by the existing Reviewers. 44 | 45 | 2. GitHub 46 | ========= 47 | 48 | 2.1. Forking 49 | ------------ 50 | To begin working on the project, you need to grab the latest code first. This can be done by `forking `_ the repository. 51 | 52 | 2.1. Pull Requests 53 | ------------------ 54 | All contributions to this project must be made through `Pull Requests `_. Pull requests are reviewed on a first come first serve basis by at least one of the Reviewers. In order to be accepted, the submitted code must meet the following criteria: 55 | * It must be apparently free of bugs, or if intractable bugs are present and the code is still useful, bugs must be clearly documented and relevant `issues `_ must be created on GitHub 56 | * It must meet all of the coding and documenting conventions laid out in these documents 57 | * It must integrate well with existing code 58 | 59 | 2.2. Pulling from Upstream 60 | -------------------------- 61 | To get the latest changes from the original repository, you need to `pull from upstream `_. 62 | 63 | 2.3. Issue Tracking 64 | ------------------- 65 | GitHub's `Issues `_ system will be used to track known bugs and issues, as well as manage feature requests. 66 | 67 | 3. Git 68 | ====== 69 | 70 | 3.1. Committing 71 | --------------- 72 | 73 | 3.1.1. Commit Messages 74 | ###################### 75 | 76 | Commit messages consist of: 77 | * A short summary of changes made to be limited to 50 characters in width. This line should not end with a period, and should always be followed by a blank line. 78 | * Additional paragraphs providing more detail, separated by blank lines, and limited to 72 characters in width. 79 | * Bullet points may also be used, and may be indicated by a '*' or a '-' 80 | * The commit message should be written in the imperative tone, that is, as if commanding somebody to make your changes 81 | * Good: "Fix the time zone bug and change the path" 82 | * Bad: "Fixed the time zone bug and changed the path" 83 | For more on why this is good practice, check out `this article `_. 84 | 85 | 3.1.2. Commit Size 86 | ################## 87 | Commits should address one issue at a time. Those that contain multiple unrelated changes should be split appropriately. Adjacent commits that each contain partial changes related to the same feature should be squashed together. Read up on `rewriting commit history `_ for more on managing commit size. -------------------------------------------------------------------------------- /source/pages/naming_convention.rst: -------------------------------------------------------------------------------- 1 | .. _naming_convention: 2 | 3 | ========================= 4 | Python Naming Conventions 5 | ========================= 6 | 7 | 1. General 8 | ========== 9 | * Avoid using names that are too general or too wordy. Strike a good balance between the two. 10 | * Bad: data_structure, my_list, info_map, dictionary_for_the_purpose_of_storing_data_representing_word_definitions 11 | * Good: user_profile, menu_options, word_definitions 12 | * Don’t be a jackass and name things “O”, “l”, or “I” 13 | * When using CamelCase names, capitalize all letters of an abbreviation (e.g. HTTPServer) 14 | 15 | 2. Packages 16 | =========== 17 | * Package names should be all lower case 18 | * When multiple words are needed, an underscore should separate them 19 | * It is usually preferable to stick to 1 word names 20 | 21 | 22 | 3. Modules 23 | ========== 24 | * Module names should be all lower case 25 | * When multiple words are needed, an underscore should separate them 26 | * It is usually preferable to stick to 1 word names 27 | 28 | 29 | 4. Classes 30 | ========== 31 | * Class names should follow the UpperCaseCamelCase convention 32 | * Python's built-in classes, however are typically lowercase words 33 | * Exception classes should end in “Error” 34 | 35 | 36 | 5. Global (module-level) Variables 37 | ================================== 38 | * Global variables should be all lowercase 39 | * Words in a global variable name should be separated by an underscore 40 | 41 | 42 | 6. Instance Variables 43 | ===================== 44 | * Instance variable names should be all lower case 45 | * Words in an instance variable name should be separated by an underscore 46 | * Non-public instance variables should begin with a single underscore 47 | * If an instance name needs to be mangled, two underscores may begin its name 48 | 49 | 50 | 7. Methods 51 | ========== 52 | * Method names should be all lower case 53 | * Words in an method name should be separated by an underscore 54 | * Non-public method should begin with a single underscore 55 | * If a method name needs to be mangled, two underscores may begin its name 56 | 57 | 58 | 8. Method Arguments 59 | =================== 60 | * Instance methods should have their first argument named ‘self’. 61 | * Class methods should have their first argument named ‘cls’ 62 | 63 | 64 | 9. Functions 65 | ============ 66 | * Function names should be all lower case 67 | * Words in a function name should be separated by an underscore 68 | 69 | 10. Constants 70 | ============= 71 | * Constant names must be fully capitalized 72 | * Words in a constant name should be separated by an underscore -------------------------------------------------------------------------------- /source/pages/naming_convention.rst~: -------------------------------------------------------------------------------- 1 | .. _naming_conventions: 2 | 3 | 1. Python Naming Conventions 4 | ============================================ 5 | 6 | 1.1 General 7 | -------------------------------------------- 8 | 9 | * Avoid using names that are too general or too wordy. Strike a good balance between the two. 10 | * Bad: data_structure, my_list, info_map, dictionary_for_the_purpose_of_storing_data_representing_word_definitions 11 | * Good: user_profile, menu_options, word_definitions 12 | * Don’t be a jackass and name things “O”, “l”, or “I” 13 | 14 | 1.2 Packages 15 | -------------------------------------------- 16 | 17 | * Package names should be all lower case 18 | * When multiple words are needed, an underscore should separate them 19 | * It is usually preferable to stick to 1 word names 20 | 21 | 22 | 1.3 Modules 23 | -------------------------------------------- 24 | 25 | * Module names should be all lower case 26 | * When multiple words are needed, an underscore should separate them 27 | * It is usually preferable to stick to 1 word names 28 | 29 | 30 | 1.4 Classes 31 | -------------------------------------------- 32 | 33 | * Class names should follow the UpperCaseCamelCase convention 34 | * Python's built-in classes, however are typically lowercase words 35 | * Exception classes should end in “Error” 36 | 37 | 38 | 1.5 Global (module-level) Variables 39 | -------------------------------------------- 40 | 41 | * Global variables should be all lowercase 42 | * Words in a global variable name should be separated by an underscore 43 | 44 | 45 | 1.6 Instance Variables 46 | -------------------------------------------- 47 | 48 | * Instance variable names should be all lower case 49 | * Words in an instance variable name should be separated by an underscore 50 | * Non-public instance variables should begin with a single underscore 51 | * If an instance name needs to be mangled, two underscores may begin its name 52 | 53 | 54 | 1.7 Methods 55 | -------------------------------------------- 56 | 57 | * Method names should be all lower case 58 | * Words in an method name should be separated by an underscore 59 | * Non-public method should begin with a single underscore 60 | * If a method name needs to be mangled, two underscores may begin its name 61 | 62 | 63 | 1.8 Method Arguments 64 | -------------------------------------------- 65 | 66 | * Instance methods should have their first argument named ‘self’. 67 | * Class methods should have their first argument named ‘cls’ 68 | 69 | 70 | 1.9 Functions 71 | -------------------------------------------- 72 | 73 | * Function names should be all lower case 74 | * Words in a function name should be separated by an underscore 75 | 76 | 1.10 Constants 77 | -------------------------------------------- 78 | 79 | * Constant names must be fully capitalized 80 | * Words in a constant name should be separated by an underscore 81 | 82 | 83 | -------------------------------------------------------------------------------- /source/pages/project_file_structure.rst: -------------------------------------------------------------------------------- 1 | .. _project_file_structure: 2 | 3 | ============================= 4 | Python Project File Structure 5 | ============================= 6 | 7 | 1. Overall Structure 8 | ==================== 9 | * project_root 10 | * src 11 | * git 12 | * ui 13 | * canvas 14 | * dashboard 15 | * ui 16 | * resources 17 | * doc 18 | * api 19 | * guide 20 | 21 | 2. Directory Details 22 | ==================== 23 | 24 | 2.1. project_root 25 | ----------------- 26 | All files that are part of the project. The directory should be named after the project itself, and should be the git repo root directory. 27 | 28 | 2.2. src 29 | -------- 30 | All python source modules, separated into packages where there is shared functionality. In PyCharm, the src folder must be marked as the "Sources Root" directory by right-clicking on it and selecting Mark Directory As > Sources Root. 31 | 32 | 2.2.1. git 33 | ########## 34 | Git data model and git command API. 35 | 36 | 2.2.2. ui 37 | ######### 38 | User interface. 39 | 40 | 2.3. ui 41 | ------- 42 | All of the .ui interface files generated by qt-designer. It contains a subfolder, called 'resources' that contains all resources referenced from .ui files or from code. 43 | 44 | 2.4. doc 45 | -------- 46 | All of the documentation generated for this project. Within it are two subfolders, 'api' and 'guide'. 'api' contains API documentation (i.e. docs culled from sources), whereas the 'guide' folder contains our main documentation guide. 47 | -------------------------------------------------------------------------------- /source/pages/project_file_structure.rst~: -------------------------------------------------------------------------------- 1 | .. _project_file_structure: 2 | 3 | ============================================ 4 | 0. Python Project File Structure 5 | ============================================ 6 | 7 | 0.1 Overall Structure 8 | ============================================ 9 | * project_root 10 | * src 11 | * ui 12 | * resources 13 | * doc 14 | * api 15 | * guide 16 | 17 | 0.2 Directory Details 18 | ============================================= 19 | 20 | 0.2.1 project_root 21 | --------------------------------------------- 22 | 23 | The project root contains all files that are part of the project. The directory should be named after the project itself, and should be the git repo root directory. 24 | 25 | 0.2.2 ui 26 | --------------------------------------------- 27 | 28 | The ui folder contains all of the .ui interface files generated by qt-designer. It contains a subfolder, called 'resources' that contains all resources referenced from .ui files or from code 29 | 30 | 31 | -------------------------------------------------------------------------------- /source/pages/vcs_conventions~: -------------------------------------------------------------------------------- 1 | .. _vcs_conventions: 2 | 3 | ============================================ 4 | 2. VCS Convention 5 | ============================================ 6 | 7 | 2.1 Github 8 | ============================================ 9 | 10 | 2.1.1 Pull Requests 11 | -------------------------------------------- 12 | * All contributions to this project must be made through pull requests 13 | * In order to be accepted, the submited code must meet the following criteria 14 | * It must be apparantly free of bugs, or if intractable bugs are present and the code is still useful, bugs must be clearly documented and relevant issues must be created on github 15 | * It must meet all of the coding convention laid out in these documents 16 | * It must integrate well with existing code 17 | * Pull requests are accepted on a first come first serve basis. 18 | 19 | 2.1.2 Issue Tracking 20 | -------------------------------------------- 21 | * Github's issue tracking system will be used to track known bugs and issues 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/pages/vcs_convention~: -------------------------------------------------------------------------------- 1 | .. _vcs_convention: 2 | 3 | ============================================ 4 | 2. VCS Convention 5 | ============================================ 6 | 7 | 2.1 Github 8 | ============================================ 9 | 10 | 2.1.1 Pull Requests 11 | -------------------------------------------- 12 | * All contributions to this project must be made through pull requests 13 | * In order to be accepted, the submited code must meet the following criteria 14 | * It must be apparantly free of bugs, or if intractable bugs are present and the code is still useful, bugs must be clearly documented and relevant issues must be created on github 15 | * It must meet all of the coding convention laid out in these documents 16 | * It must integrate well with existing code 17 | * Pull requests are accepted on a first come first serve basis. 18 | 19 | 2.1.2 Issue Tracking 20 | -------------------------------------------- 21 | * Github's issue tracking system will be used to track known bugs and issues 22 | 23 | 2.2 Git 24 | ============================================ 25 | 26 | 27 | --------------------------------------------------------------------------------