Skip to content

Commit 2d1d2c9

Browse files
committed
[dev] Refactor repository
1 parent 95c2ef4 commit 2d1d2c9

File tree

13 files changed

+107
-71
lines changed

13 files changed

+107
-71
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
.vscode
22
.venv
3+
dist
34
**/__pycache__
4-
**/build
5+
**/build
6+
**/*.egg-info

MANIFEST.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
include src/api/CMakeLists.txt
2+
include src/api/MoniLogger.cc
3+
include src/api/monilogger_module.cc

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
# monilog
1+
# monilogger
22

3+
A Python logging and monitoring toolbox for C++ and Python-embedding applications.
34

setup.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
import re
33
import subprocess
44
import sys
5+
from sysconfig import get_paths
56

67
from pybind11 import get_cmake_dir
78
from pybind11.setup_helpers import Pybind11Extension, build_ext
89
from setuptools import Extension, find_packages, setup
10+
from distutils import ccompiler
911

10-
__version__ = "0.0.1"
12+
__version__ = "0.0.2"
1113

1214
# Convert distutils Windows platform specifiers to CMake -A arguments
1315
PLAT_TO_CMAKE = {
@@ -110,29 +112,30 @@ def build_extension(self, ext):
110112
subprocess.check_call(["cmake", "--build", "."] + build_args, cwd=build_temp)
111113

112114
ext_modules = [
113-
CMakeExtension("monilog._monilog", sourcedir="src")
115+
CMakeExtension("monilogger._monilogger", sourcedir="src/api")
114116
]
115117

116118
# ext_modules = [
117-
# Pybind11Extension("monilog._monilog",
118-
# ["src/MoniLog.cc"],
119+
# Pybind11Extension("monilogger._monilogger",
120+
# ["src/MoniLogger.cc"],
121+
# include_dirs = ["src/monilogger/include"],
119122
# define_macros = [('VERSION_INFO', __version__)],
120123
# cxx_std=17
121124
# ),
122125
# ]
123126

124127
setup(
125-
name="monilog",
128+
name="monilogger",
126129
version=__version__,
127130
author="Dorian Leroy",
128131
author_email="[email protected]",
129-
url="https://github.com/cea-hpc/monilog",
132+
url="https://github.com/cea-hpc/monilogger",
130133
description="A Python logging and monitoring toolbox for C++ applications.",
131134
long_description="",
132-
packages=["monilog"],
133-
package_dir={"": "src"},
135+
packages=["monilogger"],
136+
package_dir={"": "src/api"},
134137
package_data={
135-
"monilog": ["include/MoniLog.h"],
138+
"monilogger": ["include/MoniLogger.h"],
136139
},
137140
ext_modules=ext_modules,
138141
cmdclass={"build_ext": CMakeBuild},

src/CMakeLists.txt renamed to src/api/CMakeLists.txt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,20 @@ set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
88
set(CMAKE_CXX_FLAGS "-Wall -Wextra -O3")
99

1010
# PROJECT
11-
project(monilog CXX)
11+
project(monilogger CXX)
1212
set(CMAKE_VERBOSE_MAKEFILE TRUE)
1313

14-
set(PYBIND11_PYTHON_VERSION 3.8)
1514
find_package(Python COMPONENTS Interpreter Development REQUIRED)
1615
set(pybind11_DIR "${Python_SITELIB}/pybind11/share/cmake/pybind11")
1716
find_package(pybind11 REQUIRED)
18-
include_directories(${pybind11_INCLUDE_DIRS} monilog/include)
19-
20-
add_library(monilog SHARED MoniLog.cc)
21-
target_link_libraries(monilog ${PYTHON_LIBRARIES} pybind11::embed)
17+
include_directories(${pybind11_INCLUDE_DIRS} monilogger/include)
2218

19+
add_library(monilogger SHARED MoniLogger.cc)
20+
target_link_libraries(monilogger ${PYTHON_LIBRARIES} pybind11::embed)
2321

2422
# Python extension
25-
pybind11_add_module(_monilog monilog_module.cc)
26-
set_target_properties(_monilog PROPERTIES
23+
pybind11_add_module(_monilogger monilogger_module.cc)
24+
set_target_properties(_monilogger PROPERTIES
2725
BUILD_WITH_INSTALL_RPATH FALSE
2826
LINK_FLAGS "-Wl,-rpath,$ORIGIN/")
29-
target_link_libraries(_monilog PUBLIC monilog)
27+
target_link_libraries(_monilogger PUBLIC monilogger)

src/MoniLog.cc renamed to src/api/MoniLogger.cc

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
#include <MoniLog.h>
1+
#include <MoniLogger.h>
22

33
namespace py = pybind11;
44

5-
namespace MoniLog
5+
namespace MoniLogger
66
{
77
namespace
88
{
@@ -135,7 +135,8 @@ namespace MoniLog
135135
void register_base_events(std::map<std::string, size_t> events)
136136
{
137137
size_t size(0);
138-
for (auto it = events.begin(); it != events.end(); ++it) {
138+
for (auto it = events.begin(); it != events.end(); ++it)
139+
{
139140
size = std::max(size, it->second);
140141
}
141142
size++;
@@ -158,6 +159,16 @@ namespace MoniLog
158159
}
159160
}
160161

162+
std::list<std::string> get_base_events()
163+
{
164+
std::list<std::string> result;
165+
for (auto evt : base_events)
166+
{
167+
result.emplace_back(evt.first);
168+
}
169+
return result;
170+
}
171+
161172
void clear_events()
162173
{
163174
base_events.clear();
@@ -217,15 +228,15 @@ namespace MoniLog
217228
return registered_moniloggers[event];
218229
}
219230

220-
void trigger(std::string event_name, std::shared_ptr<MoniLogExecutionContext> context)
231+
void trigger(std::string event_name, std::shared_ptr<MoniLoggerExecutionContext> context)
221232
{
222233
for (py::function monilogger : event_to_moniloggers[event_name])
223234
{
224235
monilogger(context);
225236
}
226237
}
227238

228-
void trigger(size_t event_id, std::shared_ptr<MoniLogExecutionContext> context)
239+
void trigger(size_t event_id, std::shared_ptr<MoniLoggerExecutionContext> context)
229240
{
230241
std::list<py::function> moniloggers = registered_moniloggers[event_id];
231242
for (py::function monilogger : moniloggers)
@@ -234,7 +245,7 @@ namespace MoniLog
234245
}
235246
}
236247

237-
void bootstrap_monilog(std::vector<std::string> python_path,
248+
void bootstrap_monilogger(std::vector<std::string> python_path,
238249
std::vector<std::string> python_scripts,
239250
std::string interface_module,
240251
std::function<void (py::module_, py::object)> interface_module_initializer)
@@ -248,13 +259,13 @@ namespace MoniLog
248259
append_to_path(python_path[i]);
249260
}
250261

251-
// // Initializing the MoniLog Python module.
252-
py::module_ monilogModule = py::module_::import("monilog");
253-
py::module_ monilogInternalModule = py::module_::import("monilog._monilog");
262+
// // Initializing the MoniLogger Python module.
263+
py::module_ moniloggerModule = py::module_::import("monilogger");
264+
py::module_ moniloggerInternalModule = py::module_::import("monilogger._monilogger");
254265

255266
// // Initializing the user-provided interface module exposing C++ variables to Python scripts.
256267
py::module_ interface_py_module = py::module_::import(interface_module.c_str());
257-
py::object ctx = (py::object) monilogInternalModule.attr("MoniLogExecutionContext");
268+
py::object ctx = (py::object) moniloggerInternalModule.attr("MoniLoggerExecutionContext");
258269
interface_module_initializer(interface_py_module, ctx);
259270

260271
// Loading the user-provided Python scripts containing monilogger definitions.
@@ -265,4 +276,19 @@ namespace MoniLog
265276
}
266277
}
267278

279+
PYBIND11_MODULE(_monilogger, m) {
280+
m.attr("__name__") = "monilogger._monilogger";
281+
py::class_<MoniLogger::MoniLoggerExecutionContext, std::shared_ptr<MoniLogger::MoniLoggerExecutionContext>>(m, "MoniLoggerExecutionContext")
282+
.def(py::init<>());
283+
m.def("register", &MoniLogger::register_monilogger);
284+
m.def("stop", &MoniLogger::unregister_monilogger);
285+
m.def("define_event", &MoniLogger::register_composite_event);
286+
m.def("define_basic_events", &MoniLogger::register_base_events);
287+
m.def("get_basic-events", &MoniLogger::get_base_events);
288+
m.def("emit_event", [](std::string event_name, std::shared_ptr<MoniLogger::MoniLoggerExecutionContext> scope)
289+
{
290+
MoniLogger::trigger(event_name, scope);
291+
});
292+
}
293+
268294

src/api/monilogger/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from .monilogger import *
2+
del monilogger

src/monilog/include/MoniLog.h renamed to src/api/monilogger/include/MoniLogger.h

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#ifndef __MONILOG_H_
2-
#define __MONILOG_H_
1+
#ifndef __MONILOGGER_H_
2+
#define __MONILOGGER_H_
33

44
#include <fstream>
55
#include <iomanip>
@@ -14,15 +14,15 @@
1414

1515
namespace py = pybind11;
1616

17-
namespace MoniLog
17+
namespace MoniLogger
1818
{
19-
struct MoniLogExecutionContext
19+
struct MoniLoggerExecutionContext
2020
{
21-
std::string name = "MoniLogExecutionContext";
21+
std::string name = "MoniLoggerExecutionContext";
2222

23-
MoniLogExecutionContext() {}
24-
MoniLogExecutionContext(std::string name) : name(name) {}
25-
virtual ~MoniLogExecutionContext() = default;
23+
MoniLoggerExecutionContext() {}
24+
MoniLoggerExecutionContext(std::string name) : name(name) {}
25+
virtual ~MoniLoggerExecutionContext() = default;
2626
};
2727

2828
void register_composite_event(std::string event_name, std::list<std::string> triggering_events);
@@ -31,6 +31,8 @@ namespace MoniLog
3131

3232
void register_base_events(std::map<std::string, size_t> events);
3333

34+
std::list<std::string> get_base_events();
35+
3436
void clear_events();
3537

3638
__attribute__((visibility("default")))
@@ -43,12 +45,12 @@ namespace MoniLog
4345

4446
std::list<py::function> get_registered_moniloggers(size_t event);
4547

46-
void trigger(std::string event_name, std::shared_ptr<MoniLogExecutionContext> scope);
48+
void trigger(std::string event_name, std::shared_ptr<MoniLoggerExecutionContext> scope);
4749

48-
void trigger(size_t event_id, std::shared_ptr<MoniLogExecutionContext> scope);
50+
void trigger(size_t event_id, std::shared_ptr<MoniLoggerExecutionContext> scope);
4951

5052
__attribute__((visibility("default")))
51-
void bootstrap_monilog(std::vector<std::string> python_path,
53+
void bootstrap_monilogger(std::vector<std::string> python_path,
5254
std::vector<std::string> python_scripts,
5355
std::string interface_module,
5456
std::function<void (py::module_, py::object)> interface_module_initializer);

src/monilog/monilog.py renamed to src/api/monilogger/monilogger.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import functools
2-
import monilog._monilog as mnlg
2+
import monilogger._monilogger as mnlg
33

44
__all__ = ('register', 'register_monilogger', 'define_event')
55

src/api/monilogger_module.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include "MoniLogger.h"
2+
3+
PYBIND11_MODULE(_monilogger, m) {
4+
m.attr("__name__") = "monilogger._monilogger";
5+
py::class_<MoniLogger::MoniLoggerExecutionContext, std::shared_ptr<MoniLogger::MoniLoggerExecutionContext>>(m, "MoniLoggerExecutionContext")
6+
.def(py::init<>());
7+
m.def("register", &MoniLogger::register_monilogger);
8+
m.def("stop", &MoniLogger::unregister_monilogger);
9+
m.def("define_event", &MoniLogger::register_composite_event);
10+
m.def("define_basic_events", &MoniLogger::register_base_events);
11+
m.def("get_basic-events", &MoniLogger::get_base_events);
12+
m.def("emit_event", [](std::string event_name, std::shared_ptr<MoniLogger::MoniLoggerExecutionContext> scope)
13+
{
14+
MoniLogger::trigger(event_name, scope);
15+
});
16+
}

0 commit comments

Comments
 (0)