Metadata-Version: 2.0
Name: packtools
Version: 0.7.1
Summary: Handle SPS packages like a breeze.
Home-page: http://docs.scielo.org
Author: Gustavo Fonseca
Author-email: gustavo.fonseca@scielo.org
License: BSD License
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: lxml (>=3.3.4)
Requires-Dist: picles.plumber (>=0.10)

scielo.packtools
================

Canivete suiço para a inspeção de pacotes SPS.


Instalação
----------

Python Package Index (recomendado):

```bash
pip install packtools
```

Pip + git (versão de desenvolvimento):

```bash
pip install -e git+git://github.com/scieloorg/packtools.git#egg=packtools
```

Repositório de códigos (versão de desenvolvimento):

```bash
git clone https://github.com/scieloorg/packtools.git
cd packtools 
python setup.py install
```


Configuração do Catálogo XML
----------------------------

Um Catálogo XML é um mecanismo de *lookup* que pode ser utilizado para evitar que requisições de 
rede sejam realizadas para carregar DTDs externas. 

Por questões de desempenho e segurança, as instâncias de `stylechecker.XML` não realizam 
conexões de rede, portanto é extremamente recomendável que seja configurado um Catálogo XML,
que traduz ids públicos para uris de arquivos locais.

O `packtools` já apresenta um catálogo padrão, que para ser utilizado basta definir a
variável de ambiente `XML_CATALOG_FILES` com o caminho absoluto para 
`packtools/catalogs/scielo-publishing-schema.xml`.

Mais informações em http://xmlsoft.org/catalog.html#Simple


Utilitário `stylechecker`
-------------------------

Após a instalação, o programa `stylechecker` deverá estar disponível no seu emulador de terminal. 
Esse programa realiza a validação de um determinado XML no formato SPS contra a DTD, e 
apresenta uma lista dos erros encontrados. Também é possível *anotar* os erros encontrados em uma
cópia do XML em validação, por meio do argumento opcional `--annotated`.

O utilitário `stylechecker` tenta carregar a DTD externa, especificada na declaração DOCTYPE do 
XML. Para evitar esse comportamento, utilize a opção `--nonetwork`.

A função *ajuda* pode ser utilizada com a opção `-h`, conforme o exemplo:

```bash
$ stylechecker -h
usage: stylechecker [-h] [--annotated] [--nonetwork] [--assetsdir ASSETSDIR]
                    [--version]
                    XML [XML ...]

stylechecker cli utility

positional arguments:
  XML                   filesystem path or URL to the XML

optional arguments:
  -h, --help            show this help message and exit
  --annotated           reproduces the XML with notes at elements that have
                        errors
  --nonetwork           prevents the retrieval of the DTD through the network
  --assetsdir ASSETSDIR
                        lookup, at the given directory, for each asset
                        referenced by the XML
  --version             show program's version number and exit
```


Exemplo do resultado da validação:

```bash
$ stylechecker 0034-8910-rsp-48-2-0206.xml
[
  {
    "_xml": "0034-8910-rsp-48-2-0206.xml",
    "dtd_errors": [
      "Value \"foo\" for attribute ref-type of xref is not among the enumerated set"
    ],
    "is_valid": false,
    "sps_errors": [
      "Element 'abstract': Unexpected attribute xml:lang.",
      "Element 'article-title': Unexpected attribute xml:lang.",
      "Element 'counts': Missing element or wrong value in equation-count.",
      "Element 'xref', attribute ref-type: Invalid value \"foo\".",
      "Element 'person-group': Missing attribute person-group-type.",
      "Element 'fn': Missing attribute fn-type.",
      "Element 'article': Missing SPS version at the attribute specific-use."
    ]
  }
]
```



History
=======


0.7.1 (2015-04-29)
------------------

* Fixes a bug that report *page-count* as invalid when fpage or lpage values 
  are non-digit.
* Fixes a bug that mark as invalid XMLs containing use-licenses with 
  https scheme or missing trailing slashes.
* Changes the funding-group validation algorithm. 
* Checking for funding-statement when fn[fn-type="financial-disclosure"] is 
  present.


0.7 (2015-03-13)
----------------

* Added SciELO PS 1.2 support.
* Added the apparent sourceline of the element raising validation errors 
  (stylechecker).
* Added the option *--nocolors* to prevent stylechecker output from being 
  colorized by ANSI escape sequences.
* stylechecker now prints log messages to stdout. The option *--loglevel* 
  should be used to define the log level. Options are: DEBUG, INFO, WARNING, 
  ERROR or CRITICAL.
* SciELO PS 1.2 schematron uses EXSLT querybinding.
* Better error handling while analyzing multiple XML files with stylechecker.


0.6.4 (2015-02-03)
------------------

* Fixes a bug that causes malfunctioning on stylechecker
  while expanding wildcards on windows.
* Major semantic changes at *--assetsdir* options. Now it is always turned ON,
  and the option is used to set the lookup basedir. By default,
  the XML basedir is used.


0.6.3 (2015-02-02)
------------------

* stylechecker CLI utility overhaul:
  * The basic output is now presented as JSON structure. 
  * The option *--assetsdir* lookups, in the given dir, for each asset referenced in
      XML. The *--annotated* option now writes the output to a file. The
      utility now takes more than one XML a time.
  * *pygments*, if installed, will be used to display pretty JSON outputs.


0.6.2 (2015-01-23)
------------------

* Added method `XMLValidator.lookup_assets`.
* Added property `XMLValidator.assets`. 
* Fixed minor issue that would cause //element-citation[@publication-type="report"] 
  to be reported as invalid.
* Fixed minor issue that would erroneously identify an element-citation element 
  as not being child of element ref.


0.6.1 (2014-11-28)
------------------

* Minor fix to implement changes from SciELO PS 1.1.1.


0.6 (2014-10-28)
----------------

* Python 3 support.
* Project-wide code refactoring.
* `packtools.__version__` attribute to get the package version.
* Distinction between classes of error with the attribute `StyleError.level`.


0.5 (2014-09-29)
----------------

* Basic implementation of XML style rules according to SciELO PS version 1.1.
* `stylechecker` and `packbuilder` console utilities.
* Major performance improvements on `XMLValidator` instantiation, when used
  with long-running processes (9.5x).



