Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
8218475
Initial commit
neelam-kushwah Oct 19, 2023
a79fd5f
Update README.md
neelam-kushwah Oct 19, 2023
c45ed2f
Replaced README markdown file with an Ascii doc file
neelam-kushwah Oct 19, 2023
ec824f0
Added copyright in rpc module and optimized imports
neelam-kushwah Oct 20, 2023
c10de3a
Added Short Uri Format
neelam-kushwah Oct 23, 2023
57dda20
Removed Short Uri Serializer
neelam-kushwah Oct 23, 2023
3666895
Updated rcpmapper.py
neelam-kushwah Oct 23, 2023
426a1ad
Added legal docs
neelam-kushwah Oct 24, 2023
80bafe7
Fix cloud event interoperability issue
neelam-kushwah Oct 25, 2023
deb9700
Add method and class comments to the cloudevent package
neelam-kushwah Oct 25, 2023
b36c2f1
Add method and class comments to the rpc package
neelam-kushwah Oct 25, 2023
434e1da
Add method and class comments to transport package
neelam-kushwah Oct 25, 2023
3749a98
Add method and class comments to the uri and uuid package
neelam-kushwah Oct 26, 2023
544e0d1
Removed UUri data model and implemented uuri proto class
neelam-kushwah Oct 30, 2023
39ae6e1
Updated uuri proto
neelam-kushwah Oct 31, 2023
cb01884
Fixed issue by changing condition from or to and in entity and resour…
neelam-kushwah Oct 31, 2023
b338987
Reformat files
neelam-kushwah Oct 31, 2023
18cf8a2
Update the logic to validate the rpc method
neelam-kushwah Nov 1, 2023
211c9cb
Fix micro serializer issue and remove factory classes for uuri datamodel
neelam-kushwah Nov 3, 2023
799671e
Align it with 1.5.1 uprotocol-java
neelam-kushwah Nov 15, 2023
73b05b8
Added uri test cases
neelam-kushwah Nov 16, 2023
8eead12
Add few more long uri serializer test cases
neelam-kushwah Nov 16, 2023
f6b99e2
Fix all issues in long and micro uri serializer
neelam-kushwah Nov 16, 2023
df88fdf
Complete URI module testing, add test cases, and fix bugs
neelam-kushwah Nov 17, 2023
6501705
Move to core-api UPayload data model
neelam-kushwah Nov 21, 2023
56fd1ee
Replace google.rpc.* with UStatus & UCode and add few test cases
neelam-kushwah Nov 22, 2023
ef46458
Bug fixes
neelam-kushwah Nov 22, 2023
a21ffda
Add few more test cases
neelam-kushwah Nov 23, 2023
2878093
Add test cases for uuid module
neelam-kushwah Nov 23, 2023
25dd59f
Add clean_project script for cleaning build artifacts
neelam-kushwah Nov 23, 2023
09132a5
Address review comments
neelam-kushwah Nov 23, 2023
ca58700
Add test cases for transport module
neelam-kushwah Nov 24, 2023
c1d6adb
Add test cases for the Calloption class
neelam-kushwah Nov 24, 2023
50b727f
Add test cases for RpcResult class and fix bugs discovered while testing
neelam-kushwah Nov 24, 2023
2e34cd7
Rename test classes according to the Python standard.
neelam-kushwah Nov 24, 2023
832d0a4
Add few more test cases and fix bugs identified while testing
neelam-kushwah Nov 28, 2023
923d8c2
Bug fix
neelam-kushwah Nov 28, 2023
eb86e39
Add cloudevent to protobuf serializer
neelam-kushwah Nov 29, 2023
0844fb5
Add Readme files
neelam-kushwah Nov 30, 2023
fbf1094
Update Readme file
neelam-kushwah Nov 30, 2023
534b5f5
Add rpc read me reference in main read me doc
neelam-kushwah Nov 30, 2023
9a60a76
Adding .vscode to gitignore
Nov 30, 2023
728877c
Rename folders
neelam-kushwah Nov 30, 2023
be96dd6
Fix link in read me file
neelam-kushwah Nov 30, 2023
6f6889a
Document clean and test and add file to gitignore
Dec 1, 2023
e194a00
Remove all warnings
neelam-kushwah Dec 1, 2023
dbc6b41
Remove all print statements from test folder
neelam-kushwah Dec 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.idea/
**/__pycache__/
**/build/
**/dist/
**/*.egg-info/
**/.DS_Store
.vscode
.coverage
36 changes: 36 additions & 0 deletions CONTRIBUTING.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
= Contributing to Eclipse uProtocol

Thanks for your interest in this project. Contributions are welcome!

== Developer resources

Information regarding source code management, builds, coding standards, and
more.

https://projects.eclipse.org/proposals/eclipse-uprotocol

The project maintains the following source code repositories

* https://github.com/eclipse-uprotocol

== Eclipse Contributor Agreement

Before your contribution can be accepted by the project team contributors must
electronically sign the Eclipse Contributor Agreement (ECA).

* http://www.eclipse.org/legal/ECA.php

Commits that are provided by non-committers must have a Signed-off-by field in
the footer indicating that the author is aware of the terms by which the
contribution has been provided to the project. The non-committer must
additionally have an Eclipse Foundation account and must have a signed Eclipse
Contributor Agreement (ECA) on file.

For more information, please see the Eclipse Committer Handbook:
https://www.eclipse.org/projects/handbook/#resources-commit

== Contact

Contact the project developers via the project's "dev" list.

* https://accounts.eclipse.org/mailing-list/uprotocol-dev
10 changes: 10 additions & 0 deletions CONTRIBUTORS.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
= Eclipse uProtocol Contributors

These are the contributors to Eclipse uProtocol Python SDK

|===
| GitHub username | Name

|https://github.com/neelam-kushwah[neelam-kushwah] |Neelam Kushwah

|===
201 changes: 201 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
33 changes: 33 additions & 0 deletions NOTICE.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
= Notices for Eclipse uProtocol

This content is produced and maintained by the Eclipse uProtocol project.

* Project home: https://projects.eclipse.org/projects/automotive.uprotocol

== Trademarks

Eclipse uProtocol is trademark of the Eclipse Foundation.
Eclipse, and the Eclipse Logo are registered trademarks of the Eclipse Foundation.

== Copyright

All content is the property of the respective authors or their employers.
For more information regarding authorship of content, please consult the
listed source code repository logs.

== Declared Project Licenses

This program and the accompanying materials are made available under the
terms of the or the Apache License, Version 2.0
which is available at https://www.apache.org/licenses/LICENSE-2.0.

SPDX-License-Identifier: Apache-2.0

== Third-party Content

The following are libraries that uProtocol project uses:

* http://cloudevents.io
* http://protobuf.dev

NOTE: Please refer to link:setup.cfg[] for more information of library dependencies
86 changes: 86 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
= Eclipse uProtocol Python Library
:toc:

== Overview

This library implements the https://github.com/eclipse-uprotocol/uprotocol-spec/blob/main/languages.adoc[uProtocol Language Specific Library Requirements] for Python defined in https://github.com/eclipse-uprotocol/uprotocol-spec/tree/main[uProtocol Specifications]. The library is organized into packages that are described in <<sdk-packages>> below. Each package contains a README.adoc file that describes the purpose of the package and how to use it.

The module contains the factory methods, serializers, and validators for all data types defined in the specifications, and any data models that either haven't or couldn't be defined in uprotocol-core-api yet (ex. UPayload) This library fits into the big picture of the uProtocol SDK as seen in <<uprotocol-sdk>> below.

.uProtocol SDK
image:https://raw.githubusercontent.com/eclipse-uprotocol/uprotocol-spec/main/uprotocol_sdk.drawio.svg[#uprotocol-sdk,width=100%,align="center"]


== Getting Started

=== Importing the sdk

Setup SDK local repository and install
[source]
----
$ git clone https://github.com/eclipse-uprotocol/uprotocol-python.git
$ cd uprotocol-python
$ pip install .
----
*This will install the uprotocol-python, making its classes and modules available for import in your python code.*


=== Using The Sdk

The SDK is broken up into different packages that are described in <<sdk-packages>> below. Each package contains a README.adoc file that describes the purpose of the package and how to use it. Packages are organized into the following directories:

.Package Folders
[#pkg-folders,width=100%,cols="20%,80%",options="header"]
|===

| Folder | Purpose

| `*builder*` or `*factory*`
| Contains factory methods for creating uProtocol data types

| `*serializer*`
| Contains serializers to convert the objects into byte or string form representation of said object

| `*validator*`
| Contains validators to validate the data types and report errors if the objects are missing or incorrect

|===


.SDK Packages
[#sdk-packages,width=100%,cols="20%,80%",options="header"]
|===

| Package | Purpose

| link:uprotocol/uri/README.adoc[`*uuri*`]
| Uniform Resource Identifier (RFC3986), how uProtocol addresses things (devices, software, methods, topics, etc...) on the network

| link:uprotocol/uuid/README.adoc[`*uuid*`]
| Identifier used to uniquely identify (and timestamp) messages that are sent

| link:uprotocol/rpc/README.adoc[`*rpc*`]
| Interface to build client and service stubs for uServices. This interface is then implemented by https://github.com/eclipse-uprotocol/uprotocol-spec/blob/main/up-l2/rpcclient.adoc[RpcClient interface]

| link:uprotocol/transport/README.adoc[`*utransport*`]
| Interface and data model declaration used for bidirectional point-2-point communication between uEs. This interface is then implemented by https://github.com/eclipse-uprotocol/uprotocol-spec/blob/main/ulink.adoc[ulink] libraries for a given underlining transport (ex. Binder, MQTT, Zenoh, SOME/IP, DDS, HTTP, etc…​)

| link:uprotocol/cloudevent/README.adoc[`*cloudevent*`]
| Common way to represent uProtocol messages using CloudEvent data model used by some transports (ex. MQTT, HTTP, etc…​)

|===

NOTE: Please visit the READMEs in <<sdk-packages>> for examples of how to use the different data types and their factories, validators, and serializers.


=== Cleaning Up

Clean up by running the command:
`python clean_project.py`

=== Running the Tests

Requires coverage to be installed first, that can be done by running `pip install coverage`

then you run:
`python -m coverage run --source tests/ -m unittest discover`
2 changes: 0 additions & 2 deletions README.md

This file was deleted.

Loading