Skip to content
This repository has been archived by the owner on Jan 23, 2020. It is now read-only.

open-contracting-archive/extensions-data-collector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OCDS Extensions Data Collector

PyPI version Build Status Dependency Status Coverage Status

A suite of command-line tools for working with the OCDS extension registry, including: downloading any versions of extensions; generating POT files (message catalogs) from extension files, as part of a translation worlflow; generating a data file in JSON format, that provides all the information about versions of extensions.

To install:

pip install ocdsextensionsdatacollector

To see all commands available, run:

ocdsextensionsdatacollector --help

Commands

download

Downloads versions of extensions to a local directory.

To download all versions of all extensions:

ocdsextensionsdatacollector download outputdir

To download all versions of specific extensions:

ocdsextensionsdatacollector download outputdir lots bids

To download specific versions:

ocdsextensionsdatacollector download outputdir bids==v1.1.3

You can mix and match specifying extensions and versions:

ocdsextensionsdatacollector download outputdir lots bids==v1.1.3

If you've already downloaded versions of extensions, you will need to specify how to handle repeated downloads using the --overwrite option.

  • --overwrite any overwrite any downloaded versions
  • --overwrite none overwrite no downloaded versions
  • --overwrite live overwrite only live versions (like the master branch of an extension)

Without the output directory, the extension files are organized like {extension}/{version}/{files}, for example: lots/v1.1.3/README.md.

generate-pot-files

Generates POT files (message catalogs) for versions of extensions, for example:

ocdsextensionsdatacollector generate-pot-files build/locale

You can specify versions and extensions like with the download command.

To see Sphinx's standard output, use the --verbose option.

Without the output directory, the POT files are organized like {extension}/{version}/{files}, for example: lots/v1.1.3/docs.pot.

generate-data-file

Generates a data file in JSON format with all the information about versions of extensions, for example:

ocdsextensionsdatacollector generate-data-file > data.json

You can specify versions and extensions like with the download command.

The data file is organized as below. To keep it short, the sample shows only one version of one extension, and only one row of one codelist, and it truncates the Markdown content of documentation files and the parsed content of schema files.

{
  "risk_allocation": {
    "id": "risk_allocation",
    "category": "ppp",
    "core": false,
    "name": {
      "en": "Risk Allocation"
    },
    "description": {
      "en": "Draft risk allocation extension for ppp extension"
    },
    "latest_version": "master",
    "versions": {
      "master": {
        "id": "risk_allocation",
        "date": "",
        "version": "master",
        "base_url": "https://raw.githubusercontent.com/open-contracting/ocds-riskAllocation-extension/master/",
        "download_url": "https://github.com/open-contracting/ocds-riskAllocation-extension/archive/master.zip",
        "metadata": {
          "name": {
            "en": "Risk Allocation"
          },
          "description": {
            "en": "Draft risk allocation extension for ppp extension"
          },
          "documentationUrl": {
            "en": "https://github.com/open-contracting/ocds-riskAllocation-extension"
          },
          "compatibility": [
            "1.1"
          ],
          "codelists": [
            "riskAllocation.csv",
            "riskCategory.csv"
          ],
          "schemas": [
            "release-schema.json"
          ]
        },
        "schemas": {
          "record-package-schema.json": {},
          "release-package-schema.json": {},
          "release-schema.json": {
            "en": {
              "definitions": {
                
              }
            }
          }
        },
        "codelists": {
          "riskAllocation.csv": {
            "fieldnames": {
              "Code": {
                "en": "Code"
              },
              "Title": {
                "en": "Title"
              },
              "Description": {
                "en": "Description"
              }
            },
            "rows": {
              "publicAuthority": {
                "en": {
                  "Code": "publicAuthority",
                  "Title": "Public authority",
                  "Description": "The risk is wholly or mostly retained by the public authority"
                }
              },
              
            }
          },
          
        },
        "docs": {
          "index.md": {
            "en": "# Risk Allocation Extension\n\nThe risk allocation extension …"
          }
        },
        "readme": {
          "en": "# Risk allocation\n\nThe [framework for disclosure in PPPs](http://pubdocs.worldbank.org/en/773541448296707678/Disclosure-in-PPPs-Framework.pdf) …"
        }
      },
      
    }
  },
  
}

Translation workflow

If you haven't already, install sphinx-intl and transifex-client, and create a ~/.transifexrc file (replace USERNAME and PASSWORD):

pip install sphinx-intl<1 transifex-client
sphinx-intl create-transifexrc --transifex-username USERNAME --transifex-password PASSWORD

Generate POT files:

ocdsextensionsdatacollector generate-pot-files build/locale

Remove any .tx/config file:

rm -f .tx/config

Create a .tx/config file:

sphinx-intl create-txconfig

Update the .tx/config file (replace ocds-extensions with your Transifex project):

sphinx-intl update-txconfig-resources --transifex-project-name ocds-extensions --pot-dir build/locale --locale-dir locale

Push source files to Transifex:

tx push -s

Once you've translated strings on Transifex, pull translation files from Transifex:

tx pull -a -f

Copyright (c) 2018 Open Contracting Partnership, released under the BSD license