Commit graph

1012 commits

Author SHA1 Message Date
Abhijeet Kasurde
9e221da44a VMware: vmware_guest_find scenario guide (#42450)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-07-30 12:53:33 -05:00
Ganesh Nalawade
89676c801f Update troubleshooting doc for command timeout (#43292)
* Update troubleshooting doc for command timeout

* Update timeout document to reflect the new way to set
  command timeout per task basis for network_cli and netconf
  connection type as per PR #42847

* Fix CI failure

* Fix review comment

* Fix typo in doc
2018-07-30 13:29:35 -04:00
Abhijeet Kasurde
d1c0b7a597 VMware: restructure docs (#43065)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-07-30 11:00:00 -05:00
Egor Zaitsev
249a6aae22 New module: routeros — manage MikroTik RouterOS (#41155)
* Implement initial RouterOS support

* Correct matchers for license prompts

* Documentation updates & mild refactor

* Remove one last Cisco function

* Sanity test fixes

* Move imports to the beginning

* Remove authorize property

* Handle ANSI codes

* Revert to_lines function

* CR fixes

* test(routeros): add unit tests

* Added another test (with ANSI colors and banner in fixture).

* Ignore CRLF line endings in system_package_print file

* fix: review by ganeshrn
2018-07-30 10:28:03 +05:30
Lindsay Hill
4a98802b52 Ironware: Deprecate provider, support network_cli (#43285) 2018-07-27 12:51:45 +05:30
Toshio Kuratomi
52449cc01a AnsiballZ improvements
Now that we don't need to worry about python-2.4 and 2.5, we can make
some improvements to the way AnsiballZ handles modules.

* Change AnsiballZ wrapper to use import to invoke the module
  We need the module to think of itself as a script because it could be
  coded as:

      main()

  or as:

      if __name__ == '__main__':
          main()

  Or even as:

      if __name__ == '__main__':
          random_function_name()

  A script will invoke all of those.  Prior to this change, we invoked
  a second Python interpreter on the module so that it really was
  a script.  However, this means that we have to run python twice (once
  for the AnsiballZ wrapper and once for the module).  This change makes
  the module think that it is a script (because __name__ in the module ==
  '__main__') but it's actually being invoked by us importing the module
  code.

  There's three ways we've come up to do this.
  * The most elegant is to use zipimporter and tell the import mechanism
    that the module being loaded is __main__:
    * 5959f11c9d/lib/ansible/executor/module_common.py (L175)
    * zipimporter is nice because we do not have to extract the module from
      the zip file and save it to the disk when we do that.  The import
      machinery does it all for us.
    * The drawback is that modules do not have a __file__ which points
      to a real file when they do this.  Modules could be using __file__
      to for a variety of reasons, most of those probably have
      replacements (the most common one is to find a writable directory
      for temporary files.  AnsibleModule.tmpdir should be used instead)
      We can monkeypatch __file__ in fom AnsibleModule initialization
      but that's kind of gross.  There's no way I can see to do this
      from the wrapper.

  * Next, there's imp.load_module():
    * https://github.com/abadger/ansible/blob/340edf7489/lib/ansible/executor/module_common.py#L151
    * imp has the nice property of allowing us to set __name__ to
      __main__ without changing the name of the file itself
    * We also don't have to do anything special to set __file__ for
      backwards compatibility (although the reason for that is the
      drawback):
    * Its drawback is that it requires the file to exist on disk so we
      have to explicitly extract it from the zipfile and save it to
      a temporary file

  * The last choice is to use exec to execute the module:
    * https://github.com/abadger/ansible/blob/f47a4ccc76/lib/ansible/executor/module_common.py#L175
    * The code we would have to maintain for this looks pretty clean.
      In the wrapper we create a ModuleType, set __file__ on it, read
      the module's contents in from the zip file and then exec it.
    * Drawbacks: We still have to explicitly extract the file's contents
      from the zip archive instead of letting python's import mechanism
      handle it.
    * Exec also has hidden performance issues and breaks certain
      assumptions that modules could be making about their own code:
      http://lucumr.pocoo.org/2011/2/1/exec-in-python/

  Our plan is to use imp.load_module() for now, deprecate the use of
  __file__ in modules, and switch to zipimport once the deprecation
  period for __file__ is over (without monkeypatching a fake __file__ in
  via AnsibleModule).

* Rename the name of the AnsiBallZ wrapped module
  This makes it obvious that the wrapped module isn't the module file that
  we distribute.  It's part of trying to mitigate the fact that the module
  is now named __main)).py in tracebacks.

* Shield all wrapper symbols inside of a function
  With the new import code, all symbols in the wrapper become visible in
  the module.  To mitigate the chance of collisions, move most symbols
  into a toplevel function.  The only symbols left in the global namespace
  are now _ANSIBALLZ_WRAPPER and _ansiballz_main.

revised porting guide entry

Integrate code coverage collection into AnsiballZ.

ci_coverage
ci_complete
2018-07-26 20:07:25 -07:00
John R Barker
3ab9030f05 Document more tools (#43053)
* Document more tools
2018-07-26 17:23:00 -05:00
Yanis Guenane
d94cc3568a CloudStack: Fix typos in the Guide (#43303) 2018-07-26 16:08:32 -04:00
Yuma Inaura (稲浦悠馬)
1199dff246 Update porting_guide_2.0.rst
Fix indent

+label: docsite_pr
2018-07-26 14:59:43 -04:00
Sam Doran
2a1a8585f3
Add reboot module stuff to 2.7 roadmap (#43232) 2018-07-25 16:37:57 -04:00
Fabian von Feilitzsch
d27de6acd9 Add from_yaml_all to support multi document yaml strings (#43037)
* Support multi-doc yaml in the from_yaml filter

* Most automatic method of handling multidoc

* Only use safe_load_all

* Implement separate filter

* Update plugin docs and changelog
2018-07-25 16:12:22 -04:00
Andrew Gaffney
dbff49dee0
Remove dead 'vault_password' play attribute (#41847) 2018-07-25 12:01:10 -05:00
Jordan Borean
2c9cbae3f9
Removed deprecated Windows items slated for removed in 2.7 (#43231) 2018-07-25 12:02:49 +10:00
Toshio Kuratomi
09142f791c Change the schedule to allow slip time.
We have to have time to slip release in case of major bugs.
2018-07-24 08:54:26 -07:00
Toshio Kuratomi
fb94857a83 Update roadmap with links to PRs 2018-07-24 08:54:26 -07:00
Matt Clay
4e489d1be8
Update Shippable integration test groups. (#43118)
* Update Shippable integration test groups.
* Update integration test group aliases.
* Rebalance AWS and Azure tests with extra group.
* Rebalance Windows tests with another group.
2018-07-23 20:46:22 -07:00
Donghyun Kang
1b86d598fc fixed typo(removed duplicated 'you') (#43158) 2018-07-24 07:50:09 +05:30
Jordan Borean
93c05074ee
win_chocolatey: refactor module to fix bugs and add new features (#43013)
* win_chocolatey: refactor module to fix bugs and add new features

* Fix some typos and only emit install warning not in check mode

* Fixes when testing out installing chocolatey from a server

* Added changelog fragment
2018-07-24 07:52:13 +10:00
Jarryd Tilbrook
460f858640 Enable check_mode in command module (#40428)
* Enable check_mode in command module

This only works if supplying creates or removes since it needs
something to base the heuristic off. If none are supplied it will just
skip as usual.
Fixes #15828

* Add documentation for new check_mode behavior
2018-07-23 14:06:41 -07:00
AJ Acevedo
e423436ed7 Minor grammatical update
Minor grammatical update.
2018-07-23 12:04:04 -04:00
augustkang
6db074e7af ansible/docs/docsite/rst/inventory/implicit_localhost.rst typo 2018-07-23 10:33:47 -04:00
Nathaniel Case
f6160c675d Add links to network roadmap items 2018-07-20 10:36:24 -07:00
Sandra McCann
2e93eab920 pr 42271 - fixed merge conflicts 2018-07-20 11:22:30 -04:00
Sloane Hertel
fdf51f2a43
Add AWS links for 2.7 roadmap (#43093) 2018-07-20 10:37:25 -04:00
Ryan S. Brown
859ef3d134 Add CFN Stackset roadmap link 2018-07-20 09:48:34 -04:00
Jordan Borean
5e20ef1d89
Add missing links for Windows items on the roadmap (#43061) 2018-07-20 13:12:37 +10:00
Chris Smolen
1e2b332001 Update the regex_findall example (#43052)
<!--- Your description here -->
The example has:
`{{ 'Some DNS servers are 8.8.8.8 and 8.8.4.4' | regex_findall('\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b') }}`

It needs be double backslashes to escape the backslashes:
`{{ 'Some DNS servers are 8.8.8.8 and 8.8.4.4' | regex_findall('\\b(?:[0-9]{1,3}\\.){3}[0-9]{1,3}\\b') }}`
+label: docsite_pr
2018-07-19 19:02:49 -04:00
Brian Coca
18aa87803f remove dupe entries 2018-07-19 12:16:33 -04:00
Sergiu Marsavela
8d194fa5f7 Update Openstack dynamic inventory reference (#41459)
* Update Openstack dynamic inventory link

* Add note for change of script name

* Change name of script to prevent Python module import errors.

Fixes #41562
2018-07-18 21:34:11 +05:30
John R Barker
5bcdf4f204
cli_config, not net_config (#42903) 2018-07-17 10:18:23 -07:00
Sandra McCann
1900635409 fixed typo (#42900) 2018-07-17 12:13:20 -04:00
Matt Davis
1c420f160a add links to roadmap projects/issues/PRs (#42771)
* add links to roadmap projects/issues/PRs
2018-07-17 09:11:05 -07:00
Taranjeet Singh
58d6044251 Docs: Update sentence structure in user guide (#42884)
This commit fixes the information about become keyword in
Introduction to Playbook part under User Guide.
2018-07-17 21:16:03 +05:30
Matt Martz
27b4d7ed31
Add feature to expose vars/defaults with include/import_role (#41330)
* First pass at making 'private' work on include_role, imports are always public

* Prevent dupe task execution and overwriting handlers

* New functionality will use public instead of deprecated private

* Add tests for public exposure

* Validate vars before import/include to ensure they don't expose too early

* Add porting guide docs about public argument and change to import_role

* Add additional docs about public and vars exposure to module docs

* Insert role handlers at parse time, exposing them globally
2018-07-15 09:59:30 -05:00
Dylan Silva
65643dfc8c Updated winrm details for more clarity (#42574) 2018-07-12 13:44:41 -07:00
Sviatoslav Sydorenko
97cc0cce7f
🚸 🐍 🍒 ⛏ Integrate cherry picker (#41403)
This enables developers to use cherry-picker for backporting purposes.
This tool originally comes from Core Python Development Workflow.

Ref: https://pypi.org/p/cherry-picker
Ref: https://github.com/python/core-workflow/tree/master/cherry_picker

Also:
* 📝 Add docs about supporting cherry-picker
2018-07-12 19:34:02 +03:00
Jiri Tyr
028f79a86b Adding the Ansible way how to create a password hash 2018-07-11 20:30:26 -04:00
Fran Fitzpatrick
5928ec04ca Adds an ipmath filter (#41985) 2018-07-11 10:52:31 -07:00
Brian Coca
a37f27a243 removed note from already removed 1.x api comment
fixes #39888
2018-07-11 11:55:57 -04:00
saidmu
52fe9aaf04 Update intro_inventory.rst
<!--- I think a colon is missing-->

+label: docsite_pr
2018-07-10 12:08:21 -04:00
Abhijeet Kasurde
ef67f580cc VMware: Add scenario guide for renaming VM (#42094)
This adds new sceario guide for renaming an existing virtual machine
to new name.

Fixes: #42084

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-07-10 09:22:52 -05:00
Dylan Silva
c227a0c8bb
Initial upload of roadmap for 2.7 (#41845)
* Initial upload of roadmap for 2.7

* Update ROADMAP_2_7.rst

* Uses regular quotes, rather than smart quotes

* Fix broken link
2018-07-09 12:29:08 -07:00
Sam Doran
7b0dea45e9 Update JSON Query filter examples (#42432)
* Update JSON Query filter examples

Correct syntax on one example
Add more examples of escaping
Change example to show joining list to string
2018-07-09 15:09:52 -04:00
Eugene Korekin
07adeff665 Fix typo (#42433)
+label: docsite_pr
2018-07-07 15:04:05 -04:00
Abhijeet Kasurde
6339e37abd VMware: Remove VM using vmware_guest (#42100)
* VMware: Remove VM using vmware_guest

This adds scenario guide for removing VM using vmware_guest module.

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>

* code review comments

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-07-06 12:29:52 -05:00
Alex Stephen
2916adc88a New doc guide for GCP (#41753)
* New doc guide for GCP

* Changes per PR

* Addressing PR comments on GCE scenario guide
2018-07-06 09:09:13 -05:00
Sachidananda Urs
fecda03066 Fix typos in documentation (#42406)
Fix typos in unit test documentation

Fixes:  #42405
2018-07-06 17:37:57 +05:30
Brian Coca
475abc0af7
inventory plugin docs (#42022)
* inventory plugin docs
* added set options
* minor wording and formatting fixes
* changed headers to std as per #35520, also added to main readme
* unified inventory plugin devel, referenced from generic plugin dev
* fixed typos and update as per feedback
2018-07-05 17:30:46 -04:00
Sam Doran
3e2a4f67cf
Update link to GitHub admin process (#42364) 2018-07-05 15:38:52 -04:00
John R Barker
6366df700d Document module links (#42308) 2018-07-05 14:19:09 -05:00
John R Barker
d962611528 Allow documentation of module options type (#42285)
* Allow documentation of module options

Pass through the `type` of a modules option so it's displayed on the
html module docs

* docs
2018-07-05 09:57:58 -04:00
Alexandre Vicenzi
df2e0c7c00 Fix broken links. (#42323) 2018-07-04 18:54:49 -07:00
Alexandre Vicenzi
1dafd92c8e Fix Ansible Galaxy documentation link. (#42316)
More info: https://github.com/ansible/galaxy/issues/830
2018-07-04 09:52:47 -07:00
Ganesh B. Nalawade
78b1980474 More CI failure fixes 2018-07-04 18:42:54 +05:30
Ganesh B. Nalawade
c43beef258 Minor changes 2018-07-04 17:45:12 +05:30
Ganesh B. Nalawade
d1ff8e2dca Update ssh_config to accept file path 2018-07-04 11:37:35 +05:30
Ganesh B. Nalawade
fa8b07e452 Fix doc indentation 2018-07-04 10:59:18 +05:30
Ganesh B. Nalawade
74a23f50e4 Fix CI failure 2018-07-04 10:14:18 +05:30
Ganesh B. Nalawade
8d8d4b3d86 Add options for jumphost in netconf connetion
Fixes #37262
Fixes #36284

*  Updates options in netconf connection to enable
   bastion/jump host setting using configuration/enviornment
   varaibles.
*  Update troubleshooting docs from using bastion host with netconf
   connection
2018-07-03 23:54:26 +05:30
Dag Wieers
75c8d8bfc2
Fix aci_tenant module references
<!--- Your description here -->

+label: docsite_pr
2018-07-03 10:39:46 +02:00
Andrew Gaffney
21b99bff94
Fix 'ansible-doc' command in action plugin docs (#42206) 2018-07-02 13:26:46 -05:00
Brian Coca
d497eba196 several FAQ updates and clarifications 2018-07-02 10:46:59 -04:00
Sam Doran
fb55038d75 Add warning when using an empty regexp in lineinfile (#42013)
* Revert "Account for empty string regexp in lineinfile (#41451)"

This reverts commit 4b5b4a760c.

* Use context managers for interacting with files

* Store line and regexp parameters in a variable

* Add warning when regexp is an empty string

* Remove '=' from error messages

* Update warning message and add changelog

* Add tests

* Improve warning message

Offer an equivalent regexp that won't trigger the warning.
Update tests to match new warning.

* Add porting guide entry for lineinfile change
2018-06-29 17:15:43 -07:00
Brian Coca
b6f2aad600 ignore ansible.cfg in world writable cwd (#42070)
* ignore ansible.cfg in world writable cwd
 * also added 'warnings' to config
 * updated man page template
2018-06-29 16:46:10 -07:00
John R Barker
e9dbebfa57
Fix some broken links (#42079)
* Fix some broken links

* We now only serve via https
* redirects don't work with anchors, so update those links (devel/dev_guide)
2018-06-29 11:12:01 -07:00
Matt Martz
aea396f04b
Add items2dict filter that is the reverse of dict2items (#42071)
* Add items2dict filter that is the reverse of dict2items

* Address feedback about type checking, and add docs for zip/zip_longest
2018-06-29 10:47:07 -05:00
Alicia Cozine
e0a9a71b04 updates docs links to changelogs for all versions (#41289)
* updates docs links to changelogs for all versions

* updates latest 2.5 release
2018-06-28 13:09:22 -07:00
Abhijeet Kasurde
19ece7b740
VMware: Add scenario guide (#40075)
This adds a scenario guide for vmware

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-06-28 14:58:22 +05:30
Matt Clay
d4ed572e91 Update roadmap schedule for 2.6. 2018-06-26 21:52:58 -07:00
Matt Martz
11ce954226
Fix docs for all test. Fixes #41956 (#41965) 2018-06-26 14:53:58 -05:00
Troy Murray
15ce7c5bab change OS X to macOS (#41294)
* change OS X to macOS

<!--- Your description here -->

+label: docsite_pr

* Update all Mac OS X references to be macOS

* Drop extra Mac
2018-06-26 14:09:23 -04:00
Matt Clay
e60da3feaf Update 2.6 roadmap release schedule. 2018-06-25 22:10:37 -07:00
Jordan Borean
2af36412f9
runas + async - get working on older hosts (#41772)
* runas + async - get working on older hosts

* fixed up sanity issues

* Moved first task to end of test for CI race issues

* Minor change to async test to be more stable, change to runas become to not touch the disk

* moved async test back to normal spot
2018-06-26 14:40:49 +10:00
Ted Timmons
3d78dd6677 add a third way to disable cows (#41866)
* add a third way to disable cows

Cows are great, but there's a third way to disable. I'm sure my RST markup can be improved.

* oops, actually in ansible.cfg
2018-06-25 16:53:19 -04:00
Jordan Borean
0b2ec9b11c
windows dsc docs: fix missing colon in example (#41886) 2018-06-25 11:38:08 +10:00
Toshio Kuratomi
8841fdd481 Bump versions on release_and_maintenance doc
(cherry picked from commit c8b1b271c6)
2018-06-21 18:01:19 -07:00
Olivier Bourdon
06b73ff8f1 Add random_mac string filter (#39775)
Add new filter to generate random MAC addresses from
string prefix. See docs/docsite/rst/user_guide/playbooks_filters.rst
for more detailed infos.
2018-06-21 15:56:54 -05:00
Andrea Tartaglia
a342538aba Add shell out checks (#41545)
* Added error codes for shell_out checks

* Added ignore lines for allowed Modules

* Added shell out checks

* Fixed pep8

* Updated regex to only match subprocess.Popen

* Added failing modules to ignore.txt

* Wrong postgresql module in ignore.txt

* Removed bigip from ignore.txt
2018-06-21 11:58:39 -04:00
Abhijeet Kasurde
27b85e732d Argument spec must be dict/hash (#40858)
validate-modules should fail when argument is not dict/hash.

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-06-20 12:05:49 -04:00
Matt Martz
ee221859cd
Load role vars and defaults before parsing tasks (#40982)
* Load role vars and defaults before parsing tasks. Fixes #40163

* Add porting guide note

* Wording clarifications

* typo

* grammar fixes
2018-06-18 10:56:55 -05:00
zharalim
d52ea9518d Update playbooks_filters.rst (#41628)
Add an example on how to use regexp_replace to modify list items.

+label: docsite_pr

Fix typo
2018-06-18 10:20:23 -04:00
Jon Dufresne
bf304832ff Prefer readthedocs.io instead of readthedocs.org for doc links (#41537)
Read the Docs moved hosting to readthedocs.io instead of
readthedocs.org. Fix all links in the project.

For additional details, see:

https://blog.readthedocs.com/securing-subdomains/

> Starting today, Read the Docs will start hosting projects from
> subdomains on the domain readthedocs.io, instead of on
> readthedocs.org. This change addresses some security concerns around
> site cookies while hosting user generated data on the same domain as
> our dashboard.
2018-06-18 08:22:50 -04:00
Jon Dufresne
dc7e50fa90 Update additional pypi.python.org URLs to pypi.org (#41373)
For details on the new PyPI, see the blog post:

https://pythoninsider.blogspot.ca/2018/04/new-pypi-launched-legacy-pypi-shutting.html
2018-06-17 14:01:18 +02:00
Abhijeet Kasurde
01cdc22ac6
Add documentation around package dependencies (#41437)
Documented procedure to handle package dependencies required by
packages which are Ansible dependencies.

Fixes: #30732
Fixes: #16571

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-06-15 20:44:01 +05:30
Jeff Geerling
a4f49ed648 Fix typos in blocks documentation examples. (#41508) 2018-06-14 16:14:11 +10:00
Matt Martz
dd8d74c351
Add docs for debugger for keyword dumper (#41421) 2018-06-11 16:18:01 -05:00
Sam Doran
30da71d880
Update docs on import/include tasks (#33032) 2018-06-11 13:01:53 -04:00
Matt Clay
2ecf1d35d3 Update 2.6 roadmap schedule. 2018-06-09 00:11:17 -07:00
wazzaz
91803c6ad3 Format fix on VMware Guide (#41272)
* Updating format of VMware Guide: small formatting error - hyperlink to module
2018-06-08 11:15:04 -05:00
MironVeryanskiy
f785bf3a9c Fix docs typo modules_intro.rst (#40835)
Fixed typo in modules_intro.rst.

+label: docsite_pr
2018-06-07 15:17:20 -05:00
Hideki Saito
d7df072b96 Add syslog_facility parameter handling with systemd.journal (#41078)
* Add syslog_facility parameter handling with systemd.journal

- Fixed issue #41072

Signed-off-by: Hideki Saito <saito@fgrep.org>
2018-06-07 12:23:13 -07:00
Matt Martz
4ca23cb147
Ensure the 2.7 porting guide is in the toc (#41267) 2018-06-07 12:22:23 -05:00
Till Maas
8be3924d4e Add Fedora as possible ansible_distribution value (#41177)
"ansible_distribution" can also be Fedora

+label: docsite_pr
2018-06-06 11:15:00 +02:00
Abhijeet Kasurde
e8227e8395
Add note about updating pip (#41124)
Fixes: #39120

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-06-06 09:27:07 +05:30
Matt Clay
70c475da6c Implement new changelog generator. 2018-06-05 19:08:15 -07:00
Toshio Kuratomi
cef4d862bc
Better error message if the template is not utf-8 encoded (#41030)
* Better error message if the template is not utf-8 encoded

Also document this in the porting guide
2018-06-05 19:07:11 -07:00
Jacob Floyd
4fa2fb9c89 Docs fix: ansible_group_priority defaults to 1
The docs committed in #28777 were inconsistent.
This clarifies that the default `ansible_group_priority` is `1`.[1][2]

[1] https://github.com/ansible/ansible/blob/153c9bd/lib/ansible/inventory/group.py#L40
[2] https://github.com/ansible/ansible/blob/153c9bd/lib/ansible/cli/inventory.py#L236
2018-06-05 20:31:10 -04:00
Matt Martz
1cec3c8daf Add docs detailing how to convert many with_X style loops to use loop and filters (#40964)
* Add docs detailing how to convert many with_X style loops to use loop and filters. Fixes #40727

* Switch lookup used in query vs lookup comparison, to not recommend use of nested lookup

* Improve docs based on feedback
2018-06-01 10:37:21 -04:00
Matt Clay
f426fcd9a6 Update roadmap schedule for 2.6. 2018-05-31 13:12:27 -07:00
Brian Campbell
fa5c0282a4 Use colspan on td instead of divs for hierarchical tables (#39948)
Address Firefox table-rendering issues in docs. Refactor to use colspan to provide table cells which can vary in width and indentation; the outermost has the greatest colspan, and each nested key has a colspan of one less than the parent, with padding cells for indentation.
Apply styling to table cells to get the table height to work without hacks or browser-specific
styling.  Simplify the markup and CSS by removing extra divs. Use two passes over the options, return values, and return facts in the Jinja2 module-docs template: one to determine the maximum nesting depth to compute the maximum colspan needed, plus one to lay out the rows.
2018-05-31 12:58:33 -05:00