48 Commits

Author SHA1 Message Date
Waylan Limberg
675681448e Ensure lunr.py version matches lunr.js
Each version of lunr.py only works with a specific version of lunr.js.
Therefore we must hardcode the specific version of lunr.py in our
requirements. As we recently updated to lunr.js version 2.3.8 (#1995),
that coincides with lunr.py version 0.5.6. See the lunr.py CHANGELOG for
coinciding versions: https://github.com/yeraydiazdiaz/lunr.py/blob/master/CHANGELOG.md
2020-02-22 18:33:38 -05:00
Jim Porter
37e645d623 Use toc_tokens to generate the TOC
This patch improves the consistency of TOC levels, so now the level is always
equal to the N in the `<hN>` tag. It also allows users of the MkDocs theme to
set the navigation depth to show in the TOC panel (defaulting to 2).
Resolves #1910 and resolves #770.
2020-02-17 17:27:12 -05:00
Waylan Limberg
61105ce56d Update min Markdown version to 3.0. 2019-12-23 15:54:26 -05:00
Waylan Limberg
2491c1433a Update min dependency to Jinja 2.10.1.
Jinja 2.10.1 patched a security valnerability. See the release notes here:
https://github.com/pallets/jinja/blob/master/CHANGES.rst#version-2101

Closes #1780.
2019-12-20 15:01:02 -05:00
Waylan Limberg
f601e0ae62 Drop Python 3.4 support. 2019-12-20 09:21:35 -05:00
Waylan Limberg
c9032bd6bf Drop Python 2.7.
* Disable Linkchecker Test.
* Switch to unittest.mock in standard lib.
* Apply `pyupgrade --py3-plus`.
* Note: Using `builtins.open` mocks all calls to `open`, including test setup
(such as in `load_config`). Whereas, `path.to.namespace.open` only mocks
`open` in that namepsace. This all worked differently when we used `io.open`
as that wasn't a builtin to begin with. 
* Add a helpful error msg for PY2 users who use non-standard install methods.

Closes #1926.
2019-12-20 08:44:07 -05:00
Yeray Diaz Diaz
259c2b102b Use lunr.py for prebuilding indices (#1607) 2018-09-29 09:07:53 -04:00
coliff
b4b49a1f52 HTTPS Links 2018-07-19 11:53:56 -04:00
Waylan Limberg
7c0d0b7624 Add official support for PY37. (#1545)
* Use Python 3.7-dev in Travis until they add official support for PY37.
* PY37 requires PyYAML 3.13+.
2018-07-12 15:24:19 -04:00
Waylan Limberg
34ef3ca6d0 Internal Refactor of Pages, Files, and Navigation (#1504)
Internal handling of pages, files and navigation has been completely refactored.
The changes included in the refactor are summarized below.

* Support for hidden pages. All Markdown pages are now included in the build
  regardless of whether they are included in the navigation configuration
  (fixes #699).
* The navigation can now include links to external sites (fixes #989, fixes #1373,
  & fixes #1406).
* Page data (including titles) is properly determined for all pages before any
  page is rendered (fixes #1347).
* Automatically populated navigation now sorts index pages to the top. In other
  words, The index page will be listed as the first child of a directory, while
  all other documents are sorted alphanumerically by file name after the index
  page (fixes #73 & fixes #1042).
* A `README.md` file is now treated as an index file within a directory and
  will be rendered to `index.html` (fixes #608).
* The URLs for all files are computed once and stored in a files collection.
  This ensures all internal links are always computed correctly regardless of
  the configuration. This also allows all internal links to be validated, not
  just links to other Markdown pages. (fixes #842 & fixes #872).
* An `on_files` plugin event has been added, which could be used to include
  files not in the `docs_dir`, exclude files, redefine page URLs (i.e.
  implement extensionless URLs), or to manipulate files in various other ways.

Backward incompatible changes are highlighted in the release notes included 
with this commit. Some notes regarding various decisions follow in no particular 
order:

This started out as the contents of the 'structure' dir from @tomchristie's 
work in #689.

All paths must be all Unicode all the time. When a byte string and a 
Unicode string are both passed to os.path (join ect) then returned value 
is always a byte string. Therefore, we need every path string to be 
Unicode. This ensures validation checks that and if the byte string uses 
the file system encoding, decodes it. For any other encoding, a 
validation error is raised.

Paths which start with a slash are assumed to be relative to the
docs_dir root. This behavior fixes #192. However, the slash not being
present in the output may surprise some users who are trying to create a
link relative to the server root when the mkdocs root is not at the
server root. The URLs available on a page are:

* Page.url is the url relative to the site_dir
* Page.canonical_url is the relative url joined with site_url or None if
  site_url is not defined (the default).
* Page.abs_url is the path component of the canonical url or None if
  canonical_url is None.

Note that new behavior is slightly different than before. Previously
abs_url ignored site_url and was always url with '' prepended. With the
new behavior, if site_url includes a subdir, that subdir will be
included in the abs_url.

When not on a server, there is no sensable "absolute_url" for a page.
Therefore, we shouldn't try to define one.

The thinking is that users generating docs to be browsed in the local
file system (`file://`) should leave the site_url setting unset, while
users who will be serving their docs from a server should be setting the
site_url. And if the site_url point sot a subdir of the server, the
abs_url will stil be absolute from the server root as it uses the "path"
of the canonical_url of the page.

Note that without the magical url context all URLs must be prepended by
`{{ base_url }}/` in the templates. While this requires a change in
third party themes, it is more consistent.

Links being ignored in raw HTML is now documented. Fixes #991.

All related tests that require temp dirs use the `mkdocs.tests.base.tempdir`
decorator. Note that any unrelated tests have not yet been updated. 
That can happen separately from this. The one test in 
`mkdocs.tests.structure.page_tests` (test_BOM) is unique enough to 
not use the decorator.
2018-06-28 15:08:17 -04:00
Waylan Limberg
d6449f9080 Drop official support for Python 3.3.
Also up tornado version to >=5.0. Fixes #1427.
2018-04-03 15:49:15 -04:00
Waylan Limberg
dd7e2d910b Refactor search plugin (#1418)
* Use a web worker in the browser with a fallback (fixes #859 & closes #1396).
* Optionally pre-build search index (fixes #859 & closes #1061).
* Upgrade to lunr.js 2.x (fixes #1319).
* Support search in languages other than English (fixes #826).
* Allow the user to define the word separators (fixes #867).
* Only run searches for queries of length > 2 (fixes #1127).
* Remove dependency on require.js, mustache, etc. (fixes #1218).
* Compress the search index (fixes #1128).
2018-03-05 19:42:20 -05:00
Waylan Limberg
d393158445 Version to 0.17.0
Also made a couple adjustments to "documented" Python versions.
2017-10-19 19:01:36 -04:00
Waylan Limberg
31e7c29784 Set 'search' as a default plugin.
Maintains better backward-compatability. Documentation updated, including
how to override the default. Also renamed the entry_point to 'search'.
The lib is still 'legacy_search'. When a new/better search plugin is
developed, the `search` entry_point will be pointed there so the default
behavior will inlcude the upgrade and a new `entry_point` will be added
('legacy_search') which points to the old plugin for those who really want
it.
2017-10-12 16:12:40 -04:00
Waylan Limberg
ffae0ef89c The Plugin API. (#1223)
See the included documentation for a full explanation of the API.

Search has been removed and wrapped in a plugin (named "legacy_search").
The search feature was ported as-is. None of the open issues with search
have been addressed. Presumably, a new search plugin will be built from
the ground up which addresses those issues.

Note that there is no 'default' plugins. That means that users get no
search unless they enable it in the config by adding the following to
their `mkdocs.yml` file:

    plugins:
        - legacy_search

Fixes #206
2017-10-01 16:48:47 -04:00
Waylan Limberg
418965977f Drop support for Python 2.6.
MkDocs most likley will no longer run on Python 2.6. All relevant tests
have been removed. Closes #165.
2017-10-01 16:48:47 -04:00
Waylan Limberg
3c8a1fccca Up livereload version to >=2.5.1. (#1122)
This ensures older pyinotify versions don't break the livereload server.
Fixes #1106.
2017-01-08 17:53:08 -05:00
Dougal Matthews
cc1c9a3adb Remove external themes from MkDocs
This change removes the dependency on mkdocs-bootstrap and mkdocs-bootswatch.
It also updates all references in the code. The only remaining connection is
when a user specifies one of these themes but they are not installed they get
slightly helpful error.
2016-03-01 10:53:02 +00:00
Dougal Matthews
c1878a24a6 Add the classifier for Python 3.5 2016-01-29 17:21:25 +00:00
Dougal Matthews
71de07cdaf Lower the required Click version to 3.3 2016-01-29 17:21:12 +00:00
Dougal Matthews
bcb88abcda Rename cli.py to __main__.py
This uses the standard entrypoint name and allows `python -m mkdocs` to
work.
2015-08-13 09:26:21 +01:00
Dougal Matthews
0468754edb Add the default themes back in as packages 2015-06-27 10:40:18 +01:00
Dougal Matthews
aa7c34e3a7 Update package data discovery 2015-06-27 10:40:18 +01:00
Dougal Matthews
00f96640c4 Change the builtin themes to packages and update theme loading 2015-06-27 10:40:18 +01:00
Dougal Matthews
6a8efa580d Return the release helper
We transitioned to Travis for deploying to PyPI but this only creates a
wheel for Python 2.7. So for now, we will do the manual releases again.

This reverts commit 38fc746954.
2015-06-08 11:27:53 +01:00
Dougal Matthews
eecd83b998 Refactor gh-deploy and remove ghp-import requirement
This change modifies ghp-import to be a library and uses it instead of
calling the package with subprocess.

Fixes #598
Fixes #547
2015-06-06 10:17:26 +01:00
Waylan Limberg
975b216c79 Removed six dependency. 2015-06-03 11:26:12 -04:00
Dougal Matthews
38fc746954 Remove old release code 2015-05-25 17:40:53 +01:00
Dougal Matthews
90b2724c31 Make auto-reloading optional
Fixes #445
2015-05-10 00:32:03 +01:00
Dougal Matthews
7d4897123f Set zip_safe=False 2015-05-06 16:43:38 +01:00
Dougal Matthews
db9ca221bb Revert "Set zip_safe=False"
This reverts commit 196e30d6b1.
2015-05-06 16:43:25 +01:00
Dougal Matthews
196e30d6b1 Set zip_safe=False 2015-05-06 16:23:20 +01:00
Dougal Matthews
c3ab1cc95b Refactor the current CLI implementation to use Click
This reimplements the CLI interface to use Click, which in turn gives us
a much easier to use interface as it provides help messages for all the
commands and individual commands.

Fixes #259
2015-04-28 20:06:57 +01:00
Dougal Matthews
234bc4168d Remove mkdocs.compat and add six
Fixes #447
2015-04-23 22:27:02 +01:00
Dougal Matthews
ad7df6390a Create wheels and use twine to upload to PyPI 2015-04-21 16:32:37 +01:00
Dougal Matthews
c4cb25e584 Automatically refresh the browser on edits
Use python-livereload to automatically refresh your browser.

Closes #163
2015-04-10 09:04:20 +01:00
Dougal Matthews
2677ebb00d Remove the upper limitation for Python-Markdown on Python >=2.7 2015-04-08 12:45:28 +01:00
Dougal Matthews
f0de54b8e0 Revert "Automatically refresh the browser on edits"
This reverts commit 50327cb14d.
2015-04-08 12:23:23 +01:00
Dougal Matthews
50327cb14d Automatically refresh the browser on edits
Use python-livereload to automatically refresh your browser.

Closes #163
2015-04-06 12:07:57 +01:00
Dougal Matthews
3ed0fe8c4a Added initial descriptions for PyPi based on those on the website
Fixes #159
2014-10-23 08:03:13 +01:00
Dougal Matthews
27b3268931 Relax version requirements to accept a greater version
Fixes #104
2014-10-18 08:41:35 +01:00
Dougal Matthews
7df0c9c283 Updated classifiers for PyPI 2014-10-09 09:47:58 +01:00
Ed Brannin
9202ffdff8 Updated setup.py to use entry_points['console_scripts'] instead of scripts.
This makes a "mkdocs" command on Windows/OSX/Linux without any platform-specific code in setup.py.

I think this is the preferred way to install a Python command with setuptools.

It is, at least, the method used by:

* [flake8](8ee94d1eee/setup.py)
* [coverage.py](ca875e7390/setup.py)
* [Fabric](https://github.com/fabric/fabric/blob/master/setup.py)
* Many others

In the past, I had to change imports willy-nilly or add
"from __future__ import absolute_imports" to a bunch of files.
This is because I was renaming "mkdocs" to "mkdocs.py" instead of "main.py",
and the module-vs-script name clash was confusing imports from other files.
2014-08-17 00:01:45 -04:00
Tom Christie
305ebcf90e Add 'ghp-deploy' 2014-03-30 16:02:22 +01:00
Tom Christie
ca36975deb Tweaks for version 0.2 release 2014-01-21 17:12:23 +00:00
Tom Christie
4635afcfca Version 0.2 2014-01-21 17:00:02 +00:00
Tom Christie
1d01415069 Still awesome 2014-01-19 12:09:47 +00:00
Tom Christie
fca0ff6f93 Initial package setup 2014-01-11 21:04:32 +00:00