Merge remote-tracking branch 'origin/stable' into debian/sid

This commit is contained in:
Jason Rhinelander 2022-12-02 17:44:03 -04:00
commit 1de786f1cc
No known key found for this signature in database
GPG Key ID: C4992CE7A88D4262
5 changed files with 8 additions and 42 deletions

View File

@ -3,7 +3,7 @@ from setuptools import setup
# Available at setup time due to pyproject.toml
from pybind11.setup_helpers import Pybind11Extension, build_ext
__version__ = "1.0.2"
__version__ = "1.0.3"
# Note:
# Sort input source files if you glob sources to ensure bit-for-bit
@ -11,7 +11,7 @@ __version__ = "1.0.2"
ext_modules = [Pybind11Extension(
"oxenmq",
["src/bencode.cpp", "src/module.cpp", "src/oxenmq.cpp"],
["src/oxenmq.cpp"],
cxx_std=17,
libraries=["oxenmq"],
),

View File

@ -1,15 +0,0 @@
#include "common.hpp"
#include "oxenmq/base32z.h"
namespace oxenmq {
void BEncode_Init(py::module& mod) {
mod.def("base32z_encode", [](py::bytes data) {
char* ptr = nullptr;
py::ssize_t sz = 0;
PyBytes_AsStringAndSize(data.ptr(), &ptr, &sz);
return oxenmq::to_base32z(ptr, ptr+sz);
});
}
}

View File

@ -1,13 +0,0 @@
#pragma once
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include <pybind11/functional.h>
namespace py = pybind11;
namespace oxenmq {
void OxenMQ_Init(py::module &mod);
void BEncode_Init(py::module & mod);
}

View File

@ -1,6 +0,0 @@
#include "common.hpp"
PYBIND11_MODULE(oxenmq, m) {
oxenmq::OxenMQ_Init(m);
oxenmq::BEncode_Init(m);
}

View File

@ -1,4 +1,3 @@
#include "common.hpp"
#include <chrono>
#include <exception>
#include <oxenmq/oxenmq.h>
@ -14,6 +13,8 @@
#include <memory>
#include <variant>
namespace py = pybind11;
namespace oxenmq {
// Convert a py::object containing a str, bytes, or iterable over str/bytes to a vector of message
@ -51,8 +52,7 @@ struct stderr_logger {
}
};
void
OxenMQ_Init(py::module& mod)
PYBIND11_MODULE(oxenmq, mod)
{
using namespace pybind11::literals;
constexpr py::kw_only kwonly{};
@ -151,7 +151,7 @@ This typically protects administrative commands like shutting down or access to
py::class_<Message> msg(mod, "Message", "Temporary object containing details of a just-received message");
msg
.def_property_readonly("is_reply", [](const Message& m) { return !m.reply_tag.empty(); },
.def_property_readonly("is_request", [](const Message& m) { return !m.reply_tag.empty(); },
"True if this message is expecting a reply (i.e. it was received on a request_command endpoint)")
.def_readonly("remote", &Message::remote, py::return_value_policy::copy,
R"(Some sort of remote address from which the request came.
@ -187,7 +187,7 @@ or .to_bytes() on each one)"
R"(Sends a reply back to this caller.
`args` must be bytes, str, or iterables thereof (and will be flatted). Should only be used from a
request_command endpoint (i.e. when .is_reply is true)")
request_command endpoint (i.e. when .is_request is true)")
.def("back", [](Message& m, std::string command, py::args args) {
m.send_back(command, send_option::data_parts(extract_data_parts(args)));
},
@ -223,7 +223,7 @@ instance is still alive).)")
;
py::class_<Message::DeferredSend>(msg, "DeferredSend")
.def_property_readonly("is_reply", [](const Message::DeferredSend& m) { return !m.reply_tag.empty(); },
.def_property_readonly("is_request", [](const Message::DeferredSend& m) { return !m.reply_tag.empty(); },
"True if this message is expecting a reply (i.e. it was received on a request_command endpoint)")
.def("reply", [](Message::DeferredSend& d, py::args args) {
d.reply(send_option::data_parts(extract_data_parts(args)));