msggen: generate deprecated fields in rust.py

This commit is contained in:
joemphilips
2022-08-18 19:13:31 +09:00
committed by Christian Decker
parent 22c8cfc374
commit 52be59587c
8 changed files with 358 additions and 337 deletions

View File

@@ -455,6 +455,7 @@
"Getinfo.fees_collected_msat": 13, "Getinfo.fees_collected_msat": 13,
"Getinfo.id": 1, "Getinfo.id": 1,
"Getinfo.lightning-dir": 9, "Getinfo.lightning-dir": 9,
"Getinfo.msatoshi_fees_collected": 18,
"Getinfo.network": 12, "Getinfo.network": 12,
"Getinfo.num_active_channels": 6, "Getinfo.num_active_channels": 6,
"Getinfo.num_inactive_channels": 7, "Getinfo.num_inactive_channels": 7,
@@ -485,6 +486,7 @@
"GetRoute.route[].delay": 5, "GetRoute.route[].delay": 5,
"GetRoute.route[].direction": 3, "GetRoute.route[].direction": 3,
"GetRoute.route[].id": 1, "GetRoute.route[].id": 1,
"GetRoute.route[].msatoshi": 7,
"GetRoute.route[].style": 6 "GetRoute.route[].style": 6
}, },
"InvoiceRequest": { "InvoiceRequest": {

View File

@@ -72,6 +72,7 @@ message GetinfoResponse {
string lightning_dir = 9; string lightning_dir = 9;
uint32 blockheight = 11; uint32 blockheight = 11;
string network = 12; string network = 12;
optional uint64 msatoshi_fees_collected = 18;
Amount fees_collected_msat = 13; Amount fees_collected_msat = 13;
repeated GetinfoAddress address = 14; repeated GetinfoAddress address = 14;
repeated GetinfoBinding binding = 15; repeated GetinfoBinding binding = 15;
@@ -1194,6 +1195,7 @@ message GetrouteRoute {
bytes id = 1; bytes id = 1;
string channel = 2; string channel = 2;
uint32 direction = 3; uint32 direction = 3;
optional uint64 msatoshi = 7;
Amount amount_msat = 4; Amount amount_msat = 4;
uint32 delay = 5; uint32 delay = 5;
GetrouteRouteStyle style = 6; GetrouteRouteStyle style = 6;

View File

@@ -50,6 +50,7 @@ impl From<responses::GetinfoResponse> for pb::GetinfoResponse {
lightning_dir: c.lightning_dir, // Rule #2 for type string lightning_dir: c.lightning_dir, // Rule #2 for type string
blockheight: c.blockheight, // Rule #2 for type u32 blockheight: c.blockheight, // Rule #2 for type u32
network: c.network, // Rule #2 for type string network: c.network, // Rule #2 for type string
msatoshi_fees_collected: c.msatoshi_fees_collected, // Rule #2 for type u64?
fees_collected_msat: Some(c.fees_collected_msat.into()), // Rule #2 for type msat fees_collected_msat: Some(c.fees_collected_msat.into()), // Rule #2 for type msat
address: c.address.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 address: c.address.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3
binding: c.binding.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3 binding: c.binding.map(|arr| arr.into_iter().map(|i| i.into()).collect()).unwrap_or(vec![]), // Rule #3
@@ -879,6 +880,7 @@ impl From<responses::GetrouteRoute> for pb::GetrouteRoute {
id: c.id.serialize().to_vec(), // Rule #2 for type pubkey id: c.id.serialize().to_vec(), // Rule #2 for type pubkey
channel: c.channel.to_string(), // Rule #2 for type short_channel_id channel: c.channel.to_string(), // Rule #2 for type short_channel_id
direction: c.direction, // Rule #2 for type u32 direction: c.direction, // Rule #2 for type u32
msatoshi: c.msatoshi, // Rule #2 for type u64?
amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat amount_msat: Some(c.amount_msat.into()), // Rule #2 for type msat
delay: c.delay, // Rule #2 for type u32 delay: c.delay, // Rule #2 for type u32
style: c.style as i32, style: c.style as i32,

6
cln-rpc/src/model.rs generated
View File

@@ -1461,6 +1461,9 @@ pub mod responses {
pub blockheight: u32, pub blockheight: u32,
#[serde(alias = "network")] #[serde(alias = "network")]
pub network: String, pub network: String,
#[deprecated]
#[serde(alias = "msatoshi_fees_collected", skip_serializing_if = "Option::is_none")]
pub msatoshi_fees_collected: Option<u64>,
#[serde(alias = "fees_collected_msat")] #[serde(alias = "fees_collected_msat")]
pub fees_collected_msat: Amount, pub fees_collected_msat: Amount,
#[serde(alias = "address", skip_serializing_if = "crate::is_none_or_empty")] #[serde(alias = "address", skip_serializing_if = "crate::is_none_or_empty")]
@@ -3548,6 +3551,9 @@ pub mod responses {
pub channel: ShortChannelId, pub channel: ShortChannelId,
#[serde(alias = "direction")] #[serde(alias = "direction")]
pub direction: u32, pub direction: u32,
#[deprecated]
#[serde(alias = "msatoshi", skip_serializing_if = "Option::is_none")]
pub msatoshi: Option<u64>,
#[serde(alias = "amount_msat")] #[serde(alias = "amount_msat")]
pub amount_msat: Amount, pub amount_msat: Amount,
#[serde(alias = "delay")] #[serde(alias = "delay")]

View File

@@ -96,6 +96,8 @@ def gen_enum(e):
if e.description != "": if e.description != "":
decl += f"/// {e.description}\n" decl += f"/// {e.description}\n"
if e.deprecated:
decl += "#[deprecated]\n"
decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize)]\npub enum {e.typename} {{\n" decl += f"#[derive(Copy, Clone, Debug, Deserialize, Serialize)]\npub enum {e.typename} {{\n"
for v in e.variants: for v in e.variants:
if v is None: if v is None:
@@ -145,10 +147,12 @@ def gen_primitive(p):
typename = typemap.get(p.typename, p.typename) typename = typemap.get(p.typename, p.typename)
normalize_varname(p) normalize_varname(p)
if p.deprecated:
defi += " #[deprecated]\n"
if p.required: if p.required:
defi = f" #[serde(alias = \"{org}\")]\n pub {p.name}: {typename},\n" defi += f" #[serde(alias = \"{org}\")]\n pub {p.name}: {typename},\n"
else: else:
defi = f" #[serde(alias = \"{org}\", skip_serializing_if = \"Option::is_none\")]\n pub {p.name}: Option<{typename}>,\n" defi += f" #[serde(alias = \"{org}\", skip_serializing_if = \"Option::is_none\")]\n pub {p.name}: Option<{typename}>,\n"
return defi, decl return defi, decl
@@ -173,10 +177,13 @@ def gen_array(a):
itemtype = typemap.get(itemtype, itemtype) itemtype = typemap.get(itemtype, itemtype)
alias = a.name.normalized() alias = a.name.normalized()
defi = ""
if a.deprecated:
defi += " #[deprecated]\n"
if a.required: if a.required:
defi = f" #[serde(alias = \"{alias}\")]\n pub {name}: {'Vec<'*a.dims}{itemtype}{'>'*a.dims},\n" defi += f" #[serde(alias = \"{alias}\")]\n pub {name}: {'Vec<'*a.dims}{itemtype}{'>'*a.dims},\n"
else: else:
defi = f" #[serde(alias = \"{alias}\", skip_serializing_if = \"crate::is_none_or_empty\")]\n pub {name}: Option<{'Vec<'*a.dims}{itemtype}{'>'*a.dims}>,\n" defi += f" #[serde(alias = \"{alias}\", skip_serializing_if = \"crate::is_none_or_empty\")]\n pub {name}: Option<{'Vec<'*a.dims}{itemtype}{'>'*a.dims}>,\n"
return (defi, decl) return (defi, decl)

View File

@@ -30,6 +30,7 @@ class Field:
def __init__(self, path, description): def __init__(self, path, description):
self.path = path self.path = path
self.description = description self.description = description
self.deprecated = False
self.required = False self.required = False
@property @property
@@ -130,10 +131,6 @@ class CompositeField(Field):
desc = ftype["description"] if "description" in ftype else "" desc = ftype["description"] if "description" in ftype else ""
fpath = f"{path}.{fname}" fpath = f"{path}.{fname}"
if ftype.get("deprecated", False):
logger.warning(f"Unmanaged {fpath}, it is deprecated")
continue
if fpath in overrides: if fpath in overrides:
field = copy(overrides[fpath]) field = copy(overrides[fpath])
field.path = fpath field.path = fpath
@@ -170,6 +167,7 @@ class CompositeField(Field):
) )
if field is not None: if field is not None:
field.deprecated = ftype.get("deprecated", False)
field.required = fname in required field.required = fname in required
fields.append(field) fields.append(field)
logger.debug(field) logger.debug(field)
@@ -320,7 +318,9 @@ class ArrayField(Field):
elif child_js["type"] in PrimitiveField.types: elif child_js["type"] in PrimitiveField.types:
itemtype = PrimitiveField( itemtype = PrimitiveField(
child_js["type"], path, child_js.get("description", "") child_js["type"],
path,
child_js.get("description", ""),
) )
logger.debug(f"Array path={path} dims={dims}, type={itemtype}") logger.debug(f"Array path={path} dims={dims}, type={itemtype}")

View File

@@ -59,6 +59,7 @@ def getinfo2py(m):
"lightning_dir": m.lightning_dir, # PrimitiveField in generate_composite "lightning_dir": m.lightning_dir, # PrimitiveField in generate_composite
"blockheight": m.blockheight, # PrimitiveField in generate_composite "blockheight": m.blockheight, # PrimitiveField in generate_composite
"network": m.network, # PrimitiveField in generate_composite "network": m.network, # PrimitiveField in generate_composite
"msatoshi_fees_collected": m.msatoshi_fees_collected, # PrimitiveField in generate_composite
"fees_collected_msat": amount2msat(m.fees_collected_msat), # PrimitiveField in generate_composite "fees_collected_msat": amount2msat(m.fees_collected_msat), # PrimitiveField in generate_composite
"address": [getinfo_address2py(i) for i in m.address], # ArrayField[composite] in generate_composite "address": [getinfo_address2py(i) for i in m.address], # ArrayField[composite] in generate_composite
"binding": [getinfo_binding2py(i) for i in m.binding], # ArrayField[composite] in generate_composite "binding": [getinfo_binding2py(i) for i in m.binding], # ArrayField[composite] in generate_composite
@@ -787,6 +788,7 @@ def getroute_route2py(m):
"id": hexlify(m.id), # PrimitiveField in generate_composite "id": hexlify(m.id), # PrimitiveField in generate_composite
"channel": m.channel, # PrimitiveField in generate_composite "channel": m.channel, # PrimitiveField in generate_composite
"direction": m.direction, # PrimitiveField in generate_composite "direction": m.direction, # PrimitiveField in generate_composite
"msatoshi": m.msatoshi, # PrimitiveField in generate_composite
"amount_msat": amount2msat(m.amount_msat), # PrimitiveField in generate_composite "amount_msat": amount2msat(m.amount_msat), # PrimitiveField in generate_composite
"delay": m.delay, # PrimitiveField in generate_composite "delay": m.delay, # PrimitiveField in generate_composite
"style": str(m.style), # EnumField in generate_composite "style": str(m.style), # EnumField in generate_composite

File diff suppressed because one or more lines are too long