{"id":19188983,"url":"https://github.com/openprocurement/openprocurement.caravan","last_synced_at":"2025-02-23T03:42:40.605Z","repository":{"id":114302626,"uuid":"141707092","full_name":"openprocurement/openprocurement.caravan","owner":"openprocurement","description":"Databridge for openprocurement","archived":false,"fork":false,"pushed_at":"2019-02-27T11:38:26.000Z","size":78,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-02-14T20:55:39.465Z","etag":null,"topics":["data-processing","databridge","openprocurement"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openprocurement.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-20T12:02:38.000Z","updated_at":"2019-02-27T11:38:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"969ab53c-39e9-46bc-bee0-2ba1b5d566af","html_url":"https://github.com/openprocurement/openprocurement.caravan","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openprocurement%2Fopenprocurement.caravan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openprocurement%2Fopenprocurement.caravan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openprocurement%2Fopenprocurement.caravan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openprocurement%2Fopenprocurement.caravan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openprocurement","download_url":"https://codeload.github.com/openprocurement/openprocurement.caravan/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240266854,"owners_count":19774072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-processing","databridge","openprocurement"],"created_at":"2024-11-09T11:27:06.642Z","updated_at":"2025-02-23T03:42:40.522Z","avatar_url":"https://github.com/openprocurement.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Caravan\n\n[![CodeFactor](https://www.codefactor.io/repository/github/openprocurement/openprocurement.caravan/badge)](https://www.codefactor.io/repository/github/openprocurement/openprocurement.caravan)\n\nThe purpose of caravan is to interconnect web resources in \"if this than that\" manner. Also the project was built with extensibility and simplicity in mind, so you're welcome to contribute.\n\n## Documentation\n\nThere are some diagrams, describing workflow and code structure of the project. You can find them in `docs/caravan.xml` and open them with [draw.io](https://draw.io)\n\n## Summary\n\n- Testing\n- How it works\n\n## Testing\n\nAlmost all of the present tests are environment-dependent.\nIt means, that they require working webapps and db to success.\n\nSo, environment-independent tests could be run separately.\n\nRun all tests:\n`$ ./bin/nosetests`\n\nRun only environment-independent tests:\n`$ ./bin/nosetests -a '!internal'`\n\n\n## How it works\n\n### Abstract\n\nThe main reason of caravan's existance is to interconnect web-resources in \"if this than that\" manner.\n\n### Conceptions\n\nTo do its work, caravan uses a set of atomic actions called `observers`, organized into a network called `runner`.\nThis network is in charge of data processing. Such approach allows to reuse code and adapt to wide range of\ninterconnected resources with minimal changes to the present code.\n\nObservers are classes that implement [`Observer`](https://en.wikipedia.org/wiki/Observer_pattern) pattern.\nThank to it, it's becomes possible to organize atomic actions, incapsulated in observers, into the runner.\nRunner, in turn, is able to setup itself by interconnecting observers into desirable network, and therefore\ncontrol it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenprocurement%2Fopenprocurement.caravan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenprocurement%2Fopenprocurement.caravan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenprocurement%2Fopenprocurement.caravan/lists"}