flwr-nightly 1.9.0.dev20240420__tar.gz → 1.9.0.dev20240422__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.

Potentially problematic release.


This version of flwr-nightly might be problematic. Click here for more details.

Files changed (211) hide show
  1. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/PKG-INFO +1 -1
  2. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/pyproject.toml +2 -8
  3. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/supernode/app.py +16 -4
  4. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/compat/app.py +2 -2
  5. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/compat/driver_client_proxy.py +1 -1
  6. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/driver/__init__.py +3 -0
  7. flwr_nightly-1.9.0.dev20240420/src/py/flwr/server/driver/driver.py → flwr_nightly-1.9.0.dev20240422/src/py/flwr/server/driver/grpc_driver.py +8 -72
  8. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/run_serverapp.py +4 -4
  9. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/simulation/run_simulation.py +2 -2
  10. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/LICENSE +0 -0
  11. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/README.md +0 -0
  12. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/__init__.py +0 -0
  13. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/__init__.py +0 -0
  14. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/app.py +0 -0
  15. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/config_utils.py +0 -0
  16. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/example.py +0 -0
  17. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/__init__.py +0 -0
  18. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/new.py +0 -0
  19. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/__init__.py +0 -0
  20. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/.gitignore.tpl +0 -0
  21. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/README.md.tpl +0 -0
  22. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/__init__.py +0 -0
  23. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/__init__.py +0 -0
  24. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/__init__.py.tpl +0 -0
  25. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/client.numpy.py.tpl +0 -0
  26. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/client.pytorch.py.tpl +0 -0
  27. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/client.tensorflow.py.tpl +0 -0
  28. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/server.numpy.py.tpl +0 -0
  29. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/server.pytorch.py.tpl +0 -0
  30. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/server.tensorflow.py.tpl +0 -0
  31. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/code/task.pytorch.py.tpl +0 -0
  32. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/pyproject.numpy.toml.tpl +0 -0
  33. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/pyproject.pytorch.toml.tpl +0 -0
  34. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/new/templates/app/pyproject.tensorflow.toml.tpl +0 -0
  35. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/run/__init__.py +0 -0
  36. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/run/run.py +0 -0
  37. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/cli/utils.py +0 -0
  38. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/__init__.py +0 -0
  39. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/app.py +0 -0
  40. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/client.py +0 -0
  41. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/client_app.py +0 -0
  42. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/dpfedavg_numpy_client.py +0 -0
  43. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/grpc_client/__init__.py +0 -0
  44. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/grpc_client/connection.py +0 -0
  45. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/grpc_rere_client/__init__.py +0 -0
  46. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/grpc_rere_client/connection.py +0 -0
  47. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/heartbeat.py +0 -0
  48. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/message_handler/__init__.py +0 -0
  49. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/message_handler/message_handler.py +0 -0
  50. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/message_handler/task_handler.py +0 -0
  51. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/__init__.py +0 -0
  52. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/centraldp_mods.py +0 -0
  53. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/comms_mods.py +0 -0
  54. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/localdp_mod.py +0 -0
  55. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/secure_aggregation/__init__.py +0 -0
  56. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/secure_aggregation/secagg_mod.py +0 -0
  57. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/secure_aggregation/secaggplus_mod.py +0 -0
  58. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/mod/utils.py +0 -0
  59. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/node_state.py +0 -0
  60. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/node_state_tests.py +0 -0
  61. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/numpy_client.py +0 -0
  62. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/rest_client/__init__.py +0 -0
  63. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/rest_client/connection.py +0 -0
  64. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/supernode/__init__.py +0 -0
  65. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/client/typing.py +0 -0
  66. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/__init__.py +0 -0
  67. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/address.py +0 -0
  68. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/constant.py +0 -0
  69. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/context.py +0 -0
  70. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/date.py +0 -0
  71. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/differential_privacy.py +0 -0
  72. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/differential_privacy_constants.py +0 -0
  73. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/dp.py +0 -0
  74. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/exit_handlers.py +0 -0
  75. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/grpc.py +0 -0
  76. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/logger.py +0 -0
  77. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/message.py +0 -0
  78. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/object_ref.py +0 -0
  79. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/parameter.py +0 -0
  80. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/pyproject.py +0 -0
  81. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/record/__init__.py +0 -0
  82. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/record/configsrecord.py +0 -0
  83. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/record/conversion_utils.py +0 -0
  84. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/record/metricsrecord.py +0 -0
  85. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/record/parametersrecord.py +0 -0
  86. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/record/recordset.py +0 -0
  87. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/record/typeddict.py +0 -0
  88. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/recordset_compat.py +0 -0
  89. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/retry_invoker.py +0 -0
  90. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/__init__.py +0 -0
  91. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/crypto/__init__.py +0 -0
  92. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/crypto/shamir.py +0 -0
  93. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/crypto/symmetric_encryption.py +0 -0
  94. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/ndarrays_arithmetic.py +0 -0
  95. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/quantization.py +0 -0
  96. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/secaggplus_constants.py +0 -0
  97. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/secure_aggregation/secaggplus_utils.py +0 -0
  98. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/serde.py +0 -0
  99. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/telemetry.py +0 -0
  100. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/typing.py +0 -0
  101. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/common/version.py +0 -0
  102. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/__init__.py +0 -0
  103. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/driver_pb2.py +0 -0
  104. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/driver_pb2.pyi +0 -0
  105. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/driver_pb2_grpc.py +0 -0
  106. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/driver_pb2_grpc.pyi +0 -0
  107. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/error_pb2.py +0 -0
  108. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/error_pb2.pyi +0 -0
  109. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/error_pb2_grpc.py +0 -0
  110. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/error_pb2_grpc.pyi +0 -0
  111. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/fleet_pb2.py +0 -0
  112. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/fleet_pb2.pyi +0 -0
  113. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/fleet_pb2_grpc.py +0 -0
  114. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/fleet_pb2_grpc.pyi +0 -0
  115. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/node_pb2.py +0 -0
  116. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/node_pb2.pyi +0 -0
  117. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/node_pb2_grpc.py +0 -0
  118. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/node_pb2_grpc.pyi +0 -0
  119. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/recordset_pb2.py +0 -0
  120. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/recordset_pb2.pyi +0 -0
  121. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/recordset_pb2_grpc.py +0 -0
  122. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/recordset_pb2_grpc.pyi +0 -0
  123. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/task_pb2.py +0 -0
  124. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/task_pb2.pyi +0 -0
  125. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/task_pb2_grpc.py +0 -0
  126. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/task_pb2_grpc.pyi +0 -0
  127. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/transport_pb2.py +0 -0
  128. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/transport_pb2.pyi +0 -0
  129. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/transport_pb2_grpc.py +0 -0
  130. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/proto/transport_pb2_grpc.pyi +0 -0
  131. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/py.typed +0 -0
  132. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/__init__.py +0 -0
  133. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/app.py +0 -0
  134. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/client_manager.py +0 -0
  135. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/client_proxy.py +0 -0
  136. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/compat/__init__.py +0 -0
  137. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/compat/app_utils.py +0 -0
  138. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/compat/legacy_context.py +0 -0
  139. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/criterion.py +0 -0
  140. /flwr_nightly-1.9.0.dev20240420/src/py/flwr/server/driver/abc_driver.py → /flwr_nightly-1.9.0.dev20240422/src/py/flwr/server/driver/driver.py +0 -0
  141. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/history.py +0 -0
  142. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/server.py +0 -0
  143. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/server_app.py +0 -0
  144. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/server_config.py +0 -0
  145. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/__init__.py +0 -0
  146. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/aggregate.py +0 -0
  147. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/bulyan.py +0 -0
  148. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/dp_adaptive_clipping.py +0 -0
  149. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/dp_fixed_clipping.py +0 -0
  150. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/dpfedavg_adaptive.py +0 -0
  151. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/dpfedavg_fixed.py +0 -0
  152. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fault_tolerant_fedavg.py +0 -0
  153. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedadagrad.py +0 -0
  154. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedadam.py +0 -0
  155. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedavg.py +0 -0
  156. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedavg_android.py +0 -0
  157. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedavgm.py +0 -0
  158. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedmedian.py +0 -0
  159. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedopt.py +0 -0
  160. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedprox.py +0 -0
  161. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedtrimmedavg.py +0 -0
  162. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedxgb_bagging.py +0 -0
  163. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedxgb_cyclic.py +0 -0
  164. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedxgb_nn_avg.py +0 -0
  165. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/fedyogi.py +0 -0
  166. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/krum.py +0 -0
  167. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/qfedavg.py +0 -0
  168. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/strategy/strategy.py +0 -0
  169. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/__init__.py +0 -0
  170. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/driver/__init__.py +0 -0
  171. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/driver/driver_grpc.py +0 -0
  172. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/driver/driver_servicer.py +0 -0
  173. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/__init__.py +0 -0
  174. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/grpc_bidi/__init__.py +0 -0
  175. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/grpc_bidi/flower_service_servicer.py +0 -0
  176. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_bridge.py +0 -0
  177. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_client_proxy.py +0 -0
  178. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/grpc_bidi/grpc_server.py +0 -0
  179. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/grpc_rere/__init__.py +0 -0
  180. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/grpc_rere/fleet_servicer.py +0 -0
  181. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/message_handler/__init__.py +0 -0
  182. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/message_handler/message_handler.py +0 -0
  183. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/rest_rere/__init__.py +0 -0
  184. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/rest_rere/rest_api.py +0 -0
  185. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/vce/__init__.py +0 -0
  186. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/vce/backend/__init__.py +0 -0
  187. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/vce/backend/backend.py +0 -0
  188. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/vce/backend/raybackend.py +0 -0
  189. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/fleet/vce/vce_api.py +0 -0
  190. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/state/__init__.py +0 -0
  191. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/state/in_memory_state.py +0 -0
  192. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/state/sqlite_state.py +0 -0
  193. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/state/state.py +0 -0
  194. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/state/state_factory.py +0 -0
  195. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/superlink/state/utils.py +0 -0
  196. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/typing.py +0 -0
  197. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/utils/__init__.py +0 -0
  198. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/utils/tensorboard.py +0 -0
  199. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/utils/validator.py +0 -0
  200. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/workflow/__init__.py +0 -0
  201. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/workflow/constant.py +0 -0
  202. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/workflow/default_workflows.py +0 -0
  203. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/workflow/secure_aggregation/__init__.py +0 -0
  204. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/workflow/secure_aggregation/secagg_workflow.py +0 -0
  205. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/server/workflow/secure_aggregation/secaggplus_workflow.py +0 -0
  206. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/simulation/__init__.py +0 -0
  207. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/simulation/app.py +0 -0
  208. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/simulation/ray_transport/__init__.py +0 -0
  209. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/simulation/ray_transport/ray_actor.py +0 -0
  210. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/simulation/ray_transport/ray_client_proxy.py +0 -0
  211. {flwr_nightly-1.9.0.dev20240420 → flwr_nightly-1.9.0.dev20240422}/src/py/flwr/simulation/ray_transport/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: flwr-nightly
3
- Version: 1.9.0.dev20240420
3
+ Version: 1.9.0.dev20240422
4
4
  Summary: Flower: A Friendly Federated Learning Framework
5
5
  Home-page: https://flower.ai
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "flwr-nightly"
7
- version = "1.9.0.dev20240420"
7
+ version = "1.9.0.dev20240422"
8
8
  description = "Flower: A Friendly Federated Learning Framework"
9
9
  license = "Apache-2.0"
10
10
  authors = ["The Flower Authors <hello@flower.ai>"]
@@ -136,7 +136,7 @@ multi_line_output = 3
136
136
  include_trailing_comma = true
137
137
  force_grid_wrap = 0
138
138
  use_parentheses = true
139
- known_first_party = ["flwr", "flwr_experimental", "flwr_tool"]
139
+ known_first_party = ["flwr", "flwr_tool"]
140
140
 
141
141
  [tool.black]
142
142
  line-length = 88
@@ -170,12 +170,6 @@ plugins = [
170
170
  ignore_missing_imports = true
171
171
  strict = true
172
172
 
173
- [[tool.mypy.overrides]]
174
- module = [
175
- "flwr_experimental.*",
176
- ]
177
- ignore_errors = true
178
-
179
173
  [[tool.mypy.overrides]]
180
174
  module = [
181
175
  "importlib.metadata.*",
@@ -28,12 +28,11 @@ def run_supernode() -> None:
28
28
 
29
29
  event(EventType.RUN_SUPERNODE_ENTER)
30
30
 
31
- args = _parse_args_run_supernode().parse_args()
31
+ _ = _parse_args_run_supernode().parse_args()
32
32
 
33
33
  log(
34
34
  DEBUG,
35
- "Flower will load ClientApp `%s`",
36
- getattr(args, "client-app"),
35
+ "Flower SuperNode starting...",
37
36
  )
38
37
 
39
38
  # Graceful shutdown
@@ -48,7 +47,16 @@ def _parse_args_run_supernode() -> argparse.ArgumentParser:
48
47
  description="Start a Flower SuperNode",
49
48
  )
50
49
 
51
- parse_args_run_client_app(parser=parser)
50
+ parser.add_argument(
51
+ "client-app",
52
+ nargs="?",
53
+ default="",
54
+ help="For example: `client:app` or `project.package.module:wrapper.app`. "
55
+ "This is optional and serves as the default ClientApp to be loaded when "
56
+ "the ServerApp does not specify `fab_id` and `fab_version`. "
57
+ "If not provided, defaults to an empty string.",
58
+ )
59
+ _parse_args_common(parser)
52
60
 
53
61
  return parser
54
62
 
@@ -59,6 +67,10 @@ def parse_args_run_client_app(parser: argparse.ArgumentParser) -> None:
59
67
  "client-app",
60
68
  help="For example: `client:app` or `project.package.module:wrapper.app`",
61
69
  )
70
+ _parse_args_common(parser)
71
+
72
+
73
+ def _parse_args_common(parser: argparse.ArgumentParser) -> None:
62
74
  parser.add_argument(
63
75
  "--insecure",
64
76
  action="store_true",
@@ -29,7 +29,7 @@ from flwr.server.server import Server, init_defaults, run_fl
29
29
  from flwr.server.server_config import ServerConfig
30
30
  from flwr.server.strategy import Strategy
31
31
 
32
- from ..driver import Driver
32
+ from ..driver import Driver, GrpcDriver
33
33
  from .app_utils import start_update_client_manager_thread
34
34
 
35
35
  DEFAULT_SERVER_ADDRESS_DRIVER = "[::]:9091"
@@ -114,7 +114,7 @@ def start_driver( # pylint: disable=too-many-arguments, too-many-locals
114
114
  # Create the Driver
115
115
  if isinstance(root_certificates, str):
116
116
  root_certificates = Path(root_certificates).read_bytes()
117
- driver = Driver(
117
+ driver = GrpcDriver(
118
118
  driver_service_address=address, root_certificates=root_certificates
119
119
  )
120
120
 
@@ -25,7 +25,7 @@ from flwr.common import serde
25
25
  from flwr.proto import driver_pb2, node_pb2, task_pb2 # pylint: disable=E0611
26
26
  from flwr.server.client_proxy import ClientProxy
27
27
 
28
- from ..driver.driver import GrpcDriverHelper
28
+ from ..driver.grpc_driver import GrpcDriverHelper
29
29
 
30
30
  SLEEP_TIME = 1
31
31
 
@@ -16,7 +16,10 @@
16
16
 
17
17
 
18
18
  from .driver import Driver
19
+ from .grpc_driver import GrpcDriver, GrpcDriverHelper
19
20
 
20
21
  __all__ = [
21
22
  "Driver",
23
+ "GrpcDriver",
24
+ "GrpcDriverHelper",
22
25
  ]
@@ -12,7 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ==============================================================================
15
- """Flower driver service client."""
15
+ """Flower gRPC Driver."""
16
16
 
17
17
  import time
18
18
  import warnings
@@ -39,6 +39,8 @@ from flwr.proto.driver_pb2_grpc import DriverStub # pylint: disable=E0611
39
39
  from flwr.proto.node_pb2 import Node # pylint: disable=E0611
40
40
  from flwr.proto.task_pb2 import TaskIns # pylint: disable=E0611
41
41
 
42
+ from .driver import Driver
43
+
42
44
  DEFAULT_SERVER_ADDRESS_DRIVER = "[::]:9091"
43
45
 
44
46
  ERROR_MESSAGE_DRIVER_NOT_CONNECTED = """
@@ -133,7 +135,7 @@ class GrpcDriverHelper:
133
135
  return res
134
136
 
135
137
 
136
- class Driver:
138
+ class GrpcDriver(Driver):
137
139
  """`Driver` class provides an interface to the Driver API.
138
140
 
139
141
  Parameters
@@ -198,30 +200,6 @@ class Driver:
198
200
 
199
201
  This method constructs a new `Message` with given content and metadata.
200
202
  The `run_id` and `src_node_id` will be set automatically.
201
-
202
- Parameters
203
- ----------
204
- content : RecordSet
205
- The content for the new message. This holds records that are to be sent
206
- to the destination node.
207
- message_type : str
208
- The type of the message, defining the action to be executed on
209
- the receiving end.
210
- dst_node_id : int
211
- The ID of the destination node to which the message is being sent.
212
- group_id : str
213
- The ID of the group to which this message is associated. In some settings,
214
- this is used as the FL round.
215
- ttl : Optional[float] (default: None)
216
- Time-to-live for the round trip of this message, i.e., the time from sending
217
- this message to receiving a reply. It specifies in seconds the duration for
218
- which the message and its potential reply are considered valid. If unset,
219
- the default TTL (i.e., `common.DEFAULT_TTL`) will be used.
220
-
221
- Returns
222
- -------
223
- message : Message
224
- A new `Message` instance with the specified content and metadata.
225
203
  """
226
204
  _, run_id = self._get_grpc_driver_helper_and_run_id()
227
205
  if ttl:
@@ -257,17 +235,6 @@ class Driver:
257
235
 
258
236
  This method takes an iterable of messages and sends each message
259
237
  to the node specified in `dst_node_id`.
260
-
261
- Parameters
262
- ----------
263
- messages : Iterable[Message]
264
- An iterable of messages to be sent.
265
-
266
- Returns
267
- -------
268
- message_ids : Iterable[str]
269
- An iterable of IDs for the messages that were sent, which can be used
270
- to pull replies.
271
238
  """
272
239
  grpc_driver_helper, _ = self._get_grpc_driver_helper_and_run_id()
273
240
  # Construct TaskIns
@@ -288,18 +255,8 @@ class Driver:
288
255
  def pull_messages(self, message_ids: Iterable[str]) -> Iterable[Message]:
289
256
  """Pull messages based on message IDs.
290
257
 
291
- This method is used to collect messages from the SuperLink
292
- that correspond to a set of given message IDs.
293
-
294
- Parameters
295
- ----------
296
- message_ids : Iterable[str]
297
- An iterable of message IDs for which reply messages are to be retrieved.
298
-
299
- Returns
300
- -------
301
- messages : Iterable[Message]
302
- An iterable of messages received.
258
+ This method is used to collect messages from the SuperLink that correspond to a
259
+ set of given message IDs.
303
260
  """
304
261
  grpc_driver, _ = self._get_grpc_driver_helper_and_run_id()
305
262
  # Pull TaskRes
@@ -319,29 +276,8 @@ class Driver:
319
276
  """Push messages to specified node IDs and pull the reply messages.
320
277
 
321
278
  This method sends a list of messages to their destination node IDs and then
322
- waits for the replies. It continues to pull replies until either all
323
- replies are received or the specified timeout duration is exceeded.
324
-
325
- Parameters
326
- ----------
327
- messages : Iterable[Message]
328
- An iterable of messages to be sent.
329
- timeout : Optional[float] (default: None)
330
- The timeout duration in seconds. If specified, the method will wait for
331
- replies for this duration. If `None`, there is no time limit and the method
332
- will wait until replies for all messages are received.
333
-
334
- Returns
335
- -------
336
- replies : Iterable[Message]
337
- An iterable of reply messages received from the SuperLink.
338
-
339
- Notes
340
- -----
341
- This method uses `push_messages` to send the messages and `pull_messages`
342
- to collect the replies. If `timeout` is set, the method may not return
343
- replies for all sent messages. A message remains valid until its TTL,
344
- which is not affected by `timeout`.
279
+ waits for the replies. It continues to pull replies until either all replies are
280
+ received or the specified timeout duration is exceeded.
345
281
  """
346
282
  # Push messages
347
283
  msg_ids = set(self.push_messages(messages))
@@ -25,7 +25,7 @@ from flwr.common import Context, EventType, RecordSet, event
25
25
  from flwr.common.logger import log, update_console_handler
26
26
  from flwr.common.object_ref import load_app
27
27
 
28
- from .driver.driver import Driver
28
+ from .driver import Driver, GrpcDriver
29
29
  from .server_app import LoadServerAppError, ServerApp
30
30
 
31
31
 
@@ -128,13 +128,13 @@ def run_server_app() -> None:
128
128
  server_app_dir = args.dir
129
129
  server_app_attr = getattr(args, "server-app")
130
130
 
131
- # Initialize Driver
132
- driver = Driver(
131
+ # Initialize GrpcDriver
132
+ driver = GrpcDriver(
133
133
  driver_service_address=args.server,
134
134
  root_certificates=root_certificates,
135
135
  )
136
136
 
137
- # Run the Server App with the Driver
137
+ # Run the ServerApp with the Driver
138
138
  run(driver=driver, server_app_dir=server_app_dir, server_app_attr=server_app_attr)
139
139
 
140
140
  # Clean up
@@ -29,7 +29,7 @@ import grpc
29
29
  from flwr.client import ClientApp
30
30
  from flwr.common import EventType, event, log
31
31
  from flwr.common.typing import ConfigsRecordValues
32
- from flwr.server.driver.driver import Driver
32
+ from flwr.server.driver import Driver, GrpcDriver
33
33
  from flwr.server.run_serverapp import run
34
34
  from flwr.server.server_app import ServerApp
35
35
  from flwr.server.superlink.driver.driver_grpc import run_driver_api_grpc
@@ -204,7 +204,7 @@ def _main_loop(
204
204
  serverapp_th = None
205
205
  try:
206
206
  # Initialize Driver
207
- driver = Driver(
207
+ driver = GrpcDriver(
208
208
  driver_service_address=driver_api_address,
209
209
  root_certificates=None,
210
210
  )