-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCargo.toml
112 lines (105 loc) · 6.78 KB
/
Cargo.toml
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
[package]
name = "orcapod"
version = "0.1.0"
description = "Intuitive compute pipeline orchestration with reproducibility, performance, and scalability in mind."
repository = "https://github.com/walkerlab/orcapod"
keywords = ["data", "pipeline", "compute", "orchestration"]
categories = [
# "algorithms",
# "api-bindings",
"asynchronous",
# "caching",
# "command-line-utilities",
"concurrency",
# "data-structures",
"database-implementations",
# "encoding",
# "filesystem",
"science",
"virtualization",
# "web-programming::http-server",
]
license = "MIT license"
edition = "2021"
[dependencies]
bollard = "0.17.1" # docker API in orchestrator
chrono = "0.4.39" # datetime utilities
colored = "2.1.0" # font colors in printed strings
futures-util = "0.3.31" # chaining async calls and processing stream data in local docker orchestrator
glob = "0.3.1" # recursive walk of filesystem in filestore
heck = "0.5.0" # strings to snake_case
names = "0.14.0" # random name generator
regex = "1.11.0" # complex pattern matching in strings
serde = { version = "1.0.210", features = [
"derive",
] } # serialization/deserialization to/from filestore
serde_json = "1.0.137" # JSON in sharing memory with local docker orchestrator
serde_yaml = "0.9.34" # YAML in filestore
sha2 = "0.10.8" # checksums based on SHA256
thiserror = "2.0.11" # library error handling API
tokio = { version = "1.41.0", features = ["full"] } # a runtime for async applications
tokio-util = "0.7.13" # utilities for async calls
[dev-dependencies]
indoc = "2.0.5" # pretty multiline strings
tempfile = "3.13.0" # creating temp directories
[lints.rust]
non_ascii_idents = "deny"
missing_docs = "warn"
[lints.clippy]
cargo = "deny"
complexity = "deny"
correctness = "deny"
nursery = "deny"
pedantic = "deny"
perf = "deny"
restriction = "deny"
style = "deny"
suspicious = "deny"
arbitrary_source_item_ordering = { level = "allow", priority = 127 } # allow arbitrary ordering to keep relevant code nearby
arithmetic_side_effects = { level = "allow", priority = 127 } # allow arithmetic for convenience though it could overflow
as_conversions = { level = "allow", priority = 127 } # allow casting
assertions_on_result_states = { level = "allow", priority = 127 } # allow checking is_ok/is_err
big_endian_bytes = { level = "allow", priority = 127 } # allow to_be_bytes / from_be_bytes
blanket_clippy_restriction_lints = { level = "allow", priority = 127 } # allow setting all restrictions so we can omit specific ones
default_numeric_fallback = { level = "allow", priority = 127 } # allow type inferred by numeric literal
disallowed_script_idents = { level = "allow", priority = 127 } # skip since we use only ascii
else_if_without_else = { level = "allow", priority = 127 } # missing else ok
exhaustive_enums = { level = "allow", priority = 127 } # revisit once lib is ready to be used externally
exhaustive_structs = { level = "allow", priority = 127 } # revisit once lib is ready to be used externally
float_arithmetic = { level = "allow", priority = 127 } # allow float arithmetic
host_endian_bytes = { level = "allow", priority = 127 } # allow to_ne_bytes / from_ne_bytes
impl_trait_in_params = { level = "allow", priority = 127 } # impl in params ok
implicit_return = { level = "allow", priority = 127 } # missing return ok
indexing_slicing = { level = "allow", priority = 127 } # allow since guaranteed and error handling is overkill
inline_asm_x86_intel_syntax = { level = "allow", priority = 127 } # intel syntax ok
integer_division = { level = "allow", priority = 127 } # allow discarding remainder
little_endian_bytes = { level = "allow", priority = 127 } # allow to_le_bytes / from_le_bytes
missing_asserts_for_indexing = { level = "allow", priority = 127 } # missing assert before indexing ok
missing_docs_in_private_items = { level = "allow", priority = 127 } # missing docs on private ok
missing_inline_in_public_items = { level = "allow", priority = 127 } # let rust compiler determine best inline logic
missing_trait_methods = { level = "allow", priority = 127 } # allow in favor of rustc `implement the missing item`
must_use_candidate = { level = "allow", priority = 127 } # omitting #[must_use] ok
mod_module_files = { level = "allow", priority = 127 } # mod directories ok
non_ascii_literal = { level = "allow", priority = 127 } # non-ascii char in string literal ok
partial_pub_fields = { level = "allow", priority = 127 } # partial struct pub fields ok
pattern_type_mismatch = { level = "allow", priority = 127 } # allow in favor of clippy::ref_patterns
print_stderr = { level = "allow", priority = 127 } # stderr prints ok
print_stdout = { level = "allow", priority = 127 } # stdout prints ok
pub_use = { level = "allow", priority = 127 } # ok to structure source into many files but clean up import
pub_with_shorthand = { level = "allow", priority = 127 } # allow use of pub(super)
pub_without_shorthand = { level = "allow", priority = 127 } # allow use of pub(in super)
question_mark_used = { level = "allow", priority = 127 } # allow question operator
self_named_module_files = { level = "allow", priority = 127 } # mod files ok
semicolon_inside_block = { level = "allow", priority = 127 } # ok to keep inside block
separated_literal_suffix = { level = "allow", priority = 127 } # literal suffixes should be separated by underscore
single_char_lifetime_names = { level = "allow", priority = 127 } # single char lifetimes ok
single_component_path_imports = { level = "allow", priority = 127 } # allow for readability
std_instead_of_alloc = { level = "allow", priority = 127 } # we should use std when possible
std_instead_of_core = { level = "allow", priority = 127 } # we should use std when possible
string_add = { level = "allow", priority = 127 } # simple concat ok
string_lit_chars_any = { level = "allow", priority = 127 } # favor readability until a perf case comes up
use_debug = { level = "warn", priority = 127 } # debug print
# temporary
single_call_fn = { level = "allow", priority = 127 } # remove once more models need pointer serializers/deserializers
tests_outside_test_module = { level = "allow", priority = 127 } # for now due to false-positive for integration tests: https://github.com/rust-lang/rust-clippy/pull/13038
todo = { level = "allow", priority = 127 } # allow while we are working towards MVP release