From 1170b2897a6df23e6665f61bc8bb9d13e4ba3fe6 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Mon, 5 Sep 2016 03:31:48 -0700 Subject: [PATCH] Doc updates --- docs/Makefile | 5 +++ docs/source/_static/favicon.ico | Bin 0 -> 17957 bytes docs/source/_static/logo-apple.png | Bin 0 -> 15269 bytes docs/source/_static/logo.png | Bin 0 -> 15701 bytes docs/source/conf.py | 59 ++++++++++++++++++++++------- homeassistant/const.py | 37 +++++++++++++++++- setup.py | 32 +++++++--------- 7 files changed, 100 insertions(+), 33 deletions(-) create mode 100644 docs/source/_static/favicon.ico create mode 100644 docs/source/_static/logo-apple.png create mode 100644 docs/source/_static/logo.png diff --git a/docs/Makefile b/docs/Makefile index c2cf05dc0e4..e8b712ce8a1 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -18,6 +18,7 @@ I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" + @echo " livehtml to make standalone HTML files via sphinx-autobuild" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @@ -54,6 +55,10 @@ html: @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." +.PHONY: livehtml +livehtml: + sphinx-autobuild --port 0 -B -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + .PHONY: dirhtml dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml diff --git a/docs/source/_static/favicon.ico b/docs/source/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6d12158c18b17464323bea3d769003e6dd915af3 GIT binary patch literal 17957 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

(Q*+a&0`-u=kC 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/logo-apple.png b/docs/source/_static/logo-apple.png new file mode 100644 index 0000000000000000000000000000000000000000..20117d00f22756f4e77b60042ac48186e31a3861 GIT binary patch literal 15269 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�(?tbYP2I(uHR(4rn4BBLn&r3LoZSB{X3^Ps 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 Ug_c~e8=#HOp00i_>zopr03DqeA^-pY literal 0 HcmV?d00001 diff --git a/docs/source/conf.py b/docs/source/conf.py index b9f5f225672..4ca74060aad 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -21,6 +21,13 @@ # import sys # sys.path.insert(0, os.path.abspath('.')) +from homeassistant.const import (__version__, __short_version__, PROJECT_NAME, + PROJECT_LONG_DESCRIPTION, PROJECT_URL, + PROJECT_COPYRIGHT, PROJECT_AUTHOR, + PROJECT_GITHUB_USERNAME, + PROJECT_GITHUB_REPOSITORY, PYPI_URL, + GITHUB_URL) + # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. @@ -53,18 +60,18 @@ source_suffix = '.rst' master_doc = 'index' # General information about the project. -project = 'Home Assistant' -copyright = '2016, Home Assistant Team' -author = 'Home Assistant Team' +project = PROJECT_NAME +copyright = PROJECT_COPYRIGHT +author = PROJECT_AUTHOR # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '0.27' +version = __short_version__ # The full version, including alpha/beta/rc tags. -release = '0.27.0' +release = __version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -124,13 +131,31 @@ todo_include_todos = False # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -# html_theme = 'alabaster' +html_theme = 'alabaster' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # -# html_theme_options = {} +html_theme_options = { + 'logo': 'logo.png', + 'logo_name': PROJECT_NAME, + 'description': PROJECT_LONG_DESCRIPTION, + 'github_user': PROJECT_GITHUB_USERNAME, + 'github_repo': PROJECT_GITHUB_REPOSITORY, + 'github_type': 'star', + 'github_banner': True, + 'travis_button': True, + 'touch_icon': 'logo-apple.png', + # 'fixed_sidebar': True, # Re-enable when we have more content + 'extra_nav_links': { + '🏡 Homepage': PROJECT_URL, + '📌 Community Forums': 'https://community.home-assistant.io', + '💬 Gitter': 'https://gitter.im/home-assistant/home-assistant', + '🚀 GitHub': GITHUB_URL, + '💾 Download Releases': PYPI_URL, + } +} # Add any paths that contain custom themes here, relative to this directory. # html_theme_path = [] @@ -147,13 +172,14 @@ todo_include_todos = False # The name of an image file (relative to this directory) to place at the top # of the sidebar. # -# html_logo = None +# html_logo = '_static/logo.png' # The name of an image file (relative to this directory) to use as a favicon of -# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# the docs. +# This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. # -# html_favicon = None +html_favicon = '_static/favicon.ico' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -170,16 +196,23 @@ html_static_path = ['_static'] # bottom, using the given strftime format. # The empty string is equivalent to '%b %d, %Y'. # -# html_last_updated_fmt = None +html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. # -# html_use_smartypants = True +html_use_smartypants = True # Custom sidebar templates, maps document names to template names. # -# html_sidebars = {} +html_sidebars = { + '**': [ + 'about.html', + 'navigation.html', + 'relations.html', + 'searchbox.html', + ] +} # Additional templates that should be rendered to pages, maps page names to # template names. diff --git a/homeassistant/const.py b/homeassistant/const.py index a07316711d1..c367792852a 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,9 +1,42 @@ # coding: utf-8 """Constants used by Home Assistant components.""" - -__version__ = '0.28.0.dev0' +MAJOR_VERSION = 0 +MINOR_VERSION = 28 +PATCH_VERSION = '0.dev0' +__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) +__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) REQUIRED_PYTHON_VER = (3, 4) +PROJECT_NAME = 'Home Assistant' +PROJECT_PACKAGE_NAME = 'homeassistant' +PROJECT_LICENSE = 'MIT License' +PROJECT_AUTHOR = 'The Home Assistant Authors' +PROJECT_COPYRIGHT = '2016, {}'.format(PROJECT_AUTHOR) +PROJECT_URL = 'https://home-assistant.io/' +PROJECT_EMAIL = 'hello@home-assistant.io' +PROJECT_DESCRIPTION = ('Open-source home automation platform ' + 'running on Python 3.') +PROJECT_LONG_DESCRIPTION = ('Home Assistant is an open-source ' + 'home automation platform running on Python 3. ' + 'Track and control all devices at home and ' + 'automate control. ' + 'Installation in less than a minute.') +PROJECT_CLASSIFIERS = [ + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3.4', + 'Topic :: Home Automation' +] + +PROJECT_GITHUB_USERNAME = 'home-assistant' +PROJECT_GITHUB_REPOSITORY = 'home-assistant' + +PYPI_URL = 'https://pypi.python.org/pypi/{}'.format(PROJECT_PACKAGE_NAME) +GITHUB_URL = 'https://github.com/{}/{}'.format(PROJECT_GITHUB_USERNAME, + PROJECT_GITHUB_REPOSITORY) + PLATFORM_FORMAT = '{}.{}' # Can be used to specify a catch all when registering state or event listeners. diff --git a/setup.py b/setup.py index caa5b177b5c..67366bd7d83 100755 --- a/setup.py +++ b/setup.py @@ -1,12 +1,15 @@ #!/usr/bin/env python3 import os from setuptools import setup, find_packages -from homeassistant.const import __version__ +from homeassistant.const import (__version__, PROJECT_PACKAGE_NAME, + PROJECT_LICENSE, PROJECT_URL, + PROJECT_EMAIL, PROJECT_DESCRIPTION, + PROJECT_CLASSIFIERS, GITHUB_URL, + PROJECT_AUTHOR) -PACKAGE_NAME = 'homeassistant' HERE = os.path.abspath(os.path.dirname(__file__)) -DOWNLOAD_URL = ('https://github.com/home-assistant/home-assistant/archive/' - '{}.zip'.format(__version__)) +DOWNLOAD_URL = ('{}/archive/' + '{}.zip'.format(GITHUB_URL, __version__)) PACKAGES = find_packages(exclude=['tests', 'tests.*']) @@ -21,14 +24,14 @@ REQUIRES = [ ] setup( - name=PACKAGE_NAME, + name=PROJECT_PACKAGE_NAME, version=__version__, - license='MIT License', - url='https://home-assistant.io/', + license=PROJECT_LICENSE, + url=PROJECT_URL, download_url=DOWNLOAD_URL, - author='Home Assistant', - author_email='hello@home-assistant.io', - description='Open-source home automation platform running on Python 3.', + author=PROJECT_AUTHOR, + author_email=PROJECT_EMAIL, + description=PROJECT_DESCRIPTION, packages=PACKAGES, include_package_data=True, zip_safe=False, @@ -41,12 +44,5 @@ setup( 'hass = homeassistant.__main__:main' ] }, - classifiers=[ - 'Intended Audience :: End Users/Desktop', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: MIT License', - 'Operating System :: OS Independent', - 'Programming Language :: Python :: 3.4', - 'Topic :: Home Automation' - ], + classifiers=PROJECT_CLASSIFIERS, )