Version 0.1.3
authorThierry Florac <tflorac@ulthar.net>
Wed, 27 Nov 2019 19:39:45 +0100
changeset 13 ccb2abb60b46
parent 12 fc3542685741
child 14 b01bc409e776
Version 0.1.3
.codeclimate.yml
.gitlab-ci.yml
.installed.cfg
.pylintrc
buildout.cfg
docs/HISTORY.txt
docs/README.txt
setup.py
src/pyams_pagelet.egg-info/PKG-INFO
src/pyams_pagelet.egg-info/SOURCES.txt
src/pyams_pagelet.egg-info/requires.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.codeclimate.yml	Wed Nov 27 19:39:45 2019 +0100
@@ -0,0 +1,8 @@
+version: "2"
+plugins:
+  pep8:
+    enabled: true
+  radon:
+    enabled: true
+    config:
+      python_version: 3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gitlab-ci.yml	Wed Nov 27 19:39:45 2019 +0100
@@ -0,0 +1,96 @@
+image: python:3.5
+
+stages:
+    - test
+    - dist
+    - quality
+
+cache:
+    paths:
+        - bin/
+        - eggs/
+        - parts/
+
+before_script:
+    - export http_proxy=http://172.17.0.1:3128/
+    - export HTTP_PROXY=http://172.17.0.1:3128/
+    - export https_proxy=http://172.17.0.1:3128/
+    - export HTTPS_PROXY=http://172.17.0.1:3128/
+
+bootstrap:
+    stage: .pre
+    script:
+        - python3.5 bootstrap.py --buildout-version=2.12.0
+        - ./bin/buildout
+
+test:
+    stage: test
+    script:
+        - pip install anybadge
+        - mkdir ./coverage
+        - ./bin/test --coverage coverage | tee ./coverage/coverage.log
+        - GLOBAL_COVER=$(grep -e '^[[:space:]]*[[:digit:]]\+[[:space:]]\+[[:digit:]]\+\%' ./coverage/coverage.log |
+              awk 'BEGIN { lines=0; cov=0 }
+                   { lines = lines + $1; cov = cov + $1 * $2 / 100 }
+                   END { printf "%.2f", cov / lines * 100 }')
+        - anybadge --label=Coverage --file=./coverage/coverage.svg --value=$GLOBAL_COVER 20=red 40=orange 60=yellow 80=green
+        - echo "Global tests coverage is $GLOBAL_COVER %"
+    artifacts:
+        paths:
+            - ./coverage/
+
+dist:
+    stage: dist
+    script:
+        - ./bin/buildout setup setup.py clean --all sdist bdist_egg bdist_wheel
+    artifacts:
+        paths:
+            - ./dist
+
+pylint:
+    stage: quality
+    allow_failure: true
+    script:
+        - pip install pylint-exit anybadge
+        - mkdir ./pylint
+        - ./bin/pylint src/pyams_viewlet/ | tee ./pylint/pylint.log || pylint-exit $?
+        - PYLINT_SCORE=$(sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' ./pylint/pylint.log)
+        - anybadge --label=Pylint --file=./pylint/pylint.svg --value=$PYLINT_SCORE 2=red 4=orange 8=yellow 10=green
+        - echo "Pylint score is $PYLINT_SCORE"
+    artifacts:
+        paths:
+            - ./pylint/
+
+quality:
+    stage: quality
+    allow_failure: true
+    image: docker:stable
+    services:
+        - docker:stable-dind
+    variables:
+        DOCKER_DRIVER: overlay2
+        DOCKER_TLS_CERTDIR: ""
+    script:
+        - |
+            if ! docker info &>/dev/null; then
+              if [ -z "$DOCKER_HOST" -a "$KUBERNETES_PORT" ]; then
+                export DOCKER_HOST='tcp://localhost:2375'
+              fi
+            fi
+        - docker run
+            --env SOURCE_CODE="$PWD"
+            --volume "$PWD":/code
+            --volume /var/run/docker.sock:/var/run/docker.sock
+            "registry.gitlab.com/gitlab-org/security-products/codequality:12-0-stable" /code
+    artifacts:
+        reports:
+            codequality: gl-code-quality-report.json
+        expire_in: 1 week
+    dependencies: []
+    only:
+        refs:
+            - branches
+            - tags
+    except:
+        variables:
+            - $CODE_QUALITY_DISABLED
--- a/.installed.cfg	Wed Nov 27 19:37:28 2019 +0100
+++ b/.installed.cfg	Wed Nov 27 19:39:45 2019 +0100
@@ -1,84 +1,88 @@
 [buildout]
-installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs/lingua.egg-link
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs/pyams-template.egg-link
+installed_develop_eggs = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs/pyams-template.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs/lingua.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs/pyams-pagelet.egg-link
+	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs/pyams-viewlet.egg-link
 	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs/pyams-utils.egg-link
-parts = package i18n pyflakes test
+parts = package i18n pyflakes pylint test
 
 [package]
-__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pyams_upgrade
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pcreate
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pdistreport
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/ptweens
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pserve
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pviews
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pshell
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/prequest
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/proutes
-__buildout_signature__ = zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-d45dd885254d7f32ab7887f3b58424fb setuptools-d45dd885254d7f32ab7887f3b58424fb
+__buildout_installed__ = 
+__buildout_signature__ = zc.recipe.egg-fc68d03e7c9074dcb88f8edb384c0f13 zc.buildout-fc68d03e7c9074dcb88f8edb384c0f13 setuptools-fc68d03e7c9074dcb88f8edb384c0f13
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
-_e = /var/local/env/pyams/eggs
+_e = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
 eggs = pyams_pagelet
-	pyams_template
-	pyams_utils
-	pyramid
-	pyramid_zcml
-	zope.component
-	zope.configuration
-	zope.contentprovider
-	zope.interface
-	zope.schema
-eggs-directory = /var/local/env/pyams/eggs
+eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 find-links = http://download.ztfy.org/eggs
 recipe = zc.recipe.egg
 
 [i18n]
 __buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pybabel
+	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/polint
 	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pot-create
-	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/polint
-__buildout_signature__ = zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-d45dd885254d7f32ab7887f3b58424fb setuptools-d45dd885254d7f32ab7887f3b58424fb
+__buildout_signature__ = zc.recipe.egg-fc68d03e7c9074dcb88f8edb384c0f13 zc.buildout-fc68d03e7c9074dcb88f8edb384c0f13 setuptools-fc68d03e7c9074dcb88f8edb384c0f13
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
-_e = /var/local/env/pyams/eggs
+_e = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
 eggs = babel
 	lingua
-eggs-directory = /var/local/env/pyams/eggs
+eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 find-links = http://download.ztfy.org/eggs
 recipe = zc.recipe.egg
 
 [pyflakes]
 __buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pyflakes
 	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pyflakes
-__buildout_signature__ = zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-d45dd885254d7f32ab7887f3b58424fb setuptools-d45dd885254d7f32ab7887f3b58424fb
+__buildout_signature__ = zc.recipe.egg-fc68d03e7c9074dcb88f8edb384c0f13 zc.buildout-fc68d03e7c9074dcb88f8edb384c0f13 setuptools-fc68d03e7c9074dcb88f8edb384c0f13
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
-_e = /var/local/env/pyams/eggs
+_e = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
 eggs = pyflakes
-eggs-directory = /var/local/env/pyams/eggs
+eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 entry-points = pyflakes=pyflakes.scripts.pyflakes:main
 find-links = http://download.ztfy.org/eggs
 initialization = if not sys.argv[1:]: sys.argv[1:] = ["src"]
 recipe = zc.recipe.egg
 scripts = pyflakes
 
+[pylint]
+__buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pyreverse
+	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pylint
+	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/symilar
+	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/epylint
+	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/pylint
+__buildout_signature__ = zc.recipe.egg-fc68d03e7c9074dcb88f8edb384c0f13 zc.buildout-fc68d03e7c9074dcb88f8edb384c0f13 setuptools-fc68d03e7c9074dcb88f8edb384c0f13
+_b = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
+_d = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
+_e = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
+arguments = sys.argv[1:]
+bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
+develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
+eggs = pyams_pagelet
+	pylint
+eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
+entry-points = pylint=pylint.lint:Run
+find-links = http://download.ztfy.org/eggs
+recipe = zc.recipe.egg
+
 [test]
 __buildout_installed__ = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/parts/test
 	/home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin/test
-__buildout_signature__ = six-d45dd885254d7f32ab7887f3b58424fb zc.recipe.testrunner-d45dd885254d7f32ab7887f3b58424fb zc.recipe.egg-d45dd885254d7f32ab7887f3b58424fb zc.buildout-d45dd885254d7f32ab7887f3b58424fb zope.exceptions-d45dd885254d7f32ab7887f3b58424fb zope.interface-d45dd885254d7f32ab7887f3b58424fb zope.testrunner-d45dd885254d7f32ab7887f3b58424fb setuptools-d45dd885254d7f32ab7887f3b58424fb
+__buildout_signature__ = six-fc68d03e7c9074dcb88f8edb384c0f13 zc.recipe.egg-fc68d03e7c9074dcb88f8edb384c0f13 zc.recipe.testrunner-fc68d03e7c9074dcb88f8edb384c0f13 zc.buildout-fc68d03e7c9074dcb88f8edb384c0f13 zope.exceptions-fc68d03e7c9074dcb88f8edb384c0f13 zope.interface-fc68d03e7c9074dcb88f8edb384c0f13 zope.testrunner-fc68d03e7c9074dcb88f8edb384c0f13 setuptools-fc68d03e7c9074dcb88f8edb384c0f13
 _b = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 _d = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
-_e = /var/local/env/pyams/eggs
+_e = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 bin-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/bin
 develop-eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/develop-eggs
 eggs = pyams_pagelet [test]
-eggs-directory = /var/local/env/pyams/eggs
+eggs-directory = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/eggs
 find-links = http://download.ztfy.org/eggs
 location = /home/tflorac/Dropbox/src/PyAMS/pyams_pagelet/parts/test
 recipe = zc.recipe.testrunner
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.pylintrc	Wed Nov 27 19:39:45 2019 +0100
@@ -0,0 +1,407 @@
+[MASTER]
+
+# Specify a configuration file.
+#rcfile=
+
+# Python code to execute, usually for sys.path manipulation such as
+# pygtk.require().
+#init-hook=
+
+# Add files or directories to the blacklist. They should be base names, not
+# paths.
+ignore=CVS
+
+# Add files or directories matching the regex patterns to the blacklist. The
+# regex matches against base names, not paths.
+ignore-patterns=
+
+# Pickle collected data for later comparisons.
+persistent=yes
+
+# List of plugins (as comma separated values of python modules names) to load,
+# usually to register additional checkers.
+load-plugins=
+
+# Use multiple processes to speed up Pylint.
+jobs=2
+
+# Allow loading of arbitrary C extensions. Extensions are imported into the
+# active Python interpreter and may run arbitrary code.
+unsafe-load-any-extension=no
+
+# A comma-separated list of package or module names from where C extensions may
+# be loaded. Extensions are loading into the active Python interpreter and may
+# run arbitrary code
+extension-pkg-whitelist=
+
+# Allow optimization of some AST trees. This will activate a peephole AST
+# optimizer, which will apply various small optimizations. For instance, it can
+# be used to obtain the result of joining multiple strings with the addition
+# operator. Joining a lot of strings can lead to a maximum recursion error in
+# Pylint and this flag can prevent that. It has one side effect, the resulting
+# AST will be different than the one from reality. This option is deprecated
+# and it will be removed in Pylint 2.0.
+optimize-ast=no
+
+
+[MESSAGES CONTROL]
+
+# Only show warnings with the listed confidence levels. Leave empty to show
+# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
+confidence=
+
+# Enable the message, report, category or checker with the given id(s). You can
+# either give multiple identifier separated by comma (,) or put this option
+# multiple time (only on the command line, not in the configuration file where
+# it should appear only once). See also the "--disable" option for examples.
+#enable=
+
+# Disable the message, report, category or checker with the given id(s). You
+# can either give multiple identifiers separated by comma (,) or put this
+# option multiple times (only on the command line, not in the configuration
+# file where it should appear only once).You can also use "--disable=all" to
+# disable everything first and then reenable specific checks. For example, if
+# you want to run only the similarities checker, you can use "--disable=all
+# --enable=similarities". If you want to run only the classes checker, but have
+# no Warning level messages displayed, use"--disable=all --enable=classes
+# --disable=W"
+disable=import-star-module-level,old-octal-literal,oct-method,inherit-non-class,logging-format-interpolation,too-many-ancestors,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating
+
+
+[REPORTS]
+
+# Set the output format. Available formats are text, parseable, colorized, msvs
+# (visual studio) and html. You can also give a reporter class, eg
+# mypackage.mymodule.MyReporterClass.
+output-format=text
+
+# Put messages in a separate file for each module / package specified on the
+# command line instead of printing them on stdout. Reports (if any) will be
+# written in a file name "pylint_global.[txt|html]". This option is deprecated
+# and it will be removed in Pylint 2.0.
+files-output=no
+
+# Tells whether to display a full report or only the messages
+reports=yes
+
+# Python expression which should return a note less than 10 (10 is the highest
+# note). You have access to the variables errors warning, statement which
+# respectively contain the number of errors / warnings messages and the total
+# number of statements analyzed. This is used by the global evaluation report
+# (RP0004).
+evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
+
+# Template used to display messages. This is a python new-style format string
+# used to format the message information. See doc for all details
+#msg-template=
+
+
+[FORMAT]
+
+# Maximum number of characters on a single line.
+max-line-length=100
+
+# Regexp for a line that is allowed to be longer than the limit.
+ignore-long-lines=^\s*(# )?<?https?://\S+>?$
+
+# Allow the body of an if to be on the same line as the test if there is no
+# else.
+single-line-if-stmt=no
+
+# List of optional constructs for which whitespace checking is disabled. `dict-
+# separator` is used to allow tabulation in dicts, etc.: {1  : 1,\n222: 2}.
+# `trailing-comma` allows a space between comma and closing bracket: (a, ).
+# `empty-line` allows space-only lines.
+no-space-check=trailing-comma,dict-separator
+
+# Maximum number of lines in a module
+max-module-lines=1000
+
+# String used as indentation unit. This is usually "    " (4 spaces) or "\t" (1
+# tab).
+indent-string='    '
+
+# Number of spaces of indent required inside a hanging  or continued line.
+indent-after-paren=4
+
+# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
+expected-line-ending-format=
+
+
+[SIMILARITIES]
+
+# Minimum lines number of a similarity.
+min-similarity-lines=10
+
+# Ignore comments when computing similarities.
+ignore-comments=yes
+
+# Ignore docstrings when computing similarities.
+ignore-docstrings=yes
+
+# Ignore imports when computing similarities.
+ignore-imports=yes
+
+
+[TYPECHECK]
+
+# Tells whether missing members accessed in mixin class should be ignored. A
+# mixin class is detected if its name ends with "mixin" (case insensitive).
+ignore-mixin-members=yes
+
+# List of module names for which member attributes should not be checked
+# (useful for modules/projects where namespaces are manipulated during runtime
+# and thus existing member attributes cannot be deduced by static analysis. It
+# supports qualified module names, as well as Unix pattern matching.
+ignored-modules=
+
+# List of class names for which member attributes should not be checked (useful
+# for classes with dynamically set attributes). This supports the use of
+# qualified names.
+ignored-classes=optparse.Values,thread._local,_thread._local
+
+# List of members which are set dynamically and missed by pylint inference
+# system, and so shouldn't trigger E1101 when accessed. Python regular
+# expressions are accepted.
+generated-members=
+
+# List of decorators that produce context managers, such as
+# contextlib.contextmanager. Add to this list to register other decorators that
+# produce valid context managers.
+contextmanager-decorators=contextlib.contextmanager
+
+
+[MISCELLANEOUS]
+
+# List of note tags to take in consideration, separated by a comma.
+notes=FIXME,XXX,TODO
+
+
+[LOGGING]
+
+# Logging modules to check that the string format arguments are in logging
+# function parameter format
+logging-modules=logging
+
+
+[VARIABLES]
+
+# Tells whether we should check for unused import in __init__ files.
+init-import=no
+
+# A regular expression matching the name of dummy variables (i.e. expectedly
+# not used).
+dummy-variables-rgx=(_+[a-zA-Z0-9]*?$)|dummy
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.
+additional-builtins=
+
+# List of strings which can identify a callback function by name. A callback
+# name must start or end with one of those strings.
+callbacks=cb_,_cb
+
+# List of qualified module names which can have objects that can redefine
+# builtins.
+redefining-builtins-modules=six.moves,future.builtins
+
+
+[BASIC]
+
+# Good variable names which should always be accepted, separated by a comma
+good-names=i,j,k,ex,Run,_
+
+# Bad variable names which should always be refused, separated by a comma
+bad-names=foo,bar,baz,toto,tutu,tata
+
+# Colon-delimited sets of names that determine each other's naming style when
+# the name regexes allow several styles.
+name-group=
+
+# Include a hint for the correct naming format with invalid-name
+include-naming-hint=no
+
+# List of decorators that produce properties, such as abc.abstractproperty. Add
+# to this list to register other decorators that produce valid properties.
+property-classes=abc.abstractproperty
+
+# Regular expression matching correct function names
+function-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for function names
+function-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct variable names
+variable-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for variable names
+variable-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct constant names
+const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Naming hint for constant names
+const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
+
+# Regular expression matching correct attribute names
+attr-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for attribute names
+attr-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct argument names
+argument-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for argument names
+argument-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression matching correct class attribute names
+class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Naming hint for class attribute names
+class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
+
+# Regular expression matching correct inline iteration names
+inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
+
+# Naming hint for inline iteration names
+inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
+
+# Regular expression matching correct class names
+class-rgx=[A-Z_][a-zA-Z0-9]+$
+
+# Naming hint for class names
+class-name-hint=[A-Z_][a-zA-Z0-9]+$
+
+# Regular expression matching correct module names
+module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Naming hint for module names
+module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
+
+# Regular expression matching correct method names
+method-rgx=[a-z_][a-z0-9_]{2,30}$
+
+# Naming hint for method names
+method-name-hint=[a-z_][a-z0-9_]{2,30}$
+
+# Regular expression which should only match function or class names that do
+# not require a docstring.
+no-docstring-rgx=^_
+
+# Minimum line length for functions/classes that require docstrings, shorter
+# ones are exempt.
+docstring-min-length=-1
+
+
+[ELIF]
+
+# Maximum number of nested blocks for function / method body
+max-nested-blocks=5
+
+
+[SPELLING]
+
+# Spelling dictionary name. Available dictionaries: none. To make it working
+# install python-enchant package.
+spelling-dict=
+
+# List of comma separated words that should not be checked.
+spelling-ignore-words=
+
+# A path to a file that contains private dictionary; one word per line.
+spelling-private-dict-file=
+
+# Tells whether to store unknown words to indicated private dictionary in
+# --spelling-private-dict-file option instead of raising a message.
+spelling-store-unknown-words=no
+
+
+[IMPORTS]
+
+# Deprecated modules which should not be used, separated by a comma
+deprecated-modules=regsub,TERMIOS,Bastion,rexec
+
+# Create a graph of every (i.e. internal and external) dependencies in the
+# given file (report RP0402 must not be disabled)
+import-graph=
+
+# Create a graph of external dependencies in the given file (report RP0402 must
+# not be disabled)
+ext-import-graph=
+
+# Create a graph of internal dependencies in the given file (report RP0402 must
+# not be disabled)
+int-import-graph=
+
+# Force import order to recognize a module as part of the standard
+# compatibility libraries.
+known-standard-library=
+
+# Force import order to recognize a module as part of a third party library.
+known-third-party=enchant
+
+# Analyse import fallback blocks. This can be used to support both Python 2 and
+# 3 compatible code, which means that the block might have code that exists
+# only in one or another interpreter, leading to false positives when analysed.
+analyse-fallback-blocks=no
+
+
+[DESIGN]
+
+# Maximum number of arguments for function / method
+max-args=5
+
+# Argument names that match this expression will be ignored. Default to name
+# with leading underscore
+ignored-argument-names=_.*
+
+# Maximum number of locals for function / method body
+max-locals=15
+
+# Maximum number of return / yield for function / method body
+max-returns=6
+
+# Maximum number of branch for function / method body
+max-branches=12
+
+# Maximum number of statements in function / method body
+max-statements=50
+
+# Maximum number of parents for a class (see R0901).
+max-parents=7
+
+# Maximum number of attributes for a class (see R0902).
+max-attributes=7
+
+# Minimum number of public methods for a class (see R0903).
+min-public-methods=0
+
+# Maximum number of public methods for a class (see R0904).
+max-public-methods=20
+
+# Maximum number of boolean expressions in a if statement
+max-bool-expr=5
+
+
+[CLASSES]
+
+# List of method names used to declare (i.e. assign) instance attributes.
+defining-attr-methods=__init__,__new__,setUp
+
+# List of valid names for the first argument in a class method.
+valid-classmethod-first-arg=cls
+
+# List of valid names for the first argument in a metaclass class method.
+valid-metaclass-classmethod-first-arg=mcs
+
+# List of member names, which should be excluded from the protected access
+# warning.
+exclude-protected=_asdict,_fields,_replace,_source,_make
+
+
+[EXCEPTIONS]
+
+# Exceptions that will emit a warning when being caught. Defaults to
+# "Exception"
+overgeneral-exceptions=Exception
--- a/buildout.cfg	Wed Nov 27 19:37:28 2019 +0100
+++ b/buildout.cfg	Wed Nov 27 19:39:45 2019 +0100
@@ -1,48 +1,32 @@
 [buildout]
-eggs-directory = /var/local/env/pyams/eggs
+eggs-directory = eggs
 extends = http://download.ztfy.org/pyams/pyams-dev.cfg
 find-links = http://download.ztfy.org/eggs
-
 socket-timeout = 3
-show-picked-versions = true
-newest = false
-
-allow-hosts =
-    bitbucket.org
-    *.python.org
-    *.sourceforge.net
-    github.com
 
 versions = versions
+show-picked-versions = true
+allow-picked-versions = false
 newest = false
-#allow-picked-versions = false
 
 src = src
 develop =
     .
+    ../ext/lingua
     ../pyams_template
     ../pyams_utils
-    ../ext/lingua
+    ../pyams_viewlet
 
 parts =
     package
     i18n
     pyflakes
+    pylint
     test
 
 [package]
 recipe = zc.recipe.egg
-eggs =
-    pyams_pagelet
-    pyams_template
-    pyams_utils
-    pyramid
-    pyramid_zcml
-    zope.component
-    zope.configuration
-    zope.contentprovider
-    zope.interface
-    zope.schema
+eggs = pyams_pagelet
 
 [i18n]
 recipe = zc.recipe.egg
@@ -62,9 +46,17 @@
 on_install = true
 cmds = ${buildout:develop}/bin/${pyflakes:scripts}
 
+[pylint]
+recipe = zc.recipe.egg
+eggs =
+    ${package:eggs}
+    pylint
+entry-points = pylint=pylint.lint:Run
+arguments = sys.argv[1:]
+
 [test]
 recipe = zc.recipe.testrunner
 eggs = pyams_pagelet [test]
 
 [versions]
-pyams_pagelet = 0.1.2
+pyams_pagelet = 0.1.3
--- a/docs/HISTORY.txt	Wed Nov 27 19:37:28 2019 +0100
+++ b/docs/HISTORY.txt	Wed Nov 27 19:39:45 2019 +0100
@@ -1,6 +1,11 @@
 History
 =======
 
+0.1.3
+-----
+ - code cleanup
+ - Gitlab-CI integration
+
 0.1.2
 -----
  - updated "pagelet_config" decorator
--- a/docs/README.txt	Wed Nov 27 19:37:28 2019 +0100
+++ b/docs/README.txt	Wed Nov 27 19:39:45 2019 +0100
@@ -0,0 +1,29 @@
+======================
+PyAMS_pagelet package
+======================
+
+.. contents::
+
+
+What is PyAMS?
+==============
+
+PyAMS (Pyramid Application Management Suite) is a small suite of packages written for applications
+and content management with the Pyramid framework.
+
+**PyAMS** is actually mainly used to manage web sites through content management applications (CMS),
+see PyAMS_content package), but many features are generic and can be used inside any kind of web
+application.
+
+
+What is PyAMS_pagelet?
+======================
+
+This package is an update of z3c.pagelet package for use with Pyramid.
+
+PyAMS_template allows to separate a view's Python code from it's template implementation, so that
+this template can be easilly overriden for a given view or a given layer.
+
+PyAMS_pagelet now allows to split a view template into two parts, which are the content template
+and the layout template, so that any or both of them can be overriden for a given view or layer,
+without creating a new view.
--- a/setup.py	Wed Nov 27 19:37:28 2019 +0100
+++ b/setup.py	Wed Nov 27 19:39:45 2019 +0100
@@ -25,10 +25,12 @@
 README = os.path.join(DOCS, 'README.txt')
 HISTORY = os.path.join(DOCS, 'HISTORY.txt')
 
-version = '0.1.2'
+version = '0.1.3'
 long_description = open(README).read() + '\n\n' + open(HISTORY).read()
 
-tests_require = []
+tests_require = [
+    'pyams_viewlet'
+]
 
 setup(name='pyams_pagelet',
       version=version,
@@ -62,7 +64,9 @@
           'pyams_template',
           'pyams_utils',
           'pyramid',
+          'pyramid_chameleon',
           'pyramid_zcml',
+          'venusian',
           'zope.component',
           'zope.configuration',
           'zope.contentprovider',
--- a/src/pyams_pagelet.egg-info/PKG-INFO	Wed Nov 27 19:37:28 2019 +0100
+++ b/src/pyams_pagelet.egg-info/PKG-INFO	Wed Nov 27 19:39:45 2019 +0100
@@ -1,13 +1,41 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
 Name: pyams-pagelet
-Version: 0.1.2
+Version: 0.1.3
 Summary: PyAMS pagelet interfaces and classes
 Home-page: http://hg.ztfy.org/pyams/pyams_pagelet
 Author: Thierry Florac
 Author-email: tflorac@ulthar.net
 License: ZPL
-Description-Content-Type: UNKNOWN
-Description: 
+Description: ======================
+        PyAMS_pagelet package
+        ======================
+        
+        .. contents::
+        
+        
+        What is PyAMS?
+        ==============
+        
+        PyAMS (Pyramid Application Management Suite) is a small suite of packages written for applications
+        and content management with the Pyramid framework.
+        
+        **PyAMS** is actually mainly used to manage web sites through content management applications (CMS),
+        see PyAMS_content package), but many features are generic and can be used inside any kind of web
+        application.
+        
+        
+        What is PyAMS_pagelet?
+        ======================
+        
+        This package is an update of z3c.pagelet package for use with Pyramid.
+        
+        PyAMS_template allows to separate a view's Python code from it's template implementation, so that
+        this template can be easilly overriden for a given view or a given layer.
+        
+        PyAMS_pagelet now allows to split a view template into two parts, which are the content template
+        and the layout template, so that any or both of them can be overriden for a given view or layer,
+        without creating a new view.
+        
         
         History
         =======
@@ -31,3 +59,4 @@
 Classifier: Programming Language :: Python
 Classifier: Framework :: Pyramid
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Provides-Extra: test
--- a/src/pyams_pagelet.egg-info/SOURCES.txt	Wed Nov 27 19:37:28 2019 +0100
+++ b/src/pyams_pagelet.egg-info/SOURCES.txt	Wed Nov 27 19:39:45 2019 +0100
@@ -4,6 +4,7 @@
 docs/README.txt
 src/pyams_pagelet/__init__.py
 src/pyams_pagelet/configure.zcml
+src/pyams_pagelet/interfaces.py
 src/pyams_pagelet/meta.zcml
 src/pyams_pagelet/metaconfigure.py
 src/pyams_pagelet/metadirectives.py
@@ -16,8 +17,7 @@
 src/pyams_pagelet.egg-info/not-zip-safe
 src/pyams_pagelet.egg-info/requires.txt
 src/pyams_pagelet.egg-info/top_level.txt
-src/pyams_pagelet/doctests/README.txt
-src/pyams_pagelet/interfaces/__init__.py
+src/pyams_pagelet/doctests/README.rst
 src/pyams_pagelet/tests/__init__.py
 src/pyams_pagelet/tests/test_utilsdocs.py
 src/pyams_pagelet/tests/test_utilsdocstrings.py
\ No newline at end of file
--- a/src/pyams_pagelet.egg-info/requires.txt	Wed Nov 27 19:37:28 2019 +0100
+++ b/src/pyams_pagelet.egg-info/requires.txt	Wed Nov 27 19:39:45 2019 +0100
@@ -2,7 +2,9 @@
 pyams_template
 pyams_utils
 pyramid
+pyramid_chameleon
 pyramid_zcml
+venusian
 zope.component
 zope.configuration
 zope.contentprovider
@@ -10,3 +12,4 @@
 zope.schema
 
 [test]
+pyams_viewlet