webezyio


Namewebezyio JSON
Version 0.1.9 PyPI version JSON
download
home_page
SummaryWebezy.io CLI for generating gRPC micro-services
upload_time2023-02-04 15:00:51
maintainer
docs_urlNone
author
requires_python>=3.7
licenseCopyright (c) 2022 Webezy.io. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords grpc micro-services cli framework
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # webezy.io (webezyio)

[![Downloads](https://pepy.tech/badge/webezyio)](https://pepy.tech/project/webezyio)

[![Python 3.7](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/release/python-370/)

[webezyio](https://www.webezy.io) is free and open-source project that aims to be a complete framework for developing micro-services projects.
The underlying communication protocol is [```HTTP2```](https://en.wikipedia.org/wiki/HTTP/2) and for serialization and deserialization is [```protobuf```](https://developers.google.com/protocol-buffers/docs/pythontutorial).
It utulize those communication protocol, message serialization / deserialization and code generator with [```gRPC```](https://grpc.io) open-source project by google. 

Webezy.io has been created to give devlopers quick and structerd way for building gRPC services without pain while keeping thins open for further modifications.

In result we are trying not to restrict the implemantations themselves but instead applying small restrictions on the project structure for well defined, re-usable structure that can be used by many languages and scenarios.

The current supported languages are:
|                **Language**               | **Server** | **Client** |  **Status**  |
|:-----------------------------------------:|:----------:|:----------:|:------------:|
|     [Python](./docs/source/python.md)     |    **V**   |    **V**   |    Stable    |
| [Typescript](./docs/source/typescript.md) |    **V**   |    **V**   |    Stable    |
|         [Go](./docs/source/go.md)         |    **V**   |    **V**   | Experimental |
| [Webpack-js](./docs/source/webpack-js.md) |     --     |    **V**   | Experimental |
|                   C#.NET                  |    **X**   |    **X**   |    Planned   |

Get full explanation and many more details on usage at [```webezy.io```](https://www.webezy.io).

The `webezyio CLI` is a wrapper for WebezyArchitect class which does mainly the processing and execution of creating webezy.jso file.

You can interact with the WebezyArchitect class with two main ways:

- __CLI__ - The most common and easy to get you started creating gRPC services.
- __Python API__ - Will be useful for more compehransive project creation flows and for developers who wants to understand how webezyio works.

# Installation
Install from pip
```sh
pip install webezyio
```
# Docs

Go to [Webezy.io Docs](https://www.webezy.io/docs) for full explanation.

__Useful Resources__:

- [Awesome gRPC - A curated list of useful resources for gRPC](https://github.com/grpc-ecosystem/awesome-grpc)

- [API Design Guide From Google - Matches well into gRPC specific design patterns](https://cloud.google.com/apis/design/)

# Features:

- __CLI__ Well structerd CLI wrapper to create, edit, run and debug a RPC call to gRPC services
- __Generated Code__ Auto-Generated code classes for Services implemantations and client stubs
    * [Python](./docs/source/languages/python.md)
    * [Typescript](./docs/source/languages/typescript.md)
    * [Go](./docs/source/languages/go.md)
- __Plugins__ Highly pluggable API allow us to create and publish "Extensions" without breaking the code:
    * Readme generator
    * Languages Builder - (Python, Typescript & Go)
    * Proto Builder
    * Dockerize (In-development)
    * Migrate gRPC services to Webezy.io project
- __Templating__ As a Webezy.io project grows you can template it and share it to your peers for remote work (Branching) or as a 'Built-in' template to be used by other co-workers
- __Unified Extensions__ We have been working on unification process of `Protobuf` Extensions (Calles Custom Options) which will allow us in the future to release more pluggable features directly into your Webezy.io workspace

__Tutorials:__
- [Quick Start](https://www.webezy.io/docs/quick-start)

## Quick Start 

> __Note__ Please refer to [CLI docs](https://www.webezy.io/docs/cli) for any question you got, also make sute to use the CLI help `webezy --help` should give you an additional information on every command you may possibly run

To create a [new webezy.io](./docs/source/commands/commands.md#wz-new) project run the following command:
```sh
webezy new <YourProject>
```
> __Note__ you can create a new project based on template to get started quickly
Sample Python server (Clients are available both in TS + PY)
```sh
wz n <YourProject> --template @webezyio/SamplePy
```
Or the same resources just for Typescript server
```sh
wz n <YourProject> --template @webezyio/SampleTs
```
 - For more information see [Project Templating](./docs/source/templating.md)

Then you will need to navigate into your project

> __Note__ if you didnt specified the `--path` argument when creating new project by default it will create a project under your current directory

```sh
cd <YourProject>
```

After you are under the new project directory you can go ahead and [create webezy.io resources](./docs/source/commands/commands.md#wz-generate) with those simple commands:

> __Note__ Please note that every sub-command of `generate` and `new` can be shortend with the first letter e.g : `wz g p` is equivalent to `wz generate package`

```sh
# Generate new package to hold messages
webezy generate package
# Generate new service to hold RPC's (Methods)
webezy generate service
# Generate message under specified package
webezy generate message
# Generate RPC (Method) under specified service
# Same as running `wz g r`
webezy generate rpc
```
> __Note__ Make sure before creating new RPC on service that you have imported at least 1 package to be used by the service. for more information visit -> [Package Docs](https://www.webezy.io/docs/tutorials/import-packages)


After you had generated your resources for the project and modified the code (See the docs for more explanation on how to develop your project and make changes [Sample Project](https://www.webezy.io/docs/tutorials/sample-project)).

You can now [build your project](./docs/source/commands/commands.md#wz-build) and [run your server](./docs/source/commands/commands.md#wz-run) with those simple commands:

```sh
# First build your project
webezy build
# Then run the server
webezy run 
```

> __Note__ you can auto-build your resources if applicable straight when you are generating them with adding `--build` argument to `webezy generate` comands.

You can use now your client code that has been autogenerated in your specified language(s) on creating the project.

> __Pro-Tip:__ you can always make your commands even shorter with replacing `webezy` with `wz`

# CLI Usage

Get to know the commands supported by Webezy.io CLI and start to use their powers !
__All listed commands can be found here:__
[Webezy.io CLI API](./docs/source/commands/commands.md)

The webezyio CLI module is essantially a wrapper to the `Architect API` which is just to construct a well defined resource metadata which later on can be used by the `Builder API` to build all resources files (Code files & .proto files)

> __Note__ Each webezy.io CLI command can be called with the abbreviated `wz`

> __Note__ The CLI has verbose logging system that can be changed accoriding to your needs. we do recommand to keep it to ERROR as default to not overload you with multiple lines for each command - to change the default behaviour run your commands with `wz --loglevel DEBUG <sub-command>`

# Advanced Usage

There are more advanced use cases for Webezy.io which will probably will require some time to get used to Webezy.io structure and concepts to really have a useful and meaningful interaction.

__We do recommend to go over [Webezy.io Concepts](./docs/source/webezyio_concepts.md) before trying some advanced usage__

Some of the features are listed below:

- [Templating](./docs/source/templating.md) - Wrap your project and re-share them among team members or to your won base project templates into other future or existing Webezy.io projects.
- [Custom Configurations](./docs/source/custom_configurations.md) - Learn how to define custom configurations for a project to make your life easier.
- [Migration](./docs/source/commands/commands.md#wz-migrate) - You can now migrate your existing gRPC project to unified structure and resources of Webezy.io projects.
- [Extending Protobuf Functionality](./docs/source/extensions.md) - You can configure a custom extension for your resources.

# Batteries Included
Webezy.io goal is to make development lifecycles quick and meaningfull while coding a distrubted-system using state of the art technologies.

Some built-ins features are provided so you can jump-start your development right away:

- [Webezy.io Official VSCode Extension](https://marketplace.visualstudio.com/items?itemName=webezy.vscode-webezy) - See [docs]()

# Development

We are welcoming any code contribution and help to maintain and release new fetures as well documenting the library.

See our [contirbution page](./docs/source/contirbuting.md)

---
__Created with love by Amit Shmulevitch. 2022 © webezy.io__

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "webezyio",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "grpc,micro-services,cli,framework",
    "author": "",
    "author_email": "Amit Shmulevitch <amitsh1995@gmail.com>",
    "download_url": "",
    "platform": null,
    "description": "# webezy.io (webezyio)\n\n[![Downloads](https://pepy.tech/badge/webezyio)](https://pepy.tech/project/webezyio)\n\n[![Python 3.7](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/release/python-370/)\n\n[webezyio](https://www.webezy.io) is free and open-source project that aims to be a complete framework for developing micro-services projects.\nThe underlying communication protocol is [```HTTP2```](https://en.wikipedia.org/wiki/HTTP/2) and for serialization and deserialization is [```protobuf```](https://developers.google.com/protocol-buffers/docs/pythontutorial).\nIt utulize those communication protocol, message serialization / deserialization and code generator with [```gRPC```](https://grpc.io) open-source project by google. \n\nWebezy.io has been created to give devlopers quick and structerd way for building gRPC services without pain while keeping thins open for further modifications.\n\nIn result we are trying not to restrict the implemantations themselves but instead applying small restrictions on the project structure for well defined, re-usable structure that can be used by many languages and scenarios.\n\nThe current supported languages are:\n|                **Language**               | **Server** | **Client** |  **Status**  |\n|:-----------------------------------------:|:----------:|:----------:|:------------:|\n|     [Python](./docs/source/python.md)     |    **V**   |    **V**   |    Stable    |\n| [Typescript](./docs/source/typescript.md) |    **V**   |    **V**   |    Stable    |\n|         [Go](./docs/source/go.md)         |    **V**   |    **V**   | Experimental |\n| [Webpack-js](./docs/source/webpack-js.md) |     --     |    **V**   | Experimental |\n|                   C#.NET                  |    **X**   |    **X**   |    Planned   |\n\nGet full explanation and many more details on usage at [```webezy.io```](https://www.webezy.io).\n\nThe `webezyio CLI` is a wrapper for WebezyArchitect class which does mainly the processing and execution of creating webezy.jso file.\n\nYou can interact with the WebezyArchitect class with two main ways:\n\n- __CLI__ - The most common and easy to get you started creating gRPC services.\n- __Python API__ - Will be useful for more compehransive project creation flows and for developers who wants to understand how webezyio works.\n\n# Installation\nInstall from pip\n```sh\npip install webezyio\n```\n# Docs\n\nGo to [Webezy.io Docs](https://www.webezy.io/docs) for full explanation.\n\n__Useful Resources__:\n\n- [Awesome gRPC - A curated list of useful resources for gRPC](https://github.com/grpc-ecosystem/awesome-grpc)\n\n- [API Design Guide From Google - Matches well into gRPC specific design patterns](https://cloud.google.com/apis/design/)\n\n# Features:\n\n- __CLI__ Well structerd CLI wrapper to create, edit, run and debug a RPC call to gRPC services\n- __Generated Code__ Auto-Generated code classes for Services implemantations and client stubs\n    * [Python](./docs/source/languages/python.md)\n    * [Typescript](./docs/source/languages/typescript.md)\n    * [Go](./docs/source/languages/go.md)\n- __Plugins__ Highly pluggable API allow us to create and publish \"Extensions\" without breaking the code:\n    * Readme generator\n    * Languages Builder - (Python, Typescript & Go)\n    * Proto Builder\n    * Dockerize (In-development)\n    * Migrate gRPC services to Webezy.io project\n- __Templating__ As a Webezy.io project grows you can template it and share it to your peers for remote work (Branching) or as a 'Built-in' template to be used by other co-workers\n- __Unified Extensions__ We have been working on unification process of `Protobuf` Extensions (Calles Custom Options) which will allow us in the future to release more pluggable features directly into your Webezy.io workspace\n\n__Tutorials:__\n- [Quick Start](https://www.webezy.io/docs/quick-start)\n\n## Quick Start \n\n> __Note__ Please refer to [CLI docs](https://www.webezy.io/docs/cli) for any question you got, also make sute to use the CLI help `webezy --help` should give you an additional information on every command you may possibly run\n\nTo create a [new webezy.io](./docs/source/commands/commands.md#wz-new) project run the following command:\n```sh\nwebezy new <YourProject>\n```\n> __Note__ you can create a new project based on template to get started quickly\nSample Python server (Clients are available both in TS + PY)\n```sh\nwz n <YourProject> --template @webezyio/SamplePy\n```\nOr the same resources just for Typescript server\n```sh\nwz n <YourProject> --template @webezyio/SampleTs\n```\n - For more information see [Project Templating](./docs/source/templating.md)\n\nThen you will need to navigate into your project\n\n> __Note__ if you didnt specified the `--path` argument when creating new project by default it will create a project under your current directory\n\n```sh\ncd <YourProject>\n```\n\nAfter you are under the new project directory you can go ahead and [create webezy.io resources](./docs/source/commands/commands.md#wz-generate) with those simple commands:\n\n> __Note__ Please note that every sub-command of `generate` and `new` can be shortend with the first letter e.g : `wz g p` is equivalent to `wz generate package`\n\n```sh\n# Generate new package to hold messages\nwebezy generate package\n# Generate new service to hold RPC's (Methods)\nwebezy generate service\n# Generate message under specified package\nwebezy generate message\n# Generate RPC (Method) under specified service\n# Same as running `wz g r`\nwebezy generate rpc\n```\n> __Note__ Make sure before creating new RPC on service that you have imported at least 1 package to be used by the service. for more information visit -> [Package Docs](https://www.webezy.io/docs/tutorials/import-packages)\n\n\nAfter you had generated your resources for the project and modified the code (See the docs for more explanation on how to develop your project and make changes [Sample Project](https://www.webezy.io/docs/tutorials/sample-project)).\n\nYou can now [build your project](./docs/source/commands/commands.md#wz-build) and [run your server](./docs/source/commands/commands.md#wz-run) with those simple commands:\n\n```sh\n# First build your project\nwebezy build\n# Then run the server\nwebezy run \n```\n\n> __Note__ you can auto-build your resources if applicable straight when you are generating them with adding `--build` argument to `webezy generate` comands.\n\nYou can use now your client code that has been autogenerated in your specified language(s) on creating the project.\n\n> __Pro-Tip:__ you can always make your commands even shorter with replacing `webezy` with `wz`\n\n# CLI Usage\n\nGet to know the commands supported by Webezy.io CLI and start to use their powers !\n__All listed commands can be found here:__\n[Webezy.io CLI API](./docs/source/commands/commands.md)\n\nThe webezyio CLI module is essantially a wrapper to the `Architect API` which is just to construct a well defined resource metadata which later on can be used by the `Builder API` to build all resources files (Code files & .proto files)\n\n> __Note__ Each webezy.io CLI command can be called with the abbreviated `wz`\n\n> __Note__ The CLI has verbose logging system that can be changed accoriding to your needs. we do recommand to keep it to ERROR as default to not overload you with multiple lines for each command - to change the default behaviour run your commands with `wz --loglevel DEBUG <sub-command>`\n\n# Advanced Usage\n\nThere are more advanced use cases for Webezy.io which will probably will require some time to get used to Webezy.io structure and concepts to really have a useful and meaningful interaction.\n\n__We do recommend to go over [Webezy.io Concepts](./docs/source/webezyio_concepts.md) before trying some advanced usage__\n\nSome of the features are listed below:\n\n- [Templating](./docs/source/templating.md) - Wrap your project and re-share them among team members or to your won base project templates into other future or existing Webezy.io projects.\n- [Custom Configurations](./docs/source/custom_configurations.md) - Learn how to define custom configurations for a project to make your life easier.\n- [Migration](./docs/source/commands/commands.md#wz-migrate) - You can now migrate your existing gRPC project to unified structure and resources of Webezy.io projects.\n- [Extending Protobuf Functionality](./docs/source/extensions.md) - You can configure a custom extension for your resources.\n\n# Batteries Included\nWebezy.io goal is to make development lifecycles quick and meaningfull while coding a distrubted-system using state of the art technologies.\n\nSome built-ins features are provided so you can jump-start your development right away:\n\n- [Webezy.io Official VSCode Extension](https://marketplace.visualstudio.com/items?itemName=webezy.vscode-webezy) - See [docs]()\n\n# Development\n\nWe are welcoming any code contribution and help to maintain and release new fetures as well documenting the library.\n\nSee our [contirbution page](./docs/source/contirbuting.md)\n\n---\n__Created with love by Amit Shmulevitch. 2022 \u00a9 webezy.io__\n",
    "bugtrack_url": null,
    "license": "Copyright (c) 2022 Webezy.io.  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
    "summary": "Webezy.io CLI for generating gRPC micro-services",
    "version": "0.1.9",
    "split_keywords": [
        "grpc",
        "micro-services",
        "cli",
        "framework"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0738375e569c45c80ce8e6852e3791d965890c82eff421d00d2897e18f444448",
                "md5": "2d9ef988fa2e055fff1947a2b67170f7",
                "sha256": "48408e006b66903b727d1437b40dbe1c301d1a4cff487490defd11cc3199317f"
            },
            "downloads": -1,
            "filename": "webezyio-0.1.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2d9ef988fa2e055fff1947a2b67170f7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 318964,
            "upload_time": "2023-02-04T15:00:51",
            "upload_time_iso_8601": "2023-02-04T15:00:51.330688Z",
            "url": "https://files.pythonhosted.org/packages/07/38/375e569c45c80ce8e6852e3791d965890c82eff421d00d2897e18f444448/webezyio-0.1.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-02-04 15:00:51",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "webezyio"
}
        
Elapsed time: 0.03685s