forked from RustPython/RustPython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlib.rs
More file actions
129 lines (123 loc) · 3.53 KB
/
lib.rs
File metadata and controls
129 lines (123 loc) · 3.53 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// to allow `mod foo {}` in foo.rs; clippy thinks this is a mistake/misunderstanding of
// how `mod` works, but we want this sometimes for pymodule declarations
#![allow(clippy::module_inception)]
#[macro_use]
extern crate rustpython_derive;
pub mod array;
mod binascii;
mod bisect;
mod cmath;
mod csv;
mod dis;
mod gc;
mod hashlib;
mod json;
mod math;
mod platform;
mod pyexpat;
mod random;
// TODO: maybe make this an extension module, if we ever get those
// mod re;
#[cfg(not(target_arch = "wasm32"))]
pub mod socket;
mod statistics;
#[cfg(unix)]
mod syslog;
mod unicodedata;
mod zlib;
#[cfg(not(target_arch = "wasm32"))]
mod faulthandler;
#[cfg(any(unix, target_os = "wasi"))]
mod fcntl;
#[cfg(not(target_arch = "wasm32"))]
mod multiprocessing;
#[cfg(unix)]
mod posixsubprocess;
// libc is missing constants on redox
#[cfg(all(unix, not(target_os = "redox")))]
mod resource;
#[cfg(target_os = "macos")]
mod scproxy;
#[cfg(not(target_arch = "wasm32"))]
mod select;
#[cfg(all(not(target_arch = "wasm32"), feature = "ssl"))]
mod ssl;
#[cfg(all(unix, not(target_os = "redox")))]
mod termios;
use rustpython_common as common;
use rustpython_vm as vm;
use crate::vm::{builtins, stdlib::StdlibInitFunc};
use std::borrow::Cow;
pub fn get_module_inits() -> impl Iterator<Item = (Cow<'static, str>, StdlibInitFunc)> {
macro_rules! modules {
{
$(
#[cfg($cfg:meta)]
{ $( $key:expr => $val:expr),* $(,)? }
)*
} => {{
[
$(
$(#[cfg($cfg)] (Cow::<'static, str>::from($key), Box::new($val) as StdlibInitFunc),)*
)*
]
.into_iter()
}};
}
modules! {
#[cfg(all())]
{
"array" => array::make_module,
"binascii" => binascii::make_module,
"_bisect" => bisect::make_module,
"cmath" => cmath::make_module,
"_csv" => csv::make_module,
"_dis" => dis::make_module,
"gc" => gc::make_module,
"hashlib" => hashlib::make_module,
"_json" => json::make_module,
"math" => math::make_module,
"pyexpat" => pyexpat::make_module,
"_platform" => platform::make_module,
"_random" => random::make_module,
"_statistics" => statistics::make_module,
"unicodedata" => unicodedata::make_module,
"zlib" => zlib::make_module,
// crate::vm::sysmodule::sysconfigdata_name() => sysconfigdata::make_module,
}
// parser related modules:
#[cfg(feature = "rustpython-ast")]
{
"_ast" => ast::make_module,
}
#[cfg(any(unix, target_os = "wasi"))]
{
"fcntl" => fcntl::make_module,
}
#[cfg(not(target_arch = "wasm32"))]
{
"_multiprocessing" => multiprocessing::make_module,
"select" => select::make_module,
"_socket" => socket::make_module,
"faulthandler" => faulthandler::make_module,
}
#[cfg(feature = "ssl")]
{
"_ssl" => ssl::make_module,
}
#[cfg(all(unix, not(target_os = "redox")))]
{
"termios" => termios::make_module,
"resource" => resource::make_module,
}
#[cfg(unix)]
{
"_posixsubprocess" => posixsubprocess::make_module,
"syslog" => syslog::make_module,
}
#[cfg(target_os = "macos")]
{
"_scproxy" => scproxy::make_module,
}
}
}