diff --git a/README.md b/README.md index 74cd5b7..c23ca52 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,15 @@ -# DPPY +# Data Parallel Extensions for Python* -## Documnetation +Data Parallel Extensions for Python* extend numerical Python capabilities beyond CPU and allow even higher performance +gains on data parallel devices such as GPUs. It consists of three related projects: +* [**dpnp** – Data Parallel Extensions for Numpy*](https://github.com/IntelPython/dpnp) - a library that implements a subset + of Numpy that can be executed on any data parallel device. The subset is a drop-in replacement of core + Numpy functions and numerical data types. +* [**numba-dpex** – Data Parallel Extensions for Numba*](https://github.com/IntelPython/numba-dpex) - extension for Numba + compiler that enables programming data parallel devices the same way you program CPU with Numba. +* [**dpctl** – Data Parallel Control library](https://github.com/IntelPython/dpctl) that provides utilities for device + selection, allocation of data on devices, tensor data structure along with Python Array API standard + implementation, and support for creation of user-defined data-parallel extensions. -https://intelpython.github.io/DPPY/main/ +Read more about Data Parallel Extensions for Python https://intelpython.github.io/DPPY/main/ -## Contributing - -For contributing to this repository see [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index a577230..0000000 --- a/docs/conf.py +++ /dev/null @@ -1,64 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - -import sphinx_rtd_theme - -# -- Project information ----------------------------------------------------- - -project = "DPPY" -copyright = "2021, Intel" -author = "Intel" - -# The full version, including alpha/beta/rc tags -release = "0.0.1" - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "recommonmark", - "sphinx_rtd_theme", - "sphinx.ext.autodoc", - "sphinx.ext.todo", -] - -todo_include_todos = True - -source_parsers = {".md": "recommonmark.parser.CommonMarkParser"} - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "sphinx_rtd_theme" - -# 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, -# so a file named "default.css" will overwrite the builtin "default.css". -# html_static_path = ["_static"] diff --git a/docs/sources/conf.py b/docs/sources/conf.py new file mode 100644 index 0000000..1360b95 --- /dev/null +++ b/docs/sources/conf.py @@ -0,0 +1,258 @@ +"""" +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +import sphinx_rtd_theme + +# -- Project information ----------------------------------------------------- + +project = "Data Parallel Extensions for Python" +copyright = "2021, Intel" +author = "Intel" + +# The full version, including alpha/beta/rc tags +release = "0.0.1" + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "recommonmark", + "sphinx_rtd_theme", + "sphinx.ext.autodoc", + "sphinx.ext.todo", +] + +todo_include_todos = True + +source_parsers = {".md": "recommonmark.parser.CommonMarkParser"} + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" + +# 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, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ["_static"] +""" + +# ***************************************************************************** +# Copyright (c) 2020, Intel Corporation All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ***************************************************************************** + + +# coding: utf-8 +# Configuration file for the Sphinx documentation builder. +# +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Import sdc package to build API Reference ------------------------------- +#import os +#import sys +#import shutil + +#SDC_DOC_NO_API_REF_STR = 'SDC_DOC_NO_API_REF' +#SDC_DOC_APIREF_DIR = '_api_ref' + +#sys.path.insert(0, os.path.relpath('buildscripts')) +#sdc_doc_no_api_ref = False # Generate API Reference by default + +#if SDC_DOC_NO_API_REF_STR in os.environ: +# sdc_doc_no_api_ref = os.environ[SDC_DOC_NO_API_REF_STR] == '1' + +#if not sdc_doc_no_api_ref: +# if os.path.exists(SDC_DOC_APIREF_DIR): +# shutil.rmtree(SDC_DOC_APIREF_DIR) + +# try: +# import sdc +# except ImportError: +# raise ImportError('Cannot import sdc.\n' +# 'Documentation generator for API Reference for a given module expects that module ' +# 'to be installed. Use conda/pip install SDC to install it prior to using API Reference ' +# 'generation. If you want to disable API Reference generation, set the environment ' +# 'variable SDC_DOC_NO_API_REF=1') + +# try: +# from apiref_generator import generate_api_reference +# except ImportError: +# raise ImportError('Cannot import apiref_generator', os.getcwd()) + +# generate_api_reference() + +#SDC_DOC_NO_EXAMPLES_STR = 'SDC_DOC_NO_EXAMPLES' +#SDC_DOC_EXAMPLES_DIR = '_examples' + +#sdc_doc_no_examples = False # Generate examples list by default +#if SDC_DOC_NO_EXAMPLES_STR in os.environ: +# sdc_doc_no_examples = os.environ[SDC_DOC_NO_EXAMPLES_STR] == '1' + +#if not sdc_doc_no_examples: +# if os.path.exists(SDC_DOC_EXAMPLES_DIR): +# shutil.rmtree(SDC_DOC_EXAMPLES_DIR) + +# try: +# import sdc +# except ImportError: +# raise ImportError('Cannot import sdc.\n' +# 'Documentation generator for Examples for a given module expects that module ' +# 'to be installed. Use conda/pip install SDC to install it prior to using API Examples ' +# 'generation. If you want to disable Examples generation, set the environment ' +# 'variable SDC_DOC_NO_EXAMPLES_STR=1') + +# try: +# from examples_generator import generate_examples +# except ImportError: +# raise ImportError('Cannot import examples_generator', os.getcwd()) + +# generate_examples() + +# -- Project information ----------------------------------------------------- + +project = 'Data Parallel Extensions for Python*' +copyright = '2022, Intel Corporation' +author = 'Intel Corporation' + +# The full version, including alpha/beta/rc tags +release = '0.1' + + +# -- General configuration ---------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.todo', + 'sphinx.ext.intersphinx', + 'sphinx.ext.extlinks', + 'sphinx.ext.githubpages', + 'sphinx.ext.napoleon', + 'sphinxcontrib.programoutput', +] + + +# Add any paths that contain templates here, relative to this directory. +#templates_path = ['_templates'] +templates_path = [] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sdc-sphinx-theme' + +html_theme_path = ['.'] + +html_theme_options = { +} + +# 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, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = [] + +html_sidebars = { + '**': ['globaltoc.html', 'sourcelink.html', 'searchbox.html', 'relations.html'], +} + +html_show_sourcelink = False + +# -- Todo extension configuration ---------------------------------------------- +todo_include_todos = True +todo_link_only = True + +# -- InterSphinx configuration: looks for objects in external projects ----- +# Add here external classes you want to link from Intel SDC documentation +# Each entry of the dictionary has the following format: +# 'class name': ('link to object.inv file for that class', None) +#intersphinx_mapping = { +# 'pandas': ('https://pandas.pydata.org/pandas-docs/stable/', None), +# 'python': ('http://docs.python.org/2', None), +# 'numpy': ('http://docs.scipy.org/doc/numpy', None) +#} +intersphinx_mapping = { +} + +# -- Napoleon extension configuration (Numpy and Google docstring options) ------- +#napoleon_google_docstring = True +#napoleon_numpy_docstring = True +#napoleon_include_init_with_doc = True +#napoleon_include_private_with_doc = True +#napoleon_include_special_with_doc = True +#napoleon_use_admonition_for_examples = False +#napoleon_use_admonition_for_notes = False +#napoleon_use_admonition_for_references = False +#napoleon_use_ivar = False +#napoleon_use_param = True +#napoleon_use_rtype = True + +# -- Prepend module name to an object name or not ----------------------------------- +add_module_names = False diff --git a/docs/index.rst b/docs/sources/index.rst similarity index 100% rename from docs/index.rst rename to docs/sources/index.rst diff --git a/docs/sources/sdc-sphinx-theme/globaltoc.html b/docs/sources/sdc-sphinx-theme/globaltoc.html new file mode 100644 index 0000000..3bd8404 --- /dev/null +++ b/docs/sources/sdc-sphinx-theme/globaltoc.html @@ -0,0 +1,3 @@ +

Table of Contents

+{{ toctree(maxdepth=-1, titles_only=true) }} + diff --git a/docs/sources/sdc-sphinx-theme/layout.html b/docs/sources/sdc-sphinx-theme/layout.html new file mode 100644 index 0000000..d6cbb4b --- /dev/null +++ b/docs/sources/sdc-sphinx-theme/layout.html @@ -0,0 +1,99 @@ +{% extends "basic/layout.html" %} + +{%- block scripts %} + {{ super() }} + + {% if not embedded %}{% endif %} +{%- endblock %} + +{# Add the google webfonts needed for the logo #} +{% block extrahead %} + +{% endblock %} + +{% block header %} +
+ + + + +
+{% endblock %} + +{% block relbar1 %} + +{% endblock %} + +{# Silence the bottom relbar. #} +{% block relbar2 %}{% endblock %} + + +{%- block footer %} + +{%- endblock %} diff --git a/docs/sources/sdc-sphinx-theme/localtoc.html b/docs/sources/sdc-sphinx-theme/localtoc.html new file mode 100644 index 0000000..0a21ad0 --- /dev/null +++ b/docs/sources/sdc-sphinx-theme/localtoc.html @@ -0,0 +1,3 @@ +

Page Contents

+{{ toc }} + diff --git a/docs/sources/sdc-sphinx-theme/searchbox.html b/docs/sources/sdc-sphinx-theme/searchbox.html new file mode 100644 index 0000000..0d17cc1 --- /dev/null +++ b/docs/sources/sdc-sphinx-theme/searchbox.html @@ -0,0 +1,7 @@ +{%- if pagename != "search" %} +
+ + + +
+{%- endif %} diff --git a/docs/sources/sdc-sphinx-theme/static/DPEP.png b/docs/sources/sdc-sphinx-theme/static/DPEP.png new file mode 100644 index 0000000..a6e2610 Binary files /dev/null and b/docs/sources/sdc-sphinx-theme/static/DPEP.png differ diff --git a/docs/sources/sdc-sphinx-theme/static/copybutton.js b/docs/sources/sdc-sphinx-theme/static/copybutton.js new file mode 100644 index 0000000..52a9baa --- /dev/null +++ b/docs/sources/sdc-sphinx-theme/static/copybutton.js @@ -0,0 +1,63 @@ +$(document).ready(function() { + /* Add a [>>>] button on the top-right corner of code samples to hide + * the >>> and ... prompts and the output and thus make the code + * copyable. */ + var div = $('.highlight-python .highlight,' + + '.highlight-python3 .highlight,' + + '.highlight-default .highlight') + var pre = div.find('pre'); + + // get the styles from the current theme + pre.parent().parent().css('position', 'relative'); + var hide_text = 'Hide the prompts and output'; + var show_text = 'Show the prompts and output'; + var border_width = pre.css('border-top-width'); + var border_style = pre.css('border-top-style'); + var border_color = pre.css('border-top-color'); + var button_styles = { + 'cursor':'pointer', 'position': 'absolute', 'top': '0', 'right': '0', + 'border-color': border_color, 'border-style': border_style, + 'border-width': border_width, 'color': border_color, 'text-size': '75%', + 'font-family': 'monospace', 'padding-left': '0.2em', 'padding-right': '0.2em', + 'border-radius': '0 3px 0 0' + } + + // create and add the button to all the code blocks that contain >>> + div.each(function(index) { + var jthis = $(this); + if (jthis.find('.gp').length > 0) { + var button = $('>>>'); + button.css(button_styles) + button.attr('title', hide_text); + button.data('hidden', 'false'); + jthis.prepend(button); + } + // tracebacks (.gt) contain bare text elements that need to be + // wrapped in a span to work with .nextUntil() (see later) + jthis.find('pre:has(.gt)').contents().filter(function() { + return ((this.nodeType == 3) && (this.data.trim().length > 0)); + }).wrap(''); + }); + + // define the behavior of the button when it's clicked + $('.copybutton').click(function(e){ + e.preventDefault(); + var button = $(this); + if (button.data('hidden') === 'false') { + // hide the code output + button.parent().find('.go, .gp, .gt').hide(); + button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden'); + button.css('text-decoration', 'line-through'); + button.attr('title', show_text); + button.data('hidden', 'true'); + } else { + // show the code output + button.parent().find('.go, .gp, .gt').show(); + button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible'); + button.css('text-decoration', 'none'); + button.attr('title', hide_text); + button.data('hidden', 'false'); + } + }); +}); + diff --git a/docs/sources/sdc-sphinx-theme/static/intel_logo.png b/docs/sources/sdc-sphinx-theme/static/intel_logo.png new file mode 100644 index 0000000..08a8ca1 Binary files /dev/null and b/docs/sources/sdc-sphinx-theme/static/intel_logo.png differ diff --git a/docs/sources/sdc-sphinx-theme/static/sdc.css b/docs/sources/sdc-sphinx-theme/static/sdc.css new file mode 100644 index 0000000..4e0b8fe --- /dev/null +++ b/docs/sources/sdc-sphinx-theme/static/sdc.css @@ -0,0 +1,708 @@ +/*! + * Bootstrap v1.4.0 + * + * Copyright 2011 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Heavily modified by Kyle Barbary for the AstroPy Project for use with Sphinx. + * Modified by Intel Corporation for Intel(R) Scalable Dataframe Compiler + */ + +@import url("basic.css"); + +/* Caption text --------------------------------------------------------------*/ +span-caption-text { + font-weight: bold; +} + +/* Body text -----------------------------------------------------------------*/ +body { + background-color: #ffffff; + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 18px; + color: #001d33; +} + +/* Hyperlinks ----------------------------------------------------------------*/ + +a { + color: #0069d6; + text-decoration: none; + line-height: inherit; + font-weight: inherit; +} + +a:hover { + color: #00438a; + text-decoration: underline; +} + +/* Typography ----------------------------------------------------------------*/ + +h1,h2,h3,h4,h5,h6 { + color: #003a66; + margin: 0.7em 0 0 0; + line-height: 1.5em; +} +h1 { + font-size: 26px; + margin: 0; +} +h2 { + font-size: 20px; + line-height: 1.2em; + margin: 1em 0 0.5em 0; + border-bottom: 1px solid #0070c5; +} +h3 { + font-size: 18px; +} +h4 { + font-size: 16px; +} +h5 { + font-size: 14px; +} +h6 { + font-size: 13px; + text-transform: uppercase; +} + +p { + font-size: 13px; + font-weight: normal; + line-height: 18px; + margin-top: 0px; + margin-bottom: 9px; +} + +ul, ol { + margin-left: 0; + padding: 0 0 0 25px; +} +ul ul, ul ol, ol ol, ol ul { + margin-bottom: 0; +} +ul { + list-style: disc; +} +ol { + list-style: decimal; +} +li { + line-height: 18px; + color: #0070c5; +} +ul.unstyled { + list-style: none; + margin-left: 0; +} +dl { + margin-bottom: 18px; +} +dl dt, dl dd { + line-height: 18px; +} +dl dd { + margin-left: 9px; +} +hr { + margin: 20px 0 19px; + border: 0; + border-bottom: 1px solid #eee; +} +strong { + font-style: inherit; + font-weight: bold; +} +em { + font-style: italic; + font-weight: inherit; + line-height: inherit; +} +.muted { + color: #bfbfbf; +} + +address { + display: block; + line-height: 18px; + margin-bottom: 18px; +} +code, pre { + padding: 0 3px 2px; + font-family: monospace; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +tt { + font-family: monospace; +} +code { + padding: 1px 3px; +} +pre { + display: block; + padding: 8.5px; + margin: 0 0 18px; + line-height: 18px; + border: 1px solid #ddd; + border: 1px solid rgba(0, 0, 0, 0.12); + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + white-space: pre; + word-wrap: break-word; +} + +img { + margin: 9px 0; +} + +/* format inline code with a rounded box */ +tt, code { + margin: 0 2px; + padding: 0 5px; + border: 1px solid #ddd; + border: 1px solid rgba(0, 0, 0, 0.12); + border-radius: 3px; +} + +code.xref, a code { + margin: 0; + padding: 0 1px 0 1px; + background-color: transparent; + border: none; +} + +/* all code has same box background color, even in headers */ +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt, +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code, +pre, code, tt { + background-color: #f8f8f8; +} + +/* override box for links & other sphinx-specifc stuff */ +tt.xref, a tt, tt.descname, tt.descclassname { + padding: 0 1px 0 1px; + border: none; +} + +/* override box for related bar at the top of the page */ +.related tt { + border: none; + padding: 0 1px 0 1px; + background-color: transparent; + font-weight: bold; +} + +th { + background-color: #dddddd; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +table.docutils { + border-spacing: 5px; + border-collapse: separate; +} + +/* Topbar --------------------------------------------------------------------*/ + +/* Horizontal bar */ +div.topbar { + height: 70px; + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 10000; + padding: 0px 10px; + background-color: #0070c5; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#0070c5), to(#0091ff)); + background-image: -moz-linear-gradient(top, #0070c5, #0091ff); + background-image: -ms-linear-gradient(top, #0070c5, #0091ff); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #0070c5), color-stop(100%, #0091ff)); + background-image: -webkit-linear-gradient(top, #0070c5, #0091ff); + background-image: -o-linear-gradient(top, #0070c5, #0091ff); + background-image: linear-gradient(to top, #0070c5, #0091ff); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0070c5', endColorstr='#0091ff', GradientType=0); + overflow-x: hidden; + overflow-y: hidden; + width: 100%; +} + +/* Intel logo png */ +/* +div.topbar a.brand { + width: 50px; + float: left; + display: block; + height: 60px; + padding: 8px 12px 0px 45px; + margin-left: -10px; + background: transparent url("intel_logo.png") no-repeat 10px 4px; + background-size: 86px 60px; +} +*/ + +/* Scalable Dataframe Compiler png */ +div.topbar a.brand_sdc { + width: 200px; + float: left; + display: block; + height: 60px; + padding: 8px 12px 0px 45px; + margin-left: -10px; + background: transparent url("dpep.png") no-repeat 10px 4px; + background-size: 200px 50px; +} + + +div.topbar .brand:hover, div.topbar .brand_sdc:hover, div.topbar ul li a.homelink:hover { + background-color: #333; + background-color: rgba(255, 255, 255, 0.05); +} + +div.topbar ul { + font-size: 120%; + list-style-type: none; + margin: 20px; + padding: 0 0 0 10px; + float: right; + color: #eeeeee; + text-align: center; + text-decoration: none; + height: 100%; + vertical-align: middle; +} +div.topbar ul li { + float: left; + display: inline-block; + height: 60px; + margin: 5px; + padding: 0px; + vertical-align: middle; +} + +div.topbar ul li a { + color: #eeeeee; + text-decoration: none; + padding: 5px; + display: block; + height: auto; + text-align: center; + vertical-align: middle; + border-radius: 4px; +} + +div.topbar ul li a:hover { + color: #ffffff; + text-decoration: none; +} + + +div.dropdown { + position: relative; /* Fixed this to relative */ + display: inline-block; + z-index: 999999; +} + +div.dropdown-content { + display: none; /* Fix this at none */ + background-color: DimGray; + color: White; + width: 235px; + height: 155px; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + padding-top: 3px; + padding-right: 15px; + position: fixed; +} + +div.dropdown:hover .dropdown-content { + display: block; +} + +div.dropdown-content a { + display: block; +} + +div.dropdown-content a:hover { + color: white; +} + +div.dropdown a:hover { + color: #FF5000; +} + +div.dropdown z:hover { + color: #FF5000; + width: 10px; + display: none; +} + +div.dropdown z { + color: white; +} + +div.dropdown:after { + content: ""; + position: absolute; + right: -13px; + top: 9px; + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid white; + z-index: 999999; +} + +div.dropdown:hover { + cursor: pointer; +} + +/* Intel(R) SDC Github page */ +div.topbar ul li a.homelink { + margin: -20px; + width: 90px; + display: block; + height: 60px; + padding: 5px 0px; + background: transparent url("sdc_github.png") no-repeat 5px 0px; + background-size: 60px 60px; +} + +/* Intel(R) SDC Examples & Tutorials */ +div.topbar ul li a.exampleslink { + margin: -20px; + width: 90px; + display: block; + height: 60px; + padding: 5px 0px; + background: transparent url("sdc_examples.png") no-repeat 5px 0px; + background-size: 60px 60px; +} + +/* Intel(R) SDC Email */ +div.topbar ul li a.emaillink { + margin: -20px; + width: 90px; + display: block; + height: 60px; + padding: 5px 0px; + background: transparent url("sdc_email.png") no-repeat 5px 0px; + background-size: 60px 60px; +} + +/* Intel(R) SDC Issues */ +div.topbar ul li a.issueslink { + margin: -20px; + width: 90px; + display: block; + height: 60px; + padding: 5px 0px; + background: transparent url("sdc_issues.png") no-repeat 5px 0px; + background-size: 60px 60px; +} + + +div.topbar form { + text-align: left; + margin: 0 0 0 5px; + position: relative; + filter: alpha(opacity=100); + -khtml-opacity: 1; + -moz-opacity: 1; + opacity: 1; +} + +div.topbar input { + background-color: #444; + background-color: rgba(255, 255, 255, 0.3); + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: medium; + font-weight: 200; + line-height: 1; + padding: 4px 9px; + color: #ffffff; + color: rgba(255, 255, 255, 0.75); + border: 1px solid #111; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} +div.topbar input:-moz-placeholder { + color: #e6e6e6; +} +div.topbar input::-webkit-input-placeholder { + color: #e6e6e6; +} +div.topbar input:hover { + background-color: #bfbfbf; + background-color: rgba(255, 255, 255, 0.5); + color: #ffffff; +} +div.topbar input:focus, div.topbar input.focused { + outline: 0; + background-color: #ffffff; + color: #0070c5; + text-shadow: 0 1px 0 #ffffff; + border: 0; + padding: 5px 10px; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + + +/* Relation bar (breadcrumbs, prev, next) ------------------------------------*/ + +div.related { + height: 21px; + width: auto; + margin: 0 10px; + position: relative; + top: 42px; + clear: both; + left: 0; + right: 0; + z-index: 999; + font-size: 100%; + vertical-align: middle; + background-color: #fff; + border-bottom: 1px solid #bbb; +} +div.related ul { + padding: 0; + margin: 0; +} + + +/* Footer --------------------------------------------------------------------*/ + +footer { + display: block; + margin: 10px 10px 0px; + padding: 10px 0 0 0; + border-top: 1px solid #bbb; +} +.pull-right { + float: right; + width: 30em; + text-align: right; +} + + +/* Sphinx sidebar ------------------------------------------------------------*/ +div.sphinxsidebar { + font-size: inherit; + border-radius: 3px; + background-color: #eee; + border: 1px solid #bbb; + word-wrap: break-word; + /* overflow-wrap is the canonical name for word-wrap in the CSS3 text draft. + We include it here mainly for future-proofing. */ + overflow-wrap: break-word; +} + +div.sphinxsidebarwrapper { + padding: 0px 0px 0px 5px; +} + +div.sphinxsidebar h3 { + font-family: 'Trebuchet MS', sans-serif; + font-size: 1.4em; + font-weight: normal; + margin: 5px 0px 0px 5px; + padding: 0; + line-height: 1.6em; +} +div.sphinxsidebar h4 { + font-family: 'Trebuchet MS', sans-serif; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} +div.sphinxsidebar p { +} +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} +div.sphinxsidebar ul { + margin: 0px 0px 0px 5px; + padding: 0; +} + +div.sphinxsidebar ul ul { + margin-left: 15px; + list-style-type: disc; +} + +/* If showing the global TOC (toctree), + color the current page differently */ +div.sphinxsidebar a.current { + color: #0070c5; +} +div.sphinxsidebar a.current:hover { + color: #0070c5; +} + + +/* document, documentwrapper, body, bodywrapper ----------------------------- */ + +div.document { + margin-top: 72px; + margin-left: 10px; + margin-right: 10px; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.body { + background-color: #ffffff; + padding: 0 0 0px 20px; +} + +div.bodywrapper { + margin: 0 0 0 230px; + max-width: 55em; +} + + +/* Header links ------------------------------------------------------------- */ + +a.headerlink { + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #0069d6; + color: white; + text-decoration: none; +} + + +/* Admonitions and warnings ------------------------------------------------- */ + +/* Shared by admonitions and warnings */ +div.admonition, +div.warning { + padding: 0px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +div.admonition p, +div.warning p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} +div.admonition pre, +div.warning pre { + margin: 0.4em 1em 0.4em 1em; +} +div.admonition p.admonition-title, +div.warning p.admonition-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + font-weight: bold; + font-size: 1.1em; +} +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +/* Admonitions only */ +div.admonition { + border: 1px solid #0066cc; + background-color: #b3d9ff; +} +div.admonition p.admonition-title { + background-color: #1a8cff; +} + +/* Warnings only */ +div.warning { + border: 1px solid #805500; + background-color: #ffe6b3; +} +div.warning p.admonition-title { + background-color: #ffc34d; +} + + +/* Figures ------------------------------------------------------------------ */ + +.figure.align-center { + clear: none; +} + +/* This is a div for containing multiple figures side-by-side, for use with + * .. container:: figures */ +div.figures { + border: 1px solid #CCCCCC; + background-color: #F8F8F8; + margin: 1em; + text-align: center; +} + +div.figures .figure { + clear: none; + float: none; + display: inline-block; + border: none; + margin-left: 0.5em; + margin-right: 0.5em; +} + +.field-list th { + white-space: nowrap; +} + +table.field-list { + border-spacing: 0px; + margin-left: 1px; + border-left: 5px solid rgb(238, 238, 238) !important; +} + +table.field-list th.field-name { + display: inline-block; + padding: 1px 8px 1px 5px; + white-space: nowrap; + background-color: rgb(238, 238, 238); + border-radius: 0 3px 3px 0; + -webkit-border-radius: 0 3px 3px 0; +} diff --git a/docs/sources/sdc-sphinx-theme/static/sdc_email.png b/docs/sources/sdc-sphinx-theme/static/sdc_email.png new file mode 100644 index 0000000..9fde617 Binary files /dev/null and b/docs/sources/sdc-sphinx-theme/static/sdc_email.png differ diff --git a/docs/sources/sdc-sphinx-theme/static/sdc_examples.png b/docs/sources/sdc-sphinx-theme/static/sdc_examples.png new file mode 100644 index 0000000..dd7095b Binary files /dev/null and b/docs/sources/sdc-sphinx-theme/static/sdc_examples.png differ diff --git a/docs/sources/sdc-sphinx-theme/static/sdc_github.png b/docs/sources/sdc-sphinx-theme/static/sdc_github.png new file mode 100644 index 0000000..89467c5 Binary files /dev/null and b/docs/sources/sdc-sphinx-theme/static/sdc_github.png differ diff --git a/docs/sources/sdc-sphinx-theme/static/sdc_issues.png b/docs/sources/sdc-sphinx-theme/static/sdc_issues.png new file mode 100644 index 0000000..13d5974 Binary files /dev/null and b/docs/sources/sdc-sphinx-theme/static/sdc_issues.png differ diff --git a/docs/sources/sdc-sphinx-theme/static/sidebar.js b/docs/sources/sdc-sphinx-theme/static/sidebar.js new file mode 100644 index 0000000..0e286bd --- /dev/null +++ b/docs/sources/sdc-sphinx-theme/static/sidebar.js @@ -0,0 +1,160 @@ +/* + * sidebar.js + * ~~~~~~~~~~ + * + * This script makes the Sphinx sidebar collapsible. + * + * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds + * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton + * used to collapse and expand the sidebar. + * + * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden + * and the width of the sidebar and the margin-left of the document + * are decreased. When the sidebar is expanded the opposite happens. + * This script saves a per-browser/per-session cookie used to + * remember the position of the sidebar among the pages. + * Once the browser is closed the cookie is deleted and the position + * reset to the default (expanded). + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +$(function() { + // global elements used by the functions. + // the 'sidebarbutton' element is defined as global after its + // creation, in the add_sidebar_button function + var bodywrapper = $('.bodywrapper'); + var sidebar = $('.sphinxsidebar'); + var sidebarwrapper = $('.sphinxsidebarwrapper'); + + // for some reason, the document has no sidebar; do not run into errors + if (!sidebar.length) return; + + // original margin-left of the bodywrapper and width of the sidebar + // with the sidebar expanded + var bw_margin_expanded = bodywrapper.css('margin-left'); + var ssb_width_expanded = sidebar.width(); + + // margin-left of the bodywrapper and width of the sidebar + // with the sidebar collapsed + var bw_margin_collapsed = 12; + var ssb_width_collapsed = 12; + + // custom colors + var dark_color = '#003a66'; + var light_color = '#0070c5'; + + function sidebar_is_collapsed() { + return sidebarwrapper.is(':not(:visible)'); + } + + function toggle_sidebar() { + if (sidebar_is_collapsed()) + expand_sidebar(); + else + collapse_sidebar(); + } + + function collapse_sidebar() { + sidebarwrapper.hide(); + sidebar.css('width', ssb_width_collapsed); + bodywrapper.css('margin-left', bw_margin_collapsed); + sidebarbutton.css({ + 'margin-left': '-1px', + 'height': bodywrapper.height(), + 'border-radius': '3px' + }); + sidebarbutton.find('span').text('»'); + sidebarbutton.attr('title', _('Expand sidebar')); + document.cookie = 'sidebar=collapsed'; + } + + function expand_sidebar() { + bodywrapper.css('margin-left', bw_margin_expanded); + sidebar.css('width', ssb_width_expanded); + sidebarwrapper.show(); + sidebarbutton.css({ + 'margin-left': ssb_width_expanded - 12, + 'height': bodywrapper.height(), + 'border-radius': '0px 3px 3px 0px' + }); + sidebarbutton.find('span').text('«'); + sidebarbutton.attr('title', _('Collapse sidebar')); + document.cookie = 'sidebar=expanded'; + } + + function add_sidebar_button() { + sidebarwrapper.css({ + 'float': 'left', + 'margin-right': '0', + 'width': ssb_width_expanded - 18 + }); + // create the button + sidebar.append('
«
'); + var sidebarbutton = $('#sidebarbutton'); + + // find the height of the viewport to center the '<<' in the page + var viewport_height; + if (window.innerHeight) + viewport_height = window.innerHeight; + else + viewport_height = $(window).height(); + var sidebar_offset = sidebar.offset().top; + var sidebar_height = Math.max(bodywrapper.height(), sidebar.height()); + sidebarbutton.find('span').css({ + 'font-family': '"Lucida Grande",Arial,sans-serif', + 'display': 'block', + 'top': Math.min(viewport_height/2, sidebar_height/2 + sidebar_offset) - 10, + 'width': 12, + 'position': 'fixed', + 'text-align': 'center' + }); + + sidebarbutton.click(toggle_sidebar); + sidebarbutton.attr('title', _('Collapse sidebar')); + sidebarbutton.css({ + 'color': '#FFFFFF', + 'background-color': light_color, + 'border': '1px solid ' + light_color, + 'border-radius': '0px 3px 3px 0px', + 'font-size': '1.2em', + 'cursor': 'pointer', + 'height': sidebar_height, + 'padding-top': '1px', + 'margin': '-1px', + 'margin-left': ssb_width_expanded - 12 + }); + + sidebarbutton.hover( + function () { + $(this).css('background-color', dark_color); + }, + function () { + $(this).css('background-color', light_color); + } + ); + } + + function set_position_from_cookie() { + if (!document.cookie) + return; + var items = document.cookie.split(';'); + for(var k=0; k