Skip to content

Commit

Permalink
Merge pull request #18 from open-contracting/pr17
Browse files Browse the repository at this point in the history
Add commits to #17
  • Loading branch information
jpmckinney committed Nov 26, 2018
2 parents 0d44614 + dbd85af commit c75ad3b
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 6 deletions.
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Changelog

## 0.5

* Allow specifying cached or customized merge rules.

## 0.4 (2018-01-04)

* Use the schema to determine the merge rules.
* Allow specifying a custom local or remote schema.

## 0.3 (2015-12-04)

* Use relative imports.

## 0.2 (2015-12-01)

* Move repository to open-contracting organization.

## 0.1 (2015-11-29)

First release.
10 changes: 10 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -101,3 +101,13 @@ path. Full absolute paths can be used too:
# Use relese-schema.json using absolute path
ocdsmerge.merge(releases, '/some/full/path/release-schema.json')
Using pre-processed release schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code:: python
# Extract the merging rules from the schema
merge_rules = ocdsmerge.get_merge_rules('release-schema.json')
# Use the merging rules
ocdsmerge.merge(releases, merge_rules=merge_rules)
2 changes: 1 addition & 1 deletion ocdsmerge/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from .merge import merge, merge_versioned # noqa
from .merge import merge, merge_versioned, get_merge_rules # noqa
12 changes: 7 additions & 5 deletions ocdsmerge/merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def remove_number_path(path):
return tuple(item for item in path if not isinstance(item, int))


def process_schema(schema):
def get_merge_rules(schema):
schema = schema or get_latest_schema_uri()
if schema.startswith('http'):
deref_schema = jsonref.load_uri(schema)
Expand Down Expand Up @@ -156,10 +156,11 @@ def process_flattened(flattened):
return processed


def merge(releases, schema=None):
def merge(releases, schema=None, merge_rules=None):
''' Takes a list of releases and merge them making a
compiledRelease suitible for an OCDS Record '''
merge_rules = process_schema(schema)
if not merge_rules:
merge_rules = get_merge_rules(schema)
merged = collections.OrderedDict({("tag",): ['compiled']})
for release in sorted(releases, key=lambda rel: rel["date"]):
release = release.copy()
Expand All @@ -184,10 +185,11 @@ def merge(releases, schema=None):
return unflatten(merged)


def merge_versioned(releases, schema=None):
def merge_versioned(releases, schema=None, merge_rules=None):
''' Takes a list of releases and merge them making a
versionedRelease suitible for an OCDS Record '''
merge_rules = process_schema(schema)
if not merge_rules:
merge_rules = get_merge_rules(schema)
merged = collections.OrderedDict()
for release in sorted(releases, key=lambda rel: rel["date"]):
release = release.copy()
Expand Down

0 comments on commit c75ad3b

Please sign in to comment.