# -*- coding: utf-8 -*-
#
# Copyright 2009 - 2014
# André Malo or his licensors, as applicable
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[package]
name = rcssmin

python.min = 2.3
python.max = 3.4
pypy.min = 1.9
pypy.max = 2.2
jython.min = 2.5
jython.max = 2.7

version.number = 1.0.5

author.name = André Malo
author.email = nd@perlig.de
#maintainer.name =
#maintainer.email = 
url.homepage = http://opensource.perlig.de/rcssmin/
url.download = http://storage.perlig.de/rcssmin/


[docs]
meta.classifiers = docs/CLASSIFIERS
meta.description = docs/DESCRIPTION
meta.summary = docs/SUMMARY
meta.provides = docs/PROVIDES
meta.license = LICENSE
meta.keywords =
    CSS
    Minimization

apidoc.dir = docs/apidoc
apidoc.strip = 1
#apidoc.ignore =

#userdoc.dir = docs/userdoc
#userdoc.strip = 1
#userdoc.ignore =
#    .buildinfo

#examples.dir = docs/examples
#examples.strip = 1
#examples.ignore =

#man =

extra =
    README.rst
    docs/CHANGES
    docs/BENCHMARKS


[manifest]
#packages.lib = .
#packages.collect =
modules = rcssmin

packages.extra =
    _setup.py2.term
    _setup.py3.term

#scripts =

dist =
    tests
    run_tests.py
    bench
    bench.sh
