Commit b8fbd175 authored by Jean-Baptiste Delisle's avatar Jean-Baptiste Delisle
Browse files

initial commit

parents
Pipeline #24802 failed with stages
MANIFEST
dist/*
doc/build/*
doc/source/_autosummary/*
*/__pycache__/*
*.egg-info
other/*
stages:
- build
- test
- documentation
- staging
- production
Build distribution:
stage: build
before_script:
- export PATH=$PATH:/opt/anaconda3/bin/
- conda env create -f sam_env.yml
- conda activate sam
script:
- python setup.py sdist
after_script:
- conda deactivate
- conda env remove -n sam
artifacts:
paths:
- dist/*.tar.gz
expire_in: 1 day
Run test:
stage: test
before_script:
- export PATH=$PATH:/opt/anaconda3/bin/
- conda env create -f sam_env.yml
- conda activate sam
script:
- pip install dist/*.tar.gz
- cd test
- python -m pytest
after_script:
- conda deactivate
- conda env remove -n sam
Generate documentation:
stage: documentation
before_script:
- export PATH=$PATH:/opt/anaconda3/bin/
- conda env create -f sam_env.yml
- conda activate sam
script:
- pip install dist/*.tar.gz
- cd doc
- make html
after_script:
- conda deactivate
- conda env remove -n sam
artifacts:
paths:
- doc/build/html
expire_in: 1 day
Deploy on Staging:
stage: staging
script:
- cp dist/*.tar.gz /www/people/delisle/public/staging/sam
- rm -rf /www/people/delisle/public/staging/sam/doc/*
- cp -R doc/build/html/* /www/people/delisle/public/staging/sam/doc
Release and deploy on Production:
stage: production
before_script:
# According to documentation, gitlab uses detached HEAD and we need to go back to master to release.
# See https://gitlab.com/gitlab-org/gitlab-ce/issues/19421
- git checkout -B master origin/master
- git config --global user.name 'Gitlab CI'
- git config --global user.email ''
- git remote set-url origin "https://gitlab-ci-token:$RELEASE_TOKEN@gitlab.unige.ch/jean-baptiste.delisle/sam.git"
script:
# Tag
- VERSION=`grep __version__ sam/__info__.py | sed 's/.*version__ = "//' | sed 's/"//'`
- TAG_VERSION="v$VERSION"
- git tag -a "$TAG_VERSION" -m "Release sam $TAG_VERSION"
- git push origin "$TAG_VERSION" --quiet
- CHANGES=`cat CHANGES.txt`
# Add release on gitlab (via gitlab API)
- curl -X POST -H "PRIVATE-TOKEN:$RELEASE_TOKEN" -F "name=Release sam $TAG_VERSION" -F "tag_name=$TAG_VERSION" -F "ref=$TAG_VERSION" -F "description=Changes:$CHANGES" 'https://gitlab.unige.ch/api/v4/projects/1383/releases'
# Deploy on production
- cp dist/*.tar.gz /www/people/delisle/public/sam
- rm -rf /www/people/delisle/public/sam/doc/*
- cp -R doc/build/html/* /www/people/delisle/public/sam/doc
# Upgrade to next version
- MAJOR_DIGIT=`echo $VERSION | awk -F. '{print $1}'`
- MINOR_DIGIT=`echo $VERSION | awk -F. '{print $2}'`
- PATCH_DIGIT=`echo $VERSION | awk -F. '{print $3}'`
- PATCH_DIGIT=$((PATCH_DIGIT + 1))
- NEW_VERSION="$MAJOR_DIGIT.$MINOR_DIGIT.$PATCH_DIGIT"
- echo $NEW_VERSION
# Need to hack sed to work on both mac and unix. See details here : https://stackoverflow.com/questions/5694228/sed-in-place-flag-that-works-both-on-mac-bsd-and-linux
- sed -i.bak s"/version__ = \"$VERSION\"/version__ = \"$NEW_VERSION\"/g" sam/__info__.py
- git add sam/__info__.py
- git commit -m "Upgrade project to next version $NEW_VERSION"
- git push origin master --quiet
when: manual
This diff is collapsed.
graft sam
sam: Scaled Adaptive Metropolis
===============================
Read the documentation at `<https://obswww.unige.ch/~delisle/sam/doc/>`_.
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
\ No newline at end of file
:orphan:
{{ fullname }}
{{ underline }}
.. currentmodule:: {{ module }}
.. autoattribute:: {{ objname }}
\ No newline at end of file
{{ fullname }}
{{ underline }}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
:no-members:
:no-inherited-members:
:no-special-members:
{% block methods %}
.. HACK -- the point here is that we don't want this to appear in the output, but the autosummary should still generate the pages.
.. autosummary::
:toctree:
{% for item in all_methods %}
{%- if not item.startswith('_') or item in ['__call__', '__mul__', '__getitem__', '__len__'] %}
{{ name }}.{{ item }}
{%- endif -%}
{%- endfor %}
{% for item in inherited_members %}
{%- if item in ['__call__', '__mul__', '__getitem__', '__len__'] %}
{{ name }}.{{ item }}
{%- endif -%}
{%- endfor %}
{% endblock %}
{% block attributes %}
{% if attributes %}
.. HACK -- the point here is that we don't want this to appear in the output, but the autosummary should still generate the pages.
.. autosummary::
:toctree:
{% for item in all_attributes %}
{%- if not item.startswith('_') %}
{{ name }}.{{ item }}
{%- endif -%}
{%- endfor %}
{% endif %}
{% endblock %}
{{ fullname | escape | underline}}
.. automodule:: {{ fullname }}
{% block attributes %}
{% if attributes %}
.. rubric:: Module Attributes
.. autosummary::
:toctree:
{% for item in attributes %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block functions %}
{% if functions %}
.. rubric:: {{ _('Functions') }}
.. autosummary::
:toctree:
{% for item in functions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block classes %}
{% if classes %}
.. rubric:: {{ _('Classes') }}
.. autosummary::
:toctree:
{% for item in classes %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block exceptions %}
{% if exceptions %}
.. rubric:: {{ _('Exceptions') }}
.. autosummary::
:toctree:
{% for item in exceptions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
:orphan:
{{ fullname }}
{{ underline }}
.. currentmodule:: {{ module }}
.. automethod:: {{ objname }}
\ No newline at end of file
:orphan:
{{ fullname }}
{{ underline }}
.. currentmodule:: {{ module }}
.. autoproperty:: {{ objname }}
\ No newline at end of file
<h3>Resources</h3>
<ul>
<li><a href="https://scipy.org/">Scipy.org website</a></li>
<li>&nbsp;</li>
</ul>
{% extends "!layout.html" %}
{% block sidebarsearch %}
{%- if sourcename %}
<ul class="this-page-menu">
{%- if 'generated/' in sourcename %}
<li><a href="/scipy/docs/{{ sourcename.replace('generated/', '').replace('.txt', '') |e }}">{{_('Edit page')}}</a></li>
{%- else %}
<li><a href="/scipy/docs/scipy-docs/{{ sourcename.replace('.txt', '.rst') |e }}">{{_('Edit page')}}</a></li>
{%- endif %}
</ul>
{%- endif %}
{{ super() }}
{% endblock %}
{#
basic/searchbox.html
~~~~~~~~~~~~~~~~~~~~
Sphinx sidebar template: quick search box.
:copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{%- if pagename != "search" and builder != "singlehtml" %}
<div id="searchbox" style="display: none" role="search">
<h4>{{ _('Quick search') }}</h4>
<div>
<form class="search" action="{{ pathto('search') }}" method="get">
<input type="text" style="width: inherit;" name="q" />
<input type="submit" value="{{ _('search') }}" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
{%- endif %}
\ No newline at end of file
{#
scipy/layout.html
~~~~~~~~~~~~~~~~~
Master layout template for Sphinx themes.
:copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{%- block doctype -%}
<!DOCTYPE html>
{%- endblock %}
{%- set url_root = pathto('', 1) %}
{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
{%- if not embedded and docstitle %}
{%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
{%- else %}
{%- set titlesuffix = "" %}
{%- endif %}
{%- macro relbar_top() %}
<ul class="nav nav-pills pull-left">
{%- for link in theme_rootlinks %}
<li class="active"><a href="{{ link[0] }}">{{ link[1] }}</a></li>
{%- endfor %}
{%- block rootrellink %}
{% if pagename != master_doc %}
<li class="active"><a href="{{ pathto(master_doc) }}">{{ shorttitle|e }}</a></li>
{% endif %}
{%- endblock %}
{%- for parent in parents %}
<li class="active"><a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a></li>
{%- endfor %}
{%- block relbaritems %} {% endblock %}
</ul>
{%- endmacro %}
{%- macro relbar_top_right() %}
<ul class="nav nav-pills pull-right">
{%- for rellink in rellinks %}
<li class="active">
<a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags|e }}"
{{ accesskey(rellink[2]) }}>{{ rellink[3] }}</a>
</li>
{%- endfor %}
</ul>
{%- endmacro %}
{%- macro relbar_bottom() %}
{%- endmacro %}
{%- macro sidebar() %}
<div class="spc-rightsidebar span3">
<div class="sphinxsidebarwrapper">
{%- block sidebarlogo %}
{%- if logo %}
<p class="logo"><a href="{{ pathto(master_doc) }}">
<img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo">
</a></p>
{%- endif %}
{%- endblock %}
{%- if sidebars != None %}
{#- new style sidebar: explicitly include/exclude templates #}
{%- for sidebartemplate in sidebars %}
{%- include sidebartemplate %}
{%- endfor %}
{%- else %}
{#- old style sidebars: using blocks -- should be deprecated #}
{%- block sidebartoc %}
{%- include "localtoc.html" %}
{%- endblock %}
{%- block sidebarrel %}
{%- include "relations.html" %}
{%- endblock %}
{%- block sidebarsourcelink %}
{%- include "sourcelink.html" %}
{%- endblock %}
{%- if customsidebar %}
{%- include customsidebar %}
{%- endif %}
{%- block sidebarsearch %}
{%- include "searchbox.html" %}
{%- endblock %}
{%- endif %}
</div>
</div>
{%- endmacro %}
{%- macro script() %}
<script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
{%- for scriptfile in script_files %}
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
{%- endfor %}
<script type="text/javascript" src="{{ pathto('_static/js/copybutton.js', 1) }}"></script>
{%- endmacro %}
{%- macro css() %}
<link rel="stylesheet" type="text/css" href="{{ pathto('_static/css/spc-bootstrap.css', 1) }}">
<link rel="stylesheet" type="text/css" href="{{ pathto('_static/css/spc-extend.css', 1) }}">
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" >
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" >
{%- for cssfile in css_files %}
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" >
{%- endfor %}
{%- endmacro %}
<html>
<head>
<meta charset="{{ encoding }}">
{{ metatags }}
{%- block htmltitle %}
<title>{{ title|striptags|e }}{{ titlesuffix }}</title>
{%- endblock %}
{{ css() }}
{%- if not embedded %}
{%- block scripts %}
{{ script() }}
{%- endblock %}
{%- if use_opensearch %}
<link rel="search" type="application/opensearchdescription+xml"
title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
href="{{ pathto('_static/opensearch.xml', 1) }}">
{%- endif %}
{%- if favicon %}
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}">
{%- endif %}
{%- endif %}
{%- block linktags %}
{%- if hasdoc('about') %}
<link rel="author" title="{{ _('About these documents') }}" href="{{ pathto('about') }}" >
{%- endif %}
{%- if hasdoc('genindex') %}
<link rel="index" title="{{ _('Index') }}" href="{{ pathto('genindex') }}" >
{%- endif %}
{%- if hasdoc('search') %}
<link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}" >
{%- endif %}
{%- if hasdoc('copyright') %}
<link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}" >
{%- endif %}
<link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}" >
{%- if parents %}
<link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}" >
{%- endif %}
{%- if next %}
<link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}" >
{%- endif %}
{%- if prev %}
<link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}" >
{%- endif %}
{%- endblock %}
{%- block extrahead %} {% endblock %}
</head>
<body>
{%- block header %}
{% if theme_scipy_org_logo %}
<div class="container">
<div class="top-scipy-org-logo-header">
<a href="{{ pathto('index') }}">
<img style="border: 0;" alt="SciPy" src="{{ pathto('_static/img/scipy_org_logo.png', 1) }}"></a>
</div>
</div>
</div>
{% else %}
<div class="container">
<div class="header">
</div>
</div>
{% endif %}
{% endblock %}
{%- block content %}
<div class="container">
<div class="main">
{%- block navbar %}
{% if theme_navigation_links or sidebar == 'left' %}
<div class="row-fluid">
<div class="span12">
<div class="spc-navbar">
{{ relbar_top() }}
{% if theme_navigation_links %}
{{ relbar_top_right() }}
{% endif %}
</div>
</div>
</div>
{% endif %}
{% endblock %}
<div class="row-fluid">
{%- if theme_sidebar == 'left' -%}
{{ sidebar() }}
{%- endif %}
{%- if theme_sidebar == 'none' -%}
<div class="span1"></div>
<div class="span10">
{% else %}
<div class="span9">
{%- endif %}
{% if not theme_navigation_links and sidebar != 'left' %}
<div class="row-fluid">
<div class="span9">
<div class="spc-navbar">
{{ relbar_top() }}
</div>
</div>
</div>
{% endif %}
{%- block document %}
<div class="bodywrapper">
<div class="body" id="spc-section-body">
{% block body %} {% endblock %}
</div>
</div>
{%- endblock %}
</div>
{%- if theme_sidebar == 'right' -%}
{{ sidebar() }}
{%- elif theme_sidebar == 'none' -%}
<div class="span1"></div>
{%- endif %}
</div>
</div>
</div>
{%- endblock %}
<div class="container container-navbar-bottom">
<div class="spc-navbar">
{{ relbar_bottom() }}
</div>
</div>
{%- block footer %}
<div class="container">
<div class="footer">
<div class="row-fluid">
<ul class="inline pull-left">
{%- if show_copyright %}
<li>
{%- if hasdoc('copyright') %}
{% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
{%- else %}
{% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
{%- endif %}
</li>
{%- endif %}
{%- if last_updated %}
<li>
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
</li>
{%- endif %}
{%- if show_sphinx %}
<li>
{% trans sphinx_version=sphinx_version|e %}Created using <a href="https://www.sphinx-doc.org">Sphinx</a> {{ sphinx_version }}.{% endtrans %}
</li>
{%- endif %}
</ul>
</div>
</div>
</div>
{%- endblock %}
</body>
</html>
{%- if theme_edit_link -%}
{% block edit_link %}
{%- if sourcename %}
<div class="this-page-menu">
{%- if 'generated/' in sourcename %}
<a href="/scipy/docs/{{ sourcename.replace('generated/', '').replace('.txt', '') |e }}">{{_('Edit page')}}</a>
{%- else %}
<a href="/scipy/docs/scipy-docs/{{ sourcename.replace('.txt', '.rst') |e }}">{{_('Edit page')}}</a>
{%- endif %}
</div>
{%- endif %}
{% endblock %}
{%- endif -%}
{%- if show_source and has_source and sourcename %}
<h3>{{ _('This Page') }}</h3>
<div>
<a href="{{ pathto('_sources/' + sourcename, true)|e }}"
rel="nofollow">{{ _('Show Source') }}</a>
</div>
{%- endif %}
.container {
width: 80%;
}
.navbar1 {
padding-bottom: 10px;
}
.navbar1 .nav-pills {
margin-bottom: 0px;
font-size: 12px;
}
.navbar1 .nav-pills > li > a {
padding-top: 2.5px;
padding-bottom: 2.5px;
}
.navbar1 .dropdown.dropdown-menu {
padding: 0px;
}
.header {
padding-top: 30px;
padding-bottom: 18px;
}
.SearchBar .form-search {
margin-bottom: 0px;