-
Notifications
You must be signed in to change notification settings - Fork 536
Expand file tree
/
Copy pathlib.rs
More file actions
114 lines (102 loc) · 3.46 KB
/
Copy pathlib.rs
File metadata and controls
114 lines (102 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#[cfg(feature = "crashtracker")]
mod crashtracker;
#[cfg(feature = "profiling")]
pub use datadog_profiling_ffi::*;
mod config;
mod context_provider;
#[cfg(all(Py_3_14, not(any(PyPy, GraalPy))))]
mod context_watcher;
mod contextvar;
mod data_pipeline;
#[cfg(feature = "stats")]
mod ddsketch;
mod ddtrace_utils;
mod debugger;
mod event_hub;
#[cfg(feature = "ffe")]
mod ffe;
mod http_client;
mod library_config;
mod log;
#[cfg(target_os = "linux")]
mod otel_thread_ctx;
mod py_string;
mod rand;
mod rc_shm;
mod remote_config;
mod shared_runtime;
mod span;
mod symdb;
mod telemetry;
mod tracer_flare;
use pyo3::prelude::*;
/// Dummy function to check if imported lib is generated on windows builds.
#[no_mangle]
pub extern "C" fn ddtrace_force_export_for_windows() {}
#[pymodule]
fn _native(m: &Bound<'_, PyModule>) -> PyResult<()> {
#[cfg(feature = "stats")]
{
m.add_class::<ddsketch::DDSketchPy>()?;
}
m.add_class::<library_config::PyConfigurator>()?;
#[cfg(feature = "crashtracker")]
{
m.add_class::<crashtracker::StacktraceCollectionPy>()?;
m.add_class::<crashtracker::CrashtrackerConfigurationPy>()?;
m.add_class::<crashtracker::CrashtrackerReceiverConfigPy>()?;
m.add_class::<crashtracker::CrashtrackerMetadataPy>()?;
m.add_class::<crashtracker::CrashtrackerStatus>()?;
m.add_function(wrap_pyfunction!(crashtracker::crashtracker_init, m)?)?;
m.add_function(wrap_pyfunction!(crashtracker::crashtracker_on_fork, m)?)?;
m.add_function(wrap_pyfunction!(crashtracker::crashtracker_status, m)?)?;
m.add_function(wrap_pyfunction!(crashtracker::crashtracker_receiver, m)?)?;
m.add_function(wrap_pyfunction!(
crashtracker::crashtracker_report_unhandled_exception_py,
m
)?)?;
}
m.add_class::<library_config::PyTracerMetadata>()?;
m.add_class::<library_config::PyAnonymousFileHandle>()?;
m.add_wrapped(wrap_pyfunction!(library_config::store_metadata))?;
#[cfg(target_os = "linux")]
{
m.add_wrapped(wrap_pyfunction!(
otel_thread_ctx::update_otel_thread_context
))?;
m.add_wrapped(wrap_pyfunction!(
otel_thread_ctx::update_otel_thread_context_ids
))?;
m.add_wrapped(wrap_pyfunction!(
otel_thread_ctx::detach_otel_thread_context
))?;
}
shared_runtime::register_shared_runtime(m)?;
remote_config::register_remote_config(m)?;
data_pipeline::register_data_pipeline(m)?;
telemetry::register_telemetry(m)?;
debugger::register_debugger(m)?;
symdb::register_symdb(m)?;
http_client::register_http_client(m)?;
span::register_native_span(m)?;
event_hub::register_event_hub(m)?;
contextvar::register_contextvar(m)?;
context_provider::register_context_provider(m)?;
rand::register_rand(m)?;
m.add_function(wrap_pyfunction!(ddtrace_utils::flatten_key_value, m)?)?;
m.add_function(wrap_pyfunction!(ddtrace_utils::is_sequence, m)?)?;
m.add_wrapped(pyo3::wrap_pymodule!(config::config_module))?;
// Add FFE submodule
#[cfg(feature = "ffe")]
{
m.add_wrapped(pyo3::wrap_pymodule!(ffe::ffe))?;
}
// Add logger submodule
let logger_module = pyo3::wrap_pymodule!(log::logger);
m.add_wrapped(logger_module)?;
// Add tracer_flare submodule
m.add_wrapped(pyo3::wrap_pymodule!(tracer_flare::native_flare))?;
#[cfg(all(Py_3_14, not(any(PyPy, GraalPy))))]
context_watcher::register(m)?;
Ok(())
}