Skip to content

Commit 6db1c62

Browse files
authored
Chore remove explicit schemars deps (#179)
2 parents 1bf6343 + 00d3232 commit 6db1c62

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+486
-139
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ proc-macro2 = "1.0"
4343
proc-macro-error2 = "2.0"
4444
quote = "1.0"
4545
regex = ">=1.5.5"
46-
schemars = { version = "=1.0.0-alpha.21", features = ["chrono04", "uuid1", "url2", "rust_decimal1"] }
46+
schemars = { version = "=1.0.0-alpha.21", features = ["chrono04", "uuid1", "url2", "rust_decimal1", "preserve_order"] }
4747
serde = { version = "1", features = ["derive"] }
4848
serde_json = "1"
4949
syn = "2.0"

README.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,21 @@
1818

1919
[OASv3.md]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md
2020

21-
An OpenAPI documentation tool exposing [OAS 3.0][OASv3.md] models as well as an actix-web wrapper similar
21+
[OASv3.1.md]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md
22+
23+
An OpenAPI documentation tool exposing [OAS 3.0][OASv3.md] and [OpenAPI v3.1.1][OASv3.1.md] models as well as an
24+
actix-web wrapper similar
2225
to [paperclip](https://github.com/paperclip-rs/paperclip).
2326

2427
**Apistos** is composed of these crates:
2528

2629
- [`apistos`](./apistos): [actix-web](https://github.com/actix/actix-web) wrapper to generate an OpenAPI v3.0.3
2730
documentation file
2831
- [`apistos-core`](./apistos-core): A set of traits and common models around [OpenAPI v3.0.3][OASv3.md]
29-
- [`apistos-gen`](./apistos-gen): macro utilities to generate [OpenAPI v3.0.3][OASv3.md] documentation from Rust models
30-
- [`apistos-models`](./apistos-models): [OpenAPI v3.0.3][OASv3.md] models
32+
and [OpenAPI v3.1.1][OASv3.1.md]
33+
- [`apistos-gen`](./apistos-gen): macro utilities to generate [OpenAPI v3.0.3][OASv3.md]
34+
and [OpenAPI v3.1.1][OASv3.1.md] documentation from Rust models
35+
- [`apistos-models`](./apistos-models): [OpenAPI v3.0.3][OASv3.md] and [OpenAPI v3.1.1][OASv3.1.md] models
3136
with [`Schema`](https://docs.rs/schemars/latest/schemars/schema/enum.Schema.html) based
3237
on [schemars](https://github.com/GREsau/schemars) definition
3338
- [`apistos-plugins`](./apistos-plugins): traits and utilities to extend apistos
@@ -59,7 +64,6 @@ carpenters, craftsmen, metallurgy ... which can also be considered by some as th
5964

6065
```toml
6166
[dependencies]
62-
schemars = "=1.0.0-alpha.15"
6367
apistos = "=1.0.0-pre-release.12"
6468
```
6569

@@ -80,20 +84,28 @@ use apistos::api_operation;
8084
use apistos::ApiComponent;
8185
use apistos::ApiErrorComponent;
8286
use apistos::app::OpenApiWrapper;
87+
use apistos::info::Info;
88+
use apistos::schemars::JsonSchema;
8389
use apistos::spec::Spec;
8490
use apistos::web::{post, resource, scope};
85-
use apistos_models::info::Info;
8691
use core::fmt::Formatter;
87-
use schemars::JsonSchema;
8892
use serde::{Deserialize, Serialize};
8993
use std::error::Error;
9094
use std::net::Ipv4Addr;
9195

9296
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema, ApiComponent)]
97+
#[schemars(crate = "apistos")]
9398
pub struct Test {
9499
pub test: String
95100
}
96101

102+
// or
103+
// #[derive(Serialize, Deserialize, Debug, Clone)]
104+
// #[apistos::api_component]
105+
// pub struct Test {
106+
// pub test: String
107+
// }
108+
97109
#[derive(Serialize, Deserialize, Debug, Clone, ApiErrorComponent)]
98110
#[openapi_error(
99111
status(code = 403),

apistos-core/Cargo.toml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ license.workspace = true
1717
log = { workspace = true }
1818
pin-project = { workspace = true }
1919
serde_json = { workspace = true }
20-
schemars = { workspace = true }
2120

2221
actix-web = { workspace = true, optional = true }
2322
actix-web-grants = { workspace = true, optional = true }
@@ -58,14 +57,14 @@ lab_query = ["actix", "dep:actix-web-lab", "garde-actix-web?/lab_query"]
5857
garde = ["actix", "dep:garde-actix-web"]
5958

6059
# extra types related features
61-
chrono = ["dep:chrono", "schemars/chrono04"]
60+
chrono = ["dep:chrono"]
6261
ipnetwork_0_20 = ["dep:serde", "dep:ipnetwork_0_20"]
6362
ipnetwork = ["dep:serde", "dep:ipnetwork"]
6463
multipart = ["actix", "dep:serde", "dep:actix-multipart", "dep:futures-core"]
65-
rust_decimal = ["dep:rust_decimal", "schemars/rust_decimal1"]
64+
rust_decimal = ["dep:rust_decimal"]
6665
actix-session = ["actix", "dep:serde", "dep:actix-session"]
67-
uuid = ["dep:uuid", "schemars/uuid1"]
68-
url = ["dep:url", "schemars/url2"]
66+
uuid = ["dep:uuid"]
67+
url = ["dep:url"]
6968
extras = ["chrono", "ipnetwork", "multipart", "rust_decimal", "uuid", "url"]
7069

7170
default = ["actix", "query"]

apistos-core/src/__internal/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use apistos_models::paths::{MediaType, Response, Responses};
22
use apistos_models::reference_or::ReferenceOr;
3+
use apistos_models::schemars::json_schema;
34
use apistos_models::{ApistosSchema, OpenApiVersion, VersionSpecificSchema};
4-
use schemars::json_schema;
55
use serde_json::Value;
66
use std::collections::BTreeMap;
77

apistos-core/src/api_component.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,9 +504,9 @@ where
504504

505505
#[cfg(test)]
506506
mod test {
507+
use apistos_models::schemars::JsonSchema;
508+
use apistos_models::schemars::generate::SchemaGenerator;
507509
use apistos_models::{ApistosSchema, OpenApiVersion};
508-
use schemars::JsonSchema;
509-
use schemars::generate::SchemaGenerator;
510510
use serde_json::json;
511511

512512
use apistos_models::reference_or::ReferenceOr;
@@ -518,6 +518,7 @@ mod test {
518518
#[expect(dead_code)]
519519
fn api_component_schema_vec_oas_3_0() {
520520
#[derive(JsonSchema)]
521+
#[schemars(crate = "apistos_models::schemars")]
521522
struct TestChild {
522523
surname: String,
523524
}
@@ -538,6 +539,7 @@ mod test {
538539
}
539540

540541
#[derive(JsonSchema)]
542+
#[schemars(crate = "apistos_models::schemars")]
541543
struct Test {
542544
name: String,
543545
surname: TestChild,
@@ -623,6 +625,7 @@ mod test {
623625
#[expect(dead_code)]
624626
fn api_component_schema_vec_oas_3_1() {
625627
#[derive(JsonSchema)]
628+
#[schemars(crate = "apistos_models::schemars")]
626629
struct TestChild {
627630
surname: String,
628631
}
@@ -643,6 +646,7 @@ mod test {
643646
}
644647

645648
#[derive(JsonSchema)]
649+
#[schemars(crate = "apistos_models::schemars")]
646650
struct Test {
647651
name: String,
648652
surname: TestChild,

apistos-core/src/components/custom.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#[cfg(feature = "ipnetwork")]
33
pub mod ipnetwork {
44
use crate::simple::simple_modifier;
5-
use schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
5+
use apistos_models::schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
66
use serde::{Deserialize, Serialize};
77
use std::borrow::Cow;
88

@@ -134,15 +134,16 @@ pub mod ipnetwork {
134134
use crate::ApiComponent;
135135
use crate::custom::ipnetwork::IpNetwork;
136136
use apistos_models::reference_or::ReferenceOr;
137+
use apistos_models::schemars::{JsonSchema, SchemaGenerator};
137138
use apistos_models::{ApistosSchema, OpenApiVersion};
138139
use assert_json_diff::assert_json_eq;
139-
use schemars::{JsonSchema, SchemaGenerator};
140140
use serde_json::json;
141141

142142
#[test]
143143
#[expect(dead_code)]
144144
fn ip_network_schema() {
145145
#[derive(JsonSchema)]
146+
#[schemars(crate = "apistos_models::schemars")]
146147
struct Test {
147148
ip: IpNetwork,
148149
label: String,
@@ -234,7 +235,7 @@ pub mod ipnetwork {
234235
#[cfg(feature = "ipnetwork_0_20")]
235236
pub mod ipnetwork_20 {
236237
use crate::simple::simple_modifier;
237-
use schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
238+
use apistos_models::schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
238239
use serde::{Deserialize, Serialize};
239240
use std::borrow::Cow;
240241

@@ -366,15 +367,16 @@ pub mod ipnetwork_20 {
366367
use crate::ApiComponent;
367368
use crate::custom::ipnetwork_20::IpNetwork;
368369
use apistos_models::reference_or::ReferenceOr;
370+
use apistos_models::schemars::{JsonSchema, SchemaGenerator};
369371
use apistos_models::{ApistosSchema, OpenApiVersion};
370372
use assert_json_diff::assert_json_eq;
371-
use schemars::{JsonSchema, SchemaGenerator};
372373
use serde_json::json;
373374

374375
#[test]
375376
#[expect(dead_code)]
376377
fn ip_network_schema() {
377378
#[derive(JsonSchema)]
379+
#[schemars(crate = "apistos_models::schemars")]
378380
struct Test {
379381
ip: IpNetwork,
380382
label: String,

apistos-core/src/components/multipart.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ pub mod tempfile {
9393
use actix_multipart::{Field, MultipartError};
9494
use actix_web::HttpRequest;
9595
use apistos_models::reference_or::ReferenceOr;
96+
use apistos_models::schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
9697
use apistos_models::{ApistosSchema, OpenApiVersion};
9798
use futures_core::future::LocalBoxFuture;
98-
use schemars::{JsonSchema, Schema, SchemaGenerator, json_schema};
9999
use std::borrow::Cow;
100100

101101
#[derive(Debug)]
@@ -170,15 +170,16 @@ pub mod tempfile {
170170
use crate::ApiComponent;
171171
use crate::multipart::tempfile::Tempfile;
172172
use apistos_models::reference_or::ReferenceOr;
173+
use apistos_models::schemars::{JsonSchema, SchemaGenerator};
173174
use apistos_models::{ApistosSchema, OpenApiVersion};
174175
use assert_json_diff::assert_json_eq;
175-
use schemars::{JsonSchema, SchemaGenerator};
176176
use serde_json::json;
177177

178178
#[test]
179179
#[expect(dead_code)]
180180
fn multipart_tempfile_schema() {
181181
#[derive(JsonSchema)]
182+
#[schemars(crate = "apistos_models::schemars")]
182183
struct Test {
183184
file: Tempfile,
184185
label: String,

apistos-core/src/components/parameters/path.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use crate::ApiComponent;
22
use actix_web::web::Path;
33
use apistos_models::paths::{Parameter, ParameterDefinition, ParameterIn, RequestBody};
44
use apistos_models::reference_or::ReferenceOr;
5+
use apistos_models::schemars::Schema;
56
use apistos_models::{ApistosSchema, OpenApiVersion};
6-
use schemars::Schema;
77
use serde_json::{Map, Value};
88

99
impl<T> ApiComponent for Path<T>

apistos-core/src/components/parameters/query.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ use std::collections::HashMap;
22

33
#[cfg(feature = "query")]
44
use actix_web::web::Query;
5+
use apistos_models::schemars::Schema;
56
#[cfg(all(feature = "lab_query", feature = "garde"))]
67
use garde_actix_web::web::LabQuery as GardeLabQuery;
78
#[cfg(all(feature = "qs_query", feature = "garde"))]
89
use garde_actix_web::web::QsQuery as GardeQsQuery;
910
#[cfg(all(feature = "query", feature = "garde"))]
1011
use garde_actix_web::web::Query as GardeQuery;
11-
use schemars::Schema;
1212
use serde_json::{Map, Value, json};
1313
#[cfg(feature = "qs_query")]
1414
use serde_qs::actix::QsQuery;
@@ -319,7 +319,7 @@ fn extract_required_from_schema(sch_props: &Map<String, Value>, property_name: &
319319
#[cfg(test)]
320320
mod test {
321321
use actix_web::web::Query;
322-
use schemars::{JsonSchema, json_schema};
322+
use apistos_models::schemars::{JsonSchema, json_schema};
323323
use serde::{Deserialize, Serialize};
324324
#[cfg(feature = "qs_query")]
325325
use serde_qs::actix::QsQuery;
@@ -335,6 +335,7 @@ mod test {
335335
use crate::ApiComponent;
336336

337337
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
338+
#[schemars(crate = "apistos_models::schemars")]
338339
struct Test {
339340
id_number: u32,
340341
id_string: String,

apistos-core/src/components/session.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::ApiComponent;
22
use apistos_models::ApistosSchema;
33
use apistos_models::paths::{Parameter, ParameterDefinition, ParameterIn, RequestBody};
44
use apistos_models::reference_or::ReferenceOr;
5-
use schemars::json_schema;
5+
use apistos_models::schemars::json_schema;
66

77
impl ApiComponent for actix_session::Session {
88
fn required() -> bool {

0 commit comments

Comments
 (0)