morpho

A framework for microservice based document transformation.

https://github.com/b4rtware/morpho

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.4%) to scientific vocabulary

Keywords

document microservice python spring-boot transform

Keywords from Contributors

interactive serializer packaging network-simulation shellcodes hacking autograding observability embedded optim
Last synced: 6 months ago · JSON representation

Repository

A framework for microservice based document transformation.

Basic Info
  • Host: GitHub
  • Owner: B4rtware
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 42.9 MB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • Open Issues: 19
  • Releases: 13
Topics
document microservice python spring-boot transform
Created about 6 years ago · Last pushed about 3 years ago
Metadata Files
Readme Changelog License

README.md

Morpho Logo

Python port for the go written doctrans

Code style: black license: MIT

Morpho is a framework for microservice based web services. It offers the ability to transform a given document with a provided function.

In the first place this framework was created to be used for research purposes.

💡 Installation

pip install morpho

via git

  1. make sure to use at least python 3.8
  2. clone the repo git clone https://github.com/B4rtware/morpho.git
  3. cd morpho and install dependencies via
    • poetry install (Poetry) or
    • use the provided requirements.txt

⚙️ Server Example

... without options

service.py ```python from morpho.server import Service

def work(document: str) -> str: return document

service = Service(name="Echo", version="0.0.1", worker=work)

if name == "main": service.run() ```

Tested with Python 3.8.1 and morpho v1.0.0b8 ✔️

... with options

service.py ```python from morpho.server import Service from pydantic import BaseModel

class Options(BaseModel): name: str

def work(document: str, options: Options) -> str: return document + options.name

service = Service(name="AppendName", version="0.0.1", worker=work, options_type=Options)

if name == "main": service.run() ```

Tested with Python 3.8.1 and morpho v1.0.0b8 ✔️

🖥️ Client Example

This example expects a service named Echo that was started with the --register option and was registered with the Eureka server with the url http://localhost:8761/eureka/.

client.py ```python from morpho.rest.models import TransformDocumentRequest from morpho.client import Client from morpho.client import ClientConfig

morpho = Client( ClientConfig("http://localhost:8761/eureka/") )

request = TransformDocumentRequest( document="This is a Document!", service_name="Echo" )

response = morpho.transform_document(request=request)

print(response.document) `` >>> This is a Document!`

Tested with Python 3.8.1 and morpho v1.0.0b8 ✔️

👩🏽‍💻 Development

Creating a new release

  1. Run the following command poetry version <version>
    Morpho uses the following schema: ^\d+\.\d+\.\d+((b|a)\d+)?$

  2. Bump the version within the file: morpho/__version__.py
    Make sure it's the same version used when bumping with poetry

  3. Open Changelog.md and write the new changelog:

    • Use the following # header: v<version> - (dd.mm.yyyy)
      Used ## headers:
    • 💌 Added
    • 🔨 Fixed
    • ♻️ Changed
  4. Stage the modified files and push them with the following commit message:

    chore: bump to version <version>

  5. Run the following command poetry build to create a tarball and a wheel based on the new version

  6. Create a new github release and:

    1. Copy and paste the changelog content without the # header into the description of the release textbox
    2. Use the # header style to fill in the Release title (copy it from the Changelog.md)
    3. Copy the version with the v-prefix into the Tag version
  7. Attach the produced tarball and wheel (dist/) to the release

  8. Check This is a pre-release if it's either an alpha or beta release (a|b) - optional

  9. Publish release

📝 License

MIT

Owner

  • Login: B4rtware
  • Kind: user

GitHub Events

Total
Last Year

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 445
  • Total Committers: 2
  • Avg Commits per committer: 222.5
  • Development Distribution Score (DDS): 0.002
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
B4rtware 3****e 444
dependabot[bot] 4****] 1

Issues and Pull Requests

Last synced: 8 months ago

All Time
  • Total issues: 34
  • Total pull requests: 4
  • Average time to close issues: 3 months
  • Average time to close pull requests: 2 days
  • Total issue authors: 2
  • Total pull request authors: 1
  • Average comments per issue: 0.21
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 4
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • B4rtware (33)
  • jasonwcfan (1)
Pull Request Authors
  • dependabot[bot] (4)
Top Labels
Issue Labels
enhancement (15) documentation (6) v1.0.0 (6) bug (4) v1.1.0 (3)
Pull Request Labels
dependencies (4)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 62 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 11
  • Total maintainers: 1
pypi.org: morpho

A framework for microservice based document transformation.

  • Versions: 11
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 62 Last month
Rankings
Dependent packages count: 10.0%
Dependent repos count: 21.7%
Average: 27.0%
Stargazers count: 27.8%
Forks count: 29.8%
Downloads: 45.6%
Maintainers (1)
Last synced: 7 months ago

Dependencies

examples/services/de/tu-berlin/qds/crypto/caeser/poetry.lock pypi
  • certifi 2020.6.20
  • chardet 3.0.4
  • click 7.1.2
  • colorama 0.4.3
  • flask 1.1.2
  • idna 2.10
  • itsdangerous 1.1.0
  • jinja2 2.11.2
  • markupsafe 1.1.1
  • morpho 1.0.0b4
  • py-eureka-client 0.7.8
  • pydantic 1.6.1
  • regex 2020.7.14
  • requests 2.24.0
  • toml 0.10.1
  • urllib3 1.25.10
  • waitress 1.4.4
  • werkzeug 1.0.1
examples/services/de/tu-berlin/qds/crypto/caeser/pyproject.toml pypi
  • morpho ^1.0.0-beta.4
  • pydantic ^1.5.1
  • python ^3.8
examples/services/de/tu-berlin/qds/crypto/gateway/poetry.lock pypi
  • certifi 2020.6.20
  • chardet 3.0.4
  • click 7.1.2
  • colorama 0.4.3
  • flask 1.1.2
  • idna 2.10
  • itsdangerous 1.1.0
  • jinja2 2.11.2
  • markupsafe 1.1.1
  • morpho 1.0.0b4
  • py-eureka-client 0.7.8
  • pydantic 1.6.1
  • regex 2020.7.14
  • requests 2.24.0
  • toml 0.10.1
  • urllib3 1.25.10
  • waitress 1.4.4
  • werkzeug 1.0.1
examples/services/de/tu-berlin/qds/crypto/gateway/pyproject.toml pypi
  • morpho ^1.0.0-beta.4
  • pydantic ^1.5.1
  • python ^3.8
examples/services/de/tu-berlin/qds/crypto/permutation/poetry.lock pypi
  • certifi 2020.6.20
  • chardet 3.0.4
  • click 7.1.2
  • colorama 0.4.3
  • flask 1.1.2
  • idna 2.10
  • itsdangerous 1.1.0
  • jinja2 2.11.2
  • markupsafe 1.1.1
  • morpho 1.0.0b4
  • py-eureka-client 0.7.8
  • pydantic 1.6.1
  • regex 2020.7.14
  • requests 2.24.0
  • toml 0.10.1
  • urllib3 1.25.10
  • waitress 1.4.4
  • werkzeug 1.0.1
examples/services/de/tu-berlin/qds/crypto/permutation/pyproject.toml pypi
  • morpho ^1.0.0-beta.4
  • pydantic ^1.5.1
  • python ^3.8
examples/services/de/tu-berlin/qds/crypto/pyproject.toml pypi
  • python ^3.8
examples/services/de/tu-berlin/qds/crypto/vigenere/poetry.lock pypi
  • certifi 2020.6.20
  • chardet 3.0.4
  • click 7.1.2
  • colorama 0.4.3
  • flask 1.1.2
  • idna 2.10
  • itsdangerous 1.1.0
  • jinja2 2.11.2
  • markupsafe 1.1.1
  • morpho 1.0.0b4
  • py-eureka-client 0.7.8
  • pydantic 1.6.1
  • regex 2020.7.14
  • requests 2.24.0
  • toml 0.10.1
  • urllib3 1.25.10
  • waitress 1.4.4
  • werkzeug 1.0.1
examples/services/de/tu-berlin/qds/crypto/vigenere/pyproject.toml pypi
  • morpho ^1.0.0-beta.4
  • pydantic ^1.5.1
  • python ^3.8
examples/services/de/tuberlin/qds/echo/poetry.lock pypi
  • atomicwrites 1.4.0 develop
  • attrs 20.2.0 develop
  • more-itertools 8.5.0 develop
  • packaging 20.4 develop
  • pluggy 0.13.1 develop
  • py 1.9.0 develop
  • pyparsing 2.4.7 develop
  • pytest 5.4.3 develop
  • six 1.15.0 develop
  • wcwidth 0.2.5 develop
  • certifi 2020.6.20
  • chardet 3.0.4
  • click 7.1.2
  • colorama 0.4.3
  • flask 1.1.2
  • idna 2.10
  • itsdangerous 1.1.0
  • jinja2 2.11.2
  • markupsafe 1.1.1
  • morpho 1.0.0b6
  • py-eureka-client 0.7.9
  • pydantic 1.6.1
  • regex 2020.9.27
  • requests 2.24.0
  • toml 0.10.1
  • urllib3 1.25.10
  • waitress 1.4.4
  • werkzeug 1.0.1
examples/services/de/tuberlin/qds/echo/pyproject.toml pypi
  • pytest ^5.2 develop
  • morpho ^1.0.0-beta.6
  • python ^3.8
poetry.lock pypi
  • alabaster 0.7.12 develop
  • appdirs 1.4.4 develop
  • astroid 2.5.1 develop
  • atomicwrites 1.4.0 develop
  • attrs 20.3.0 develop
  • babel 2.9.0 develop
  • beautifulsoup4 4.9.3 develop
  • black 19.10b0 develop
  • codecov 2.1.11 develop
  • coverage 5.5 develop
  • css-html-js-minify 2.5.5 develop
  • docutils 0.16 develop
  • httpretty 1.0.5 develop
  • imagesize 1.2.0 develop
  • iniconfig 1.1.1 develop
  • invoke 1.5.0 develop
  • isort 5.7.0 develop
  • jsonschema 3.2.0 develop
  • lazy-object-proxy 1.5.2 develop
  • lxml 4.6.2 develop
  • m2r 0.2.1 develop
  • mccabe 0.6.1 develop
  • mistune 0.8.4 develop
  • packaging 20.9 develop
  • pathspec 0.8.1 develop
  • pluggy 0.13.1 develop
  • py 1.10.0 develop
  • pyenchant 3.2.0 develop
  • pygments 2.8.1 develop
  • pylint 2.7.2 develop
  • pyparsing 2.4.7 develop
  • pyrsistent 0.17.3 develop
  • pytest 6.2.2 develop
  • pytest-cov 2.11.1 develop
  • python-slugify 4.0.1 develop
  • pytz 2021.1 develop
  • pyyaml 5.4.1 develop
  • six 1.15.0 develop
  • snowballstemmer 2.1.0 develop
  • soupsieve 2.2 develop
  • sphinx 3.5.2 develop
  • sphinx-issues 1.2.0 develop
  • sphinx-material 0.0.30 develop
  • sphinxcontrib-applehelp 1.0.2 develop
  • sphinxcontrib-devhelp 1.0.2 develop
  • sphinxcontrib-htmlhelp 1.0.3 develop
  • sphinxcontrib-httpdomain 1.7.0 develop
  • sphinxcontrib-jsmath 1.0.1 develop
  • sphinxcontrib-openapi 0.7.0 develop
  • sphinxcontrib-qthelp 1.0.3 develop
  • sphinxcontrib-serializinghtml 1.1.4 develop
  • sphinxcontrib-spelling 5.4.0 develop
  • text-unidecode 1.3 develop
  • typed-ast 1.4.2 develop
  • unidecode 1.2.0 develop
  • wrapt 1.12.1 develop
  • certifi 2020.12.5
  • chardet 4.0.0
  • click 7.1.2
  • colorama 0.4.4
  • flask 1.1.2
  • idna 2.10
  • itsdangerous 1.1.0
  • jinja2 2.11.3
  • markupsafe 1.1.1
  • py-eureka-client 0.7.9
  • pydantic 1.8.1
  • regex 2020.11.13
  • requests 2.25.1
  • toml 0.10.2
  • typing-extensions 3.7.4.3
  • urllib3 1.26.4
  • waitress 1.4.4
  • werkzeug 1.0.1
requirements.txt pypi
  • atomicwrites ==1.4.0
  • attrs ==19.3.0
  • certifi ==2020.6.20
  • chardet ==3.0.4
  • click ==7.1.2
  • colorama ==0.4.3
  • dataclasses-json ==0.3.8
  • flask ==1.1.2
  • googleapis-common-protos ==1.52.0
  • idna ==2.10
  • itsdangerous ==1.1.0
  • jinja2 ==2.11.2
  • markupsafe ==1.1.1
  • marshmallow ==3.7.0
  • marshmallow-enum ==1.5.1
  • more-itertools ==8.4.0
  • mypy-extensions ==0.4.3
  • packaging ==20.4
  • pluggy ==0.13.1
  • protobuf ==3.12.2
  • py ==1.9.0
  • py-eureka-client ==0.7.4
  • pydantic ==1.6.1
  • pyparsing ==2.4.7
  • pytest ==5.4.3
  • regex ==2020.7.14
  • requests ==2.24.0
  • six ==1.15.0
  • stringcase ==1.2.0
  • toml ==0.10.1
  • typing-extensions ==3.7.4.2
  • typing-inspect ==0.6.0
  • urllib3 ==1.25.9
  • waitress ==1.4.4
  • wcwidth ==0.2.5
  • werkzeug ==1.0.1
docker/docker-morpho/Dockerfile docker
  • python 3.8-slim-buster build
examples/services/de/tu-berlin/qds/crypto/caeser/Dockerfile docker
  • python 3.8-alpine build
examples/services/de/tu-berlin/qds/crypto/docker-compose.yml docker
  • b4rtware/morpho-caeser latest
  • b4rtware/morpho-eureka latest
  • b4rtware/morpho-gateway latest
  • b4rtware/morpho-permutation latest
  • b4rtware/morpho-vigenere latest
examples/services/de/tu-berlin/qds/crypto/gateway/Dockerfile docker
  • python 3.8-alpine build
examples/services/de/tu-berlin/qds/crypto/permutation/Dockerfile docker
  • python 3.8-alpine build
examples/services/de/tu-berlin/qds/crypto/vigenere/Dockerfile docker
  • python 3.8-alpine build
examples/services/de/tuberlin/qds/echo/Dockerfile docker
  • b4rtware/morpho latest build
examples/services/de/tu-berlin/qds/crypto/poetry.lock pypi
pyproject.toml pypi
requirements-dev.txt pypi