Skip to content

Commit 5ade140

Browse files
committed
walkthrough: rendering invoices
1 parent d2f9f05 commit 5ade140

File tree

1 file changed

+63
-79
lines changed

1 file changed

+63
-79
lines changed

notebooks/walkthrough/04-invoicing.ipynb

Lines changed: 63 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -56,38 +56,38 @@
5656
"name": "stdout",
5757
"output_type": "stream",
5858
"text": [
59-
"2022-02-20 16:02:47,277 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
60-
"2022-02-20 16:02:47,277 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"address\")\n",
61-
"2022-02-20 16:02:47,277 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
62-
"2022-02-20 16:02:47,277 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"user\")\n",
63-
"2022-02-20 16:02:47,278 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
64-
"2022-02-20 16:02:47,278 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"icloudaccount\")\n",
65-
"2022-02-20 16:02:47,278 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
66-
"2022-02-20 16:02:47,278 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"googleaccount\")\n",
67-
"2022-02-20 16:02:47,279 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
68-
"2022-02-20 16:02:47,279 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"bank\")\n",
69-
"2022-02-20 16:02:47,279 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
70-
"2022-02-20 16:02:47,279 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"bankaccount\")\n",
71-
"2022-02-20 16:02:47,279 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
72-
"2022-02-20 16:02:47,280 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"contact\")\n",
73-
"2022-02-20 16:02:47,280 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
74-
"2022-02-20 16:02:47,280 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"client\")\n",
75-
"2022-02-20 16:02:47,280 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
76-
"2022-02-20 16:02:47,281 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"contract\")\n",
77-
"2022-02-20 16:02:47,281 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
78-
"2022-02-20 16:02:47,281 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"project\")\n",
79-
"2022-02-20 16:02:47,281 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
80-
"2022-02-20 16:02:47,281 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"timetrackingitem\")\n",
81-
"2022-02-20 16:02:47,281 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
82-
"2022-02-20 16:02:47,282 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"timesheet\")\n",
83-
"2022-02-20 16:02:47,282 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
84-
"2022-02-20 16:02:47,282 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"invoice\")\n",
85-
"2022-02-20 16:02:47,282 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
86-
"2022-02-20 16:02:47,283 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"invoiceitem\")\n",
87-
"2022-02-20 16:02:47,283 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
88-
"2022-02-20 16:02:47,283 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"timelineitem\")\n",
89-
"2022-02-20 16:02:47,283 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
90-
"2022-02-20 16:02:47,284 INFO sqlalchemy.engine.Engine COMMIT\n"
59+
"2022-02-20 16:03:54,975 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
60+
"2022-02-20 16:03:54,975 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"address\")\n",
61+
"2022-02-20 16:03:54,975 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
62+
"2022-02-20 16:03:54,976 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"user\")\n",
63+
"2022-02-20 16:03:54,976 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
64+
"2022-02-20 16:03:54,976 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"icloudaccount\")\n",
65+
"2022-02-20 16:03:54,976 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
66+
"2022-02-20 16:03:54,977 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"googleaccount\")\n",
67+
"2022-02-20 16:03:54,977 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
68+
"2022-02-20 16:03:54,977 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"bank\")\n",
69+
"2022-02-20 16:03:54,977 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
70+
"2022-02-20 16:03:54,978 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"bankaccount\")\n",
71+
"2022-02-20 16:03:54,978 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
72+
"2022-02-20 16:03:54,978 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"contact\")\n",
73+
"2022-02-20 16:03:54,978 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
74+
"2022-02-20 16:03:54,979 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"client\")\n",
75+
"2022-02-20 16:03:54,979 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
76+
"2022-02-20 16:03:54,979 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"contract\")\n",
77+
"2022-02-20 16:03:54,979 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
78+
"2022-02-20 16:03:54,980 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"project\")\n",
79+
"2022-02-20 16:03:54,980 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
80+
"2022-02-20 16:03:54,980 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"timetrackingitem\")\n",
81+
"2022-02-20 16:03:54,980 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
82+
"2022-02-20 16:03:54,980 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"timesheet\")\n",
83+
"2022-02-20 16:03:54,981 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
84+
"2022-02-20 16:03:54,981 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"invoice\")\n",
85+
"2022-02-20 16:03:54,981 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
86+
"2022-02-20 16:03:54,981 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"invoiceitem\")\n",
87+
"2022-02-20 16:03:54,982 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
88+
"2022-02-20 16:03:54,982 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"timelineitem\")\n",
89+
"2022-02-20 16:03:54,982 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
90+
"2022-02-20 16:03:54,983 INFO sqlalchemy.engine.Engine COMMIT\n"
9191
]
9292
}
9393
],
@@ -147,11 +147,11 @@
147147
"name": "stdout",
148148
"output_type": "stream",
149149
"text": [
150-
"2022-02-20 16:02:47,287 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
151-
"2022-02-20 16:02:47,300 INFO sqlalchemy.engine.Engine SELECT project.id, project.title, project.tag, project.start_date, project.end_date, project.contract_id \n",
150+
"2022-02-20 16:03:54,986 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
151+
"2022-02-20 16:03:55,000 INFO sqlalchemy.engine.Engine SELECT project.id, project.title, project.tag, project.start_date, project.end_date, project.contract_id \n",
152152
"FROM project \n",
153153
"WHERE project.title = ?\n",
154-
"2022-02-20 16:02:47,300 INFO sqlalchemy.engine.Engine [no key 0.00047s] ('Heating Repair',)\n"
154+
"2022-02-20 16:03:55,000 INFO sqlalchemy.engine.Engine [no key 0.00045s] ('Heating Repair',)\n"
155155
]
156156
},
157157
{
@@ -249,10 +249,10 @@
249249
"name": "stdout",
250250
"output_type": "stream",
251251
"text": [
252-
"2022-02-20 16:02:47,415 INFO sqlalchemy.engine.Engine SELECT contract.unit AS contract_unit, contract.billing_cycle AS contract_billing_cycle, contract.id AS contract_id, contract.title AS contract_title, contract.signature_date AS contract_signature_date, contract.start_date AS contract_start_date, contract.end_date AS contract_end_date, contract.client_id AS contract_client_id, contract.rate AS contract_rate, contract.currency AS contract_currency, contract.units_per_workday AS contract_units_per_workday, contract.volume AS contract_volume, contract.term_of_payment AS contract_term_of_payment \n",
252+
"2022-02-20 16:03:55,100 INFO sqlalchemy.engine.Engine SELECT contract.unit AS contract_unit, contract.billing_cycle AS contract_billing_cycle, contract.id AS contract_id, contract.title AS contract_title, contract.signature_date AS contract_signature_date, contract.start_date AS contract_start_date, contract.end_date AS contract_end_date, contract.client_id AS contract_client_id, contract.rate AS contract_rate, contract.currency AS contract_currency, contract.units_per_workday AS contract_units_per_workday, contract.volume AS contract_volume, contract.term_of_payment AS contract_term_of_payment \n",
253253
"FROM contract \n",
254254
"WHERE contract.id = ?\n",
255-
"2022-02-20 16:02:47,415 INFO sqlalchemy.engine.Engine [generated in 0.00043s] (1,)\n"
255+
"2022-02-20 16:03:55,100 INFO sqlalchemy.engine.Engine [generated in 0.00038s] (1,)\n"
256256
]
257257
},
258258
{
@@ -389,35 +389,35 @@
389389
"name": "stdout",
390390
"output_type": "stream",
391391
"text": [
392-
"2022-02-20 16:02:47,435 INFO sqlalchemy.engine.Engine INSERT INTO invoice (number, date, contract_id, sent, paid, cancelled) VALUES (?, ?, ?, ?, ?, ?)\n",
393-
"2022-02-20 16:02:47,435 INFO sqlalchemy.engine.Engine [generated in 0.00076s] ('2022-02-20-01', '2022-02-20', 1, None, None, None)\n",
394-
"2022-02-20 16:02:47,437 INFO sqlalchemy.engine.Engine INSERT INTO invoiceitem (date, quantity, unit, unit_price, description, \"VAT_rate\", invoice_id) VALUES (?, ?, ?, ?, ?, ?, ?)\n",
395-
"2022-02-20 16:02:47,437 INFO sqlalchemy.engine.Engine [generated in 0.00030s] ('2022-02-20', 16, 'hour', 50.0, 'Heating Repair - February 2022', 0.19, 1)\n",
396-
"2022-02-20 16:02:47,438 INFO sqlalchemy.engine.Engine INSERT INTO timesheet (title, date, period, project_id, comment) VALUES (?, ?, ?, ?, ?)\n",
397-
"2022-02-20 16:02:47,438 INFO sqlalchemy.engine.Engine [generated in 0.00020s] ('Heating Repair - February 2022', '2022-02-20', 'February 2022', 1, '')\n",
398-
"2022-02-20 16:02:47,439 INFO sqlalchemy.engine.Engine INSERT INTO timetrackingitem (timesheet_id, \"begin\", \"end\", duration, title, tag, description) VALUES (?, ?, ?, ?, ?, ?, ?)\n",
399-
"2022-02-20 16:02:47,439 INFO sqlalchemy.engine.Engine [generated in 0.00031s] (1, '2022-02-17 01:00:00.000000', '2022-02-18 01:00:00.000000', '1970-01-01 08:00:00.000000', '#HeatingRepair', '#HeatingRepair', 'Heating Repair')\n",
400-
"2022-02-20 16:02:47,439 INFO sqlalchemy.engine.Engine INSERT INTO timetrackingitem (timesheet_id, \"begin\", \"end\", duration, title, tag, description) VALUES (?, ?, ?, ?, ?, ?, ?)\n",
401-
"2022-02-20 16:02:47,439 INFO sqlalchemy.engine.Engine [cached since 0.0008405s ago] (1, '2022-02-18 01:00:00.000000', '2022-02-19 01:00:00.000000', '1970-01-01 08:00:00.000000', '#HeatingRepair', '#HeatingRepair', 'Heating Repair')\n",
402-
"2022-02-20 16:02:47,441 INFO sqlalchemy.engine.Engine SELECT user.id, user.name, user.subtitle, user.website, user.e_mail, user.phone_number, user.address_id, user.\"VAT_number\", user.icloud_account_id, user.bank_account_id, user.logo \n",
392+
"2022-02-20 16:03:55,118 INFO sqlalchemy.engine.Engine INSERT INTO invoice (number, date, contract_id, sent, paid, cancelled) VALUES (?, ?, ?, ?, ?, ?)\n",
393+
"2022-02-20 16:03:55,119 INFO sqlalchemy.engine.Engine [generated in 0.00083s] ('2022-02-20-01', '2022-02-20', 1, None, None, None)\n",
394+
"2022-02-20 16:03:55,120 INFO sqlalchemy.engine.Engine INSERT INTO invoiceitem (date, quantity, unit, unit_price, description, \"VAT_rate\", invoice_id) VALUES (?, ?, ?, ?, ?, ?, ?)\n",
395+
"2022-02-20 16:03:55,120 INFO sqlalchemy.engine.Engine [generated in 0.00032s] ('2022-02-20', 16, 'hour', 50.0, 'Heating Repair - February 2022', 0.19, 1)\n",
396+
"2022-02-20 16:03:55,121 INFO sqlalchemy.engine.Engine INSERT INTO timesheet (title, date, period, project_id, comment) VALUES (?, ?, ?, ?, ?)\n",
397+
"2022-02-20 16:03:55,121 INFO sqlalchemy.engine.Engine [generated in 0.00030s] ('Heating Repair - February 2022', '2022-02-20', 'February 2022', 1, '')\n",
398+
"2022-02-20 16:03:55,122 INFO sqlalchemy.engine.Engine INSERT INTO timetrackingitem (timesheet_id, \"begin\", \"end\", duration, title, tag, description) VALUES (?, ?, ?, ?, ?, ?, ?)\n",
399+
"2022-02-20 16:03:55,123 INFO sqlalchemy.engine.Engine [generated in 0.00028s] (1, '2022-02-17 01:00:00.000000', '2022-02-18 01:00:00.000000', '1970-01-01 08:00:00.000000', '#HeatingRepair', '#HeatingRepair', 'Heating Repair')\n",
400+
"2022-02-20 16:03:55,123 INFO sqlalchemy.engine.Engine INSERT INTO timetrackingitem (timesheet_id, \"begin\", \"end\", duration, title, tag, description) VALUES (?, ?, ?, ?, ?, ?, ?)\n",
401+
"2022-02-20 16:03:55,123 INFO sqlalchemy.engine.Engine [cached since 0.0008017s ago] (1, '2022-02-18 01:00:00.000000', '2022-02-19 01:00:00.000000', '1970-01-01 08:00:00.000000', '#HeatingRepair', '#HeatingRepair', 'Heating Repair')\n",
402+
"2022-02-20 16:03:55,124 INFO sqlalchemy.engine.Engine SELECT user.id, user.name, user.subtitle, user.website, user.e_mail, user.phone_number, user.address_id, user.\"VAT_number\", user.icloud_account_id, user.bank_account_id, user.logo \n",
403403
"FROM user\n",
404-
"2022-02-20 16:02:47,441 INFO sqlalchemy.engine.Engine [no key 0.00032s] ()\n",
405-
"2022-02-20 16:02:47,447 INFO sqlalchemy.engine.Engine SELECT client.id AS client_id, client.name AS client_name, client.invoicing_contact_id AS client_invoicing_contact_id \n",
404+
"2022-02-20 16:03:55,124 INFO sqlalchemy.engine.Engine [no key 0.00026s] ()\n",
405+
"2022-02-20 16:03:55,130 INFO sqlalchemy.engine.Engine SELECT client.id AS client_id, client.name AS client_name, client.invoicing_contact_id AS client_invoicing_contact_id \n",
406406
"FROM client \n",
407407
"WHERE client.id = ?\n",
408-
"2022-02-20 16:02:47,448 INFO sqlalchemy.engine.Engine [generated in 0.00048s] (1,)\n",
409-
"2022-02-20 16:02:47,449 INFO sqlalchemy.engine.Engine SELECT contact.id AS contact_id, contact.name AS contact_name, contact.e_mail AS contact_e_mail, contact.address_id AS contact_address_id \n",
408+
"2022-02-20 16:03:55,131 INFO sqlalchemy.engine.Engine [generated in 0.00040s] (1,)\n",
409+
"2022-02-20 16:03:55,132 INFO sqlalchemy.engine.Engine SELECT contact.id AS contact_id, contact.name AS contact_name, contact.e_mail AS contact_e_mail, contact.address_id AS contact_address_id \n",
410410
"FROM contact \n",
411411
"WHERE contact.id = ?\n",
412-
"2022-02-20 16:02:47,449 INFO sqlalchemy.engine.Engine [generated in 0.00030s] (1,)\n",
413-
"2022-02-20 16:02:47,451 INFO sqlalchemy.engine.Engine SELECT address.id AS address_id, address.street AS address_street, address.number AS address_number, address.city AS address_city, address.postal_code AS address_postal_code, address.country AS address_country \n",
412+
"2022-02-20 16:03:55,132 INFO sqlalchemy.engine.Engine [generated in 0.00037s] (1,)\n",
413+
"2022-02-20 16:03:55,133 INFO sqlalchemy.engine.Engine SELECT address.id AS address_id, address.street AS address_street, address.number AS address_number, address.city AS address_city, address.postal_code AS address_postal_code, address.country AS address_country \n",
414414
"FROM address \n",
415415
"WHERE address.id = ?\n",
416-
"2022-02-20 16:02:47,451 INFO sqlalchemy.engine.Engine [generated in 0.00036s] (1,)\n",
417-
"2022-02-20 16:02:47,464 INFO sqlalchemy.engine.Engine SELECT bankaccount.id AS bankaccount_id, bankaccount.name AS bankaccount_name, bankaccount.\"IBAN\" AS \"bankaccount_IBAN\", bankaccount.\"BIC\" AS \"bankaccount_BIC\" \n",
416+
"2022-02-20 16:03:55,134 INFO sqlalchemy.engine.Engine [generated in 0.00028s] (1,)\n",
417+
"2022-02-20 16:03:55,145 INFO sqlalchemy.engine.Engine SELECT bankaccount.id AS bankaccount_id, bankaccount.name AS bankaccount_name, bankaccount.\"IBAN\" AS \"bankaccount_IBAN\", bankaccount.\"BIC\" AS \"bankaccount_BIC\" \n",
418418
"FROM bankaccount \n",
419419
"WHERE bankaccount.id = ?\n",
420-
"2022-02-20 16:02:47,464 INFO sqlalchemy.engine.Engine [generated in 0.00038s] (1,)\n"
420+
"2022-02-20 16:03:55,145 INFO sqlalchemy.engine.Engine [generated in 0.00043s] (1,)\n"
421421
]
422422
},
423423
{
@@ -606,17 +606,17 @@
606606
"name": "stdout",
607607
"output_type": "stream",
608608
"text": [
609-
"2022-02-20 16:02:47,472 INFO sqlalchemy.engine.Engine SELECT user.id, user.name, user.subtitle, user.website, user.e_mail, user.phone_number, user.address_id, user.\"VAT_number\", user.icloud_account_id, user.bank_account_id, user.logo \n",
609+
"2022-02-20 16:03:55,152 INFO sqlalchemy.engine.Engine SELECT user.id, user.name, user.subtitle, user.website, user.e_mail, user.phone_number, user.address_id, user.\"VAT_number\", user.icloud_account_id, user.bank_account_id, user.logo \n",
610610
"FROM user\n",
611-
"2022-02-20 16:02:47,472 INFO sqlalchemy.engine.Engine [no key 0.00046s] ()\n",
612-
"2022-02-20 16:02:47,477 INFO sqlalchemy.engine.Engine SELECT address.id AS address_id, address.street AS address_street, address.number AS address_number, address.city AS address_city, address.postal_code AS address_postal_code, address.country AS address_country \n",
611+
"2022-02-20 16:03:55,153 INFO sqlalchemy.engine.Engine [no key 0.00044s] ()\n",
612+
"2022-02-20 16:03:55,158 INFO sqlalchemy.engine.Engine SELECT address.id AS address_id, address.street AS address_street, address.number AS address_number, address.city AS address_city, address.postal_code AS address_postal_code, address.country AS address_country \n",
613613
"FROM address \n",
614614
"WHERE address.id = ?\n",
615-
"2022-02-20 16:02:47,477 INFO sqlalchemy.engine.Engine [cached since 0.02666s ago] (1,)\n",
616-
"2022-02-20 16:02:47,478 INFO sqlalchemy.engine.Engine SELECT bankaccount.id AS bankaccount_id, bankaccount.name AS bankaccount_name, bankaccount.\"IBAN\" AS \"bankaccount_IBAN\", bankaccount.\"BIC\" AS \"bankaccount_BIC\" \n",
615+
"2022-02-20 16:03:55,158 INFO sqlalchemy.engine.Engine [cached since 0.02447s ago] (1,)\n",
616+
"2022-02-20 16:03:55,159 INFO sqlalchemy.engine.Engine SELECT bankaccount.id AS bankaccount_id, bankaccount.name AS bankaccount_name, bankaccount.\"IBAN\" AS \"bankaccount_IBAN\", bankaccount.\"BIC\" AS \"bankaccount_BIC\" \n",
617617
"FROM bankaccount \n",
618618
"WHERE bankaccount.id = ?\n",
619-
"2022-02-20 16:02:47,478 INFO sqlalchemy.engine.Engine [cached since 0.01445s ago] (1,)\n"
619+
"2022-02-20 16:03:55,159 INFO sqlalchemy.engine.Engine [cached since 0.01425s ago] (1,)\n"
620620
]
621621
}
622622
],
@@ -637,22 +637,6 @@
637637
"This will create a folder named with the inovice number, containing the invoice as an HTML document."
638638
]
639639
},
640-
{
641-
"cell_type": "markdown",
642-
"id": "0b491fe5-dce8-4456-97a3-d56e014579e3",
643-
"metadata": {},
644-
"source": [
645-
"TODO: Invoice styling"
646-
]
647-
},
648-
{
649-
"cell_type": "markdown",
650-
"id": "26aab1a0-c0b5-4fb6-98f4-0632790416a6",
651-
"metadata": {},
652-
"source": [
653-
"![](https://media.gettyimages.com/vectors/under-construction-sign-in-white-background-vector-id536013219?b=1&k=6&m=536013219&s=170x170&h=_-DZGgLDo-84eyZSJZmgwlekma7FYt3LdOdLIC7qktw=)"
654-
]
655-
},
656640
{
657641
"cell_type": "code",
658642
"execution_count": null,

0 commit comments

Comments
 (0)