nanopb 0.4.9.dev1479__tar.gz → 0.4.9.dev1483__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/PKG-INFO +1 -1
  2. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/nanopb_generator.py +31 -0
  3. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/proto/__init__.py +1 -3
  4. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/proto/__pycache__/__init__.cpython-38.pyc +0 -0
  5. nanopb-0.4.9.dev1483/nanopb/generator/proto/__pycache__/_utils.cpython-38.pyc +0 -0
  6. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/proto/_utils.py +10 -2
  7. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/proto/nanopb.proto +3 -0
  8. nanopb-0.4.9.dev1483/nanopb/generator/proto/nanopb_pb2.py +36 -0
  9. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/pyproject.toml +1 -1
  10. nanopb-0.4.9.dev1479/nanopb/generator/proto/__pycache__/_utils.cpython-38.pyc +0 -0
  11. nanopb-0.4.9.dev1479/nanopb/generator/proto/nanopb_pb2.py +0 -36
  12. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/README.md +0 -0
  13. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/__init__.py +0 -0
  14. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/__init__.py +0 -0
  15. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/nanopb_generator +0 -0
  16. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/nanopb_generator.bat +0 -0
  17. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/nanopb_generator.py2 +0 -0
  18. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/platformio_generator.py +0 -0
  19. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/proto/Makefile +0 -0
  20. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/proto/google/protobuf/descriptor.proto +0 -0
  21. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/protoc +0 -0
  22. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/protoc-gen-nanopb +0 -0
  23. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/protoc-gen-nanopb-py2 +0 -0
  24. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/protoc-gen-nanopb.bat +0 -0
  25. {nanopb-0.4.9.dev1479 → nanopb-0.4.9.dev1483}/nanopb/generator/protoc.bat +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nanopb
3
- Version: 0.4.9.dev1479
3
+ Version: 0.4.9.dev1483
4
4
  Summary: Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system.
5
5
  Home-page: https://jpa.kapsi.fi/nanopb/
6
6
  License: Zlib
@@ -520,6 +520,11 @@ class Enum(ProtoElement):
520
520
  Globals.naming_style.func_name('%s_name' % self.names),
521
521
  Globals.naming_style.type_name(self.names))
522
522
 
523
+ if self.options.enum_validate:
524
+ result += 'bool %s(%s v);\n' % (
525
+ Globals.naming_style.func_name('%s_valid' % self.names),
526
+ Globals.naming_style.type_name(self.names))
527
+
523
528
  return result
524
529
 
525
530
  def enum_to_string_definition(self):
@@ -545,6 +550,28 @@ class Enum(ProtoElement):
545
550
 
546
551
  return result
547
552
 
553
+ def enum_validate(self):
554
+ if not self.options.enum_validate:
555
+ return ""
556
+
557
+ result = 'bool %s(%s v) {\n' % (
558
+ Globals.naming_style.func_name('%s_valid' % self.names),
559
+ Globals.naming_style.type_name(self.names))
560
+
561
+ result += ' switch (v) {\n'
562
+
563
+ for (enumname, _) in self.values:
564
+ result += ' case %s: return true;\n' % (
565
+ Globals.naming_style.enum_entry(enumname)
566
+ )
567
+
568
+ result += ' }\n'
569
+ result += ' return false;\n'
570
+ result += '}\n'
571
+
572
+ return result
573
+
574
+
548
575
  class FieldMaxSize:
549
576
  def __init__(self, worst = 0, checks = [], field_name = 'undefined'):
550
577
  if isinstance(worst, list):
@@ -2234,6 +2261,10 @@ class ProtoFile:
2234
2261
  for enum in self.enums:
2235
2262
  yield enum.enum_to_string_definition() + '\n'
2236
2263
 
2264
+ # Generate enum_valid function if enum_valid option is defined
2265
+ for enum in self.enums:
2266
+ yield enum.enum_validate() + '\n'
2267
+
2237
2268
  # Add checks for numeric limits
2238
2269
  if self.messages:
2239
2270
  largest_msg = max(self.messages, key = lambda m: m.count_required_fields())
@@ -7,7 +7,6 @@ import sys
7
7
  import tempfile
8
8
  import shutil
9
9
  import traceback
10
- import pkg_resources
11
10
  from ._utils import has_grpcio_protoc, invoke_protoc, print_versions
12
11
 
13
12
  # Compatibility layer to make TemporaryDirectory() available on Python 2.
@@ -42,8 +41,7 @@ def build_nanopb_proto(protosrc, dirname):
42
41
  if has_grpcio_protoc():
43
42
  # grpcio-tools has an extra CLI argument
44
43
  # from grpc.tools.protoc __main__ invocation.
45
- _builtin_proto_include = pkg_resources.resource_filename('grpc_tools', '_proto')
46
- cmd.append("-I={}".format(_builtin_proto_include))
44
+ cmd.append("-I={}".format(_utils.get_grpc_tools_proto_path()))
47
45
 
48
46
  try:
49
47
  invoke_protoc(argv=cmd)
@@ -17,6 +17,15 @@ def has_grpcio_protoc(verbose = False):
17
17
 
18
18
  return True
19
19
 
20
+ def get_grpc_tools_proto_path():
21
+ if sys.hexversion > 0x03090000:
22
+ import importlib.resources as ir
23
+ with ir.as_file(ir.files('grpc_tools') / '_proto') as path:
24
+ return str(path)
25
+ else:
26
+ import pkg_resources
27
+ return pkg_resources.resource_filename('grpc_tools', '_proto')
28
+
20
29
  def get_proto_builtin_include_path():
21
30
  """Find include path for standard google/protobuf includes and for
22
31
  nanopb.proto.
@@ -36,8 +45,7 @@ def get_proto_builtin_include_path():
36
45
  ]
37
46
 
38
47
  if has_grpcio_protoc():
39
- import pkg_resources
40
- paths.append(pkg_resources.resource_filename('grpc_tools', '_proto'))
48
+ paths.append(get_grpc_tools_proto_path())
41
49
 
42
50
  return paths
43
51
 
@@ -97,6 +97,9 @@ message NanoPBOptions {
97
97
  // Generate an enum->string mapping function (can take up lots of space).
98
98
  optional bool enum_to_string = 13 [default = false];
99
99
 
100
+ // Generate validation methods for enums
101
+ optional bool enum_validate = 32 [default = false];
102
+
100
103
  // Generate bytes arrays with fixed length
101
104
  optional bool fixed_length = 15 [default = false];
102
105
 
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: nanopb.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cnanopb.proto\x1a google/protobuf/descriptor.proto\"\x9c\x08\n\rNanoPBOptions\x12\x10\n\x08max_size\x18\x01 \x01(\x05\x12\x12\n\nmax_length\x18\x0e \x01(\x05\x12\x11\n\tmax_count\x18\x02 \x01(\x05\x12&\n\x08int_size\x18\x07 \x01(\x0e\x32\x08.IntSize:\nIS_DEFAULT\x12$\n\x04type\x18\x03 \x01(\x0e\x32\n.FieldType:\nFT_DEFAULT\x12\x18\n\nlong_names\x18\x04 \x01(\x08:\x04true\x12\x1c\n\rpacked_struct\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x1a\n\x0bpacked_enum\x18\n \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0cskip_message\x18\x06 \x01(\x08:\x05\x66\x61lse\x12\x18\n\tno_unions\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\r\n\x05msgid\x18\t \x01(\r\x12\x1e\n\x0f\x61nonymous_oneof\x18\x0b \x01(\x08:\x05\x66\x61lse\x12\x15\n\x06proto3\x18\x0c \x01(\x08:\x05\x66\x61lse\x12#\n\x14proto3_singular_msgs\x18\x15 \x01(\x08:\x05\x66\x61lse\x12\x1d\n\x0e\x65num_to_string\x18\r \x01(\x08:\x05\x66\x61lse\x12\x1c\n\renum_validate\x18 \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0c\x66ixed_length\x18\x0f \x01(\x08:\x05\x66\x61lse\x12\x1a\n\x0b\x66ixed_count\x18\x10 \x01(\x08:\x05\x66\x61lse\x12\x1e\n\x0fsubmsg_callback\x18\x16 \x01(\x08:\x05\x66\x61lse\x12/\n\x0cmangle_names\x18\x11 \x01(\x0e\x32\x11.TypenameMangling:\x06M_NONE\x12(\n\x11\x63\x61llback_datatype\x18\x12 \x01(\t:\rpb_callback_t\x12\x34\n\x11\x63\x61llback_function\x18\x13 \x01(\t:\x19pb_default_field_callback\x12\x30\n\x0e\x64\x65scriptorsize\x18\x14 \x01(\x0e\x32\x0f.DescriptorSize:\x07\x44S_AUTO\x12\x1a\n\x0b\x64\x65\x66\x61ult_has\x18\x17 \x01(\x08:\x05\x66\x61lse\x12\x0f\n\x07include\x18\x18 \x03(\t\x12\x0f\n\x07\x65xclude\x18\x1a \x03(\t\x12\x0f\n\x07package\x18\x19 \x01(\t\x12\x41\n\rtype_override\x18\x1b \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.Type\x12\x43\n\x0elabel_override\x18\x1f \x01(\x0e\x32+.google.protobuf.FieldDescriptorProto.Label\x12\x19\n\x0bsort_by_tag\x18\x1c \x01(\x08:\x04true\x12.\n\rfallback_type\x18\x1d \x01(\x0e\x32\n.FieldType:\x0b\x46T_CALLBACK\x12\x13\n\x0binitializer\x18\x1e \x01(\t*i\n\tFieldType\x12\x0e\n\nFT_DEFAULT\x10\x00\x12\x0f\n\x0b\x46T_CALLBACK\x10\x01\x12\x0e\n\nFT_POINTER\x10\x04\x12\r\n\tFT_STATIC\x10\x02\x12\r\n\tFT_IGNORE\x10\x03\x12\r\n\tFT_INLINE\x10\x05*D\n\x07IntSize\x12\x0e\n\nIS_DEFAULT\x10\x00\x12\x08\n\x04IS_8\x10\x08\x12\t\n\x05IS_16\x10\x10\x12\t\n\x05IS_32\x10 \x12\t\n\x05IS_64\x10@*Z\n\x10TypenameMangling\x12\n\n\x06M_NONE\x10\x00\x12\x13\n\x0fM_STRIP_PACKAGE\x10\x01\x12\r\n\tM_FLATTEN\x10\x02\x12\x16\n\x12M_PACKAGE_INITIALS\x10\x03*E\n\x0e\x44\x65scriptorSize\x12\x0b\n\x07\x44S_AUTO\x10\x00\x12\x08\n\x04\x44S_1\x10\x01\x12\x08\n\x04\x44S_2\x10\x02\x12\x08\n\x04\x44S_4\x10\x04\x12\x08\n\x04\x44S_8\x10\x08:E\n\x0enanopb_fileopt\x12\x1c.google.protobuf.FileOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:G\n\rnanopb_msgopt\x12\x1f.google.protobuf.MessageOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:E\n\x0enanopb_enumopt\x12\x1c.google.protobuf.EnumOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:>\n\x06nanopb\x12\x1d.google.protobuf.FieldOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptionsB\x1a\n\x18\x66i.kapsi.koti.jpa.nanopb')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'nanopb_pb2', _globals)
23
+ if not _descriptor._USE_C_DESCRIPTORS:
24
+ _globals['DESCRIPTOR']._loaded_options = None
25
+ _globals['DESCRIPTOR']._serialized_options = b'\n\030fi.kapsi.koti.jpa.nanopb'
26
+ _globals['_FIELDTYPE']._serialized_start=1105
27
+ _globals['_FIELDTYPE']._serialized_end=1210
28
+ _globals['_INTSIZE']._serialized_start=1212
29
+ _globals['_INTSIZE']._serialized_end=1280
30
+ _globals['_TYPENAMEMANGLING']._serialized_start=1282
31
+ _globals['_TYPENAMEMANGLING']._serialized_end=1372
32
+ _globals['_DESCRIPTORSIZE']._serialized_start=1374
33
+ _globals['_DESCRIPTORSIZE']._serialized_end=1443
34
+ _globals['_NANOPBOPTIONS']._serialized_start=51
35
+ _globals['_NANOPBOPTIONS']._serialized_end=1103
36
+ # @@protoc_insertion_point(module_scope)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "nanopb"
3
- version = "0.4.9-dev1479"
3
+ version = "0.4.9-dev1483"
4
4
  description = "Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system."
5
5
  authors = ["Petteri Aimonen <jpa@npb.mail.kapsi.fi>"]
6
6
  license = "Zlib"
@@ -1,36 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: nanopb.proto
4
- # Protobuf Python Version: 5.26.1
5
- """Generated protocol buffer code."""
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- from google.protobuf.internal import builder as _builder
10
- # @@protoc_insertion_point(imports)
11
-
12
- _sym_db = _symbol_database.Default()
13
-
14
-
15
- from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
16
-
17
-
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0cnanopb.proto\x1a google/protobuf/descriptor.proto\"\xfe\x07\n\rNanoPBOptions\x12\x10\n\x08max_size\x18\x01 \x01(\x05\x12\x12\n\nmax_length\x18\x0e \x01(\x05\x12\x11\n\tmax_count\x18\x02 \x01(\x05\x12&\n\x08int_size\x18\x07 \x01(\x0e\x32\x08.IntSize:\nIS_DEFAULT\x12$\n\x04type\x18\x03 \x01(\x0e\x32\n.FieldType:\nFT_DEFAULT\x12\x18\n\nlong_names\x18\x04 \x01(\x08:\x04true\x12\x1c\n\rpacked_struct\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x1a\n\x0bpacked_enum\x18\n \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0cskip_message\x18\x06 \x01(\x08:\x05\x66\x61lse\x12\x18\n\tno_unions\x18\x08 \x01(\x08:\x05\x66\x61lse\x12\r\n\x05msgid\x18\t \x01(\r\x12\x1e\n\x0f\x61nonymous_oneof\x18\x0b \x01(\x08:\x05\x66\x61lse\x12\x15\n\x06proto3\x18\x0c \x01(\x08:\x05\x66\x61lse\x12#\n\x14proto3_singular_msgs\x18\x15 \x01(\x08:\x05\x66\x61lse\x12\x1d\n\x0e\x65num_to_string\x18\r \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x0c\x66ixed_length\x18\x0f \x01(\x08:\x05\x66\x61lse\x12\x1a\n\x0b\x66ixed_count\x18\x10 \x01(\x08:\x05\x66\x61lse\x12\x1e\n\x0fsubmsg_callback\x18\x16 \x01(\x08:\x05\x66\x61lse\x12/\n\x0cmangle_names\x18\x11 \x01(\x0e\x32\x11.TypenameMangling:\x06M_NONE\x12(\n\x11\x63\x61llback_datatype\x18\x12 \x01(\t:\rpb_callback_t\x12\x34\n\x11\x63\x61llback_function\x18\x13 \x01(\t:\x19pb_default_field_callback\x12\x30\n\x0e\x64\x65scriptorsize\x18\x14 \x01(\x0e\x32\x0f.DescriptorSize:\x07\x44S_AUTO\x12\x1a\n\x0b\x64\x65\x66\x61ult_has\x18\x17 \x01(\x08:\x05\x66\x61lse\x12\x0f\n\x07include\x18\x18 \x03(\t\x12\x0f\n\x07\x65xclude\x18\x1a \x03(\t\x12\x0f\n\x07package\x18\x19 \x01(\t\x12\x41\n\rtype_override\x18\x1b \x01(\x0e\x32*.google.protobuf.FieldDescriptorProto.Type\x12\x43\n\x0elabel_override\x18\x1f \x01(\x0e\x32+.google.protobuf.FieldDescriptorProto.Label\x12\x19\n\x0bsort_by_tag\x18\x1c \x01(\x08:\x04true\x12.\n\rfallback_type\x18\x1d \x01(\x0e\x32\n.FieldType:\x0b\x46T_CALLBACK\x12\x13\n\x0binitializer\x18\x1e \x01(\t*i\n\tFieldType\x12\x0e\n\nFT_DEFAULT\x10\x00\x12\x0f\n\x0b\x46T_CALLBACK\x10\x01\x12\x0e\n\nFT_POINTER\x10\x04\x12\r\n\tFT_STATIC\x10\x02\x12\r\n\tFT_IGNORE\x10\x03\x12\r\n\tFT_INLINE\x10\x05*D\n\x07IntSize\x12\x0e\n\nIS_DEFAULT\x10\x00\x12\x08\n\x04IS_8\x10\x08\x12\t\n\x05IS_16\x10\x10\x12\t\n\x05IS_32\x10 \x12\t\n\x05IS_64\x10@*Z\n\x10TypenameMangling\x12\n\n\x06M_NONE\x10\x00\x12\x13\n\x0fM_STRIP_PACKAGE\x10\x01\x12\r\n\tM_FLATTEN\x10\x02\x12\x16\n\x12M_PACKAGE_INITIALS\x10\x03*E\n\x0e\x44\x65scriptorSize\x12\x0b\n\x07\x44S_AUTO\x10\x00\x12\x08\n\x04\x44S_1\x10\x01\x12\x08\n\x04\x44S_2\x10\x02\x12\x08\n\x04\x44S_4\x10\x04\x12\x08\n\x04\x44S_8\x10\x08:E\n\x0enanopb_fileopt\x12\x1c.google.protobuf.FileOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:G\n\rnanopb_msgopt\x12\x1f.google.protobuf.MessageOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:E\n\x0enanopb_enumopt\x12\x1c.google.protobuf.EnumOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptions:>\n\x06nanopb\x12\x1d.google.protobuf.FieldOptions\x18\xf2\x07 \x01(\x0b\x32\x0e.NanoPBOptionsB\x1a\n\x18\x66i.kapsi.koti.jpa.nanopb')
19
-
20
- _globals = globals()
21
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'nanopb_pb2', _globals)
23
- if not _descriptor._USE_C_DESCRIPTORS:
24
- _globals['DESCRIPTOR']._loaded_options = None
25
- _globals['DESCRIPTOR']._serialized_options = b'\n\030fi.kapsi.koti.jpa.nanopb'
26
- _globals['_FIELDTYPE']._serialized_start=1075
27
- _globals['_FIELDTYPE']._serialized_end=1180
28
- _globals['_INTSIZE']._serialized_start=1182
29
- _globals['_INTSIZE']._serialized_end=1250
30
- _globals['_TYPENAMEMANGLING']._serialized_start=1252
31
- _globals['_TYPENAMEMANGLING']._serialized_end=1342
32
- _globals['_DESCRIPTORSIZE']._serialized_start=1344
33
- _globals['_DESCRIPTORSIZE']._serialized_end=1413
34
- _globals['_NANOPBOPTIONS']._serialized_start=51
35
- _globals['_NANOPBOPTIONS']._serialized_end=1073
36
- # @@protoc_insertion_point(module_scope)
File without changes