mirror of
https://github.com/dbt-labs/dbt-core
synced 2025-12-17 19:31:34 +00:00
Compare commits
4740 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d984b198a | ||
|
|
6337a4feeb | ||
|
|
8d00f6c37b | ||
|
|
e469e88631 | ||
|
|
913e9edea9 | ||
|
|
fe9e004597 | ||
|
|
49797a664f | ||
|
|
1f81ea3f9b | ||
|
|
81118d904a | ||
|
|
69cdc4148e | ||
|
|
1c71bf414d | ||
|
|
7cf57ae72d | ||
|
|
1b6f95fef4 | ||
|
|
38940eeeea | ||
|
|
6c950bad7c | ||
|
|
5e681929ae | ||
|
|
ea5a9da71e | ||
|
|
9c5ee59e19 | ||
|
|
55b1d3a191 | ||
|
|
a968aa7725 | ||
|
|
5e0a765917 | ||
|
|
0aeb9976f4 | ||
|
|
30a7da8112 | ||
|
|
f6a9dae422 | ||
|
|
62a7163334 | ||
|
|
e2f0467f5d | ||
|
|
3e3ecb1c3f | ||
|
|
27511d807f | ||
|
|
15077d087c | ||
|
|
5b01cc0c22 | ||
|
|
d1bcff865d | ||
|
|
0fce63665c | ||
|
|
1183e85eb4 | ||
|
|
3b86243f04 | ||
|
|
c251dae75e | ||
|
|
ecfd77f1ca | ||
|
|
9a0abc1bfc | ||
|
|
490d68e076 | ||
|
|
c45147fe6d | ||
|
|
bc3468e649 | ||
|
|
8fff6729a2 | ||
|
|
08f50acb9e | ||
|
|
436a5f5cd4 | ||
|
|
aca710048f | ||
|
|
673ad50e21 | ||
|
|
8ee86a61a0 | ||
|
|
0dda0a90cf | ||
|
|
220d8b888c | ||
|
|
42d5812577 | ||
|
|
dea4f5f8ff | ||
|
|
8f50eee330 | ||
|
|
8fd8dfcf74 | ||
|
|
10b27b9633 | ||
|
|
5808ee6dd7 | ||
|
|
a66fe7f467 | ||
|
|
18fef38702 | ||
|
|
3ad61d5d81 | ||
|
|
bb1f5b43be | ||
|
|
a642b20abc | ||
|
|
c112050455 | ||
|
|
43e3fc22c4 | ||
|
|
41c6177ae2 | ||
|
|
72ecd1ce74 | ||
|
|
2d0b975b6c | ||
|
|
8a0bc39a66 | ||
|
|
f3c7b6bfd1 | ||
|
|
0391e4e53a | ||
|
|
3ad3c21886 | ||
|
|
6e0ed751e1 | ||
|
|
c43c79a995 | ||
|
|
d6cc8b3042 | ||
|
|
2f4a6e33ec | ||
|
|
b9867e89cb | ||
|
|
13b18654f0 | ||
|
|
aafa1c7f47 | ||
|
|
638e3ad299 | ||
|
|
d9cfeb1ea3 | ||
|
|
e6786a2bc3 | ||
|
|
13571435a3 | ||
|
|
efb890db2d | ||
|
|
f3735187a6 | ||
|
|
3032594b26 | ||
|
|
1df7a029b4 | ||
|
|
f467fba151 | ||
|
|
8791313ec5 | ||
|
|
7798f932a0 | ||
|
|
a588607ec6 | ||
|
|
348764d99d | ||
|
|
5aeb088a73 | ||
|
|
e943b9fc84 | ||
|
|
892426eecb | ||
|
|
1d25b2b046 | ||
|
|
da70840be8 | ||
|
|
7632782ecd | ||
|
|
6fae647097 | ||
|
|
fc8b8c11d5 | ||
|
|
26a7922a34 | ||
|
|
c18b4f1f1a | ||
|
|
fa31a67499 | ||
|
|
742cd990ee | ||
|
|
8463af35c3 | ||
|
|
b34a4ab493 | ||
|
|
417ccdc3b4 | ||
|
|
7c46b784ef | ||
|
|
067b861d30 | ||
|
|
9f6ed3cec3 | ||
|
|
43edc887f9 | ||
|
|
6d4c64a436 | ||
|
|
0ed14fa236 | ||
|
|
51f2daf4b0 | ||
|
|
76f7bf9900 | ||
|
|
3fc715f066 | ||
|
|
b6811da84f | ||
|
|
1dffccd9da | ||
|
|
9ed9936c84 | ||
|
|
e75ae8c754 | ||
|
|
b68535b8cb | ||
|
|
5310498647 | ||
|
|
22b1a09aa2 | ||
|
|
6855fe06a7 | ||
|
|
affd8619c2 | ||
|
|
b67d5f396b | ||
|
|
b3039fdc76 | ||
|
|
9bdf5fe74a | ||
|
|
c675c2d318 | ||
|
|
2cd1f7d98e | ||
|
|
ce9ac8ea10 | ||
|
|
b90ab74975 | ||
|
|
6d3c3f1995 | ||
|
|
74fbaa18cd | ||
|
|
fc7c073691 | ||
|
|
29f504e201 | ||
|
|
eeb490ed15 | ||
|
|
c220b1e42c | ||
|
|
d973ae9ec6 | ||
|
|
f461683df5 | ||
|
|
41ed976941 | ||
|
|
e93ad5f118 | ||
|
|
d75ed964f8 | ||
|
|
284ac9b138 | ||
|
|
7448ec5adb | ||
|
|
caa6269bc7 | ||
|
|
31691c3b88 | ||
|
|
3a904a811f | ||
|
|
b927a31a53 | ||
|
|
d8dd75320c | ||
|
|
a613556246 | ||
|
|
8d2351d541 | ||
|
|
f72b603196 | ||
|
|
4eb17b57fb | ||
|
|
85a4b87267 | ||
|
|
0d320c58da | ||
|
|
ed1ff2caac | ||
|
|
d80646c258 | ||
|
|
a9b4316346 | ||
|
|
36776b96e7 | ||
|
|
7f2d3cd24f | ||
|
|
d046ae0606 | ||
|
|
e8c267275e | ||
|
|
a4951749a8 | ||
|
|
e1a2e8d9f5 | ||
|
|
f80c78e3a5 | ||
|
|
c541eca592 | ||
|
|
726aba0586 | ||
|
|
d300addee1 | ||
|
|
d5d16f01f4 | ||
|
|
2cb26e2699 | ||
|
|
b4793b4f9b | ||
|
|
045e70ccf1 | ||
|
|
ba23395c8e | ||
|
|
0aacd99168 | ||
|
|
e4b5d73dc4 | ||
|
|
bd950f687a | ||
|
|
aea23a488b | ||
|
|
22731df07b | ||
|
|
c55be164e6 | ||
|
|
9d73304c1a | ||
|
|
719b2026ab | ||
|
|
22416980d1 | ||
|
|
3d28b6704c | ||
|
|
5d1b104e1f | ||
|
|
4a8a68049d | ||
|
|
4b7fd1d46a | ||
|
|
0722922c03 | ||
|
|
40321d7966 | ||
|
|
434f3d2678 | ||
|
|
6dd9c2c5ba | ||
|
|
5e6be1660e | ||
|
|
31acb95d7a | ||
|
|
683190b711 | ||
|
|
ebb84c404f | ||
|
|
2ca6ce688b | ||
|
|
a40550b89d | ||
|
|
b2aea11cdb | ||
|
|
43b39fd1aa | ||
|
|
5cc8626e96 | ||
|
|
f95e9efbc0 | ||
|
|
25c974af8c | ||
|
|
b5c6f09a9e | ||
|
|
bd3e623240 | ||
|
|
63343653a9 | ||
|
|
d8b97c1077 | ||
|
|
e0b0edaeed | ||
|
|
3cafc9e13f | ||
|
|
13f31aed90 | ||
|
|
d513491046 | ||
|
|
281d2491a5 | ||
|
|
9857e1dd83 | ||
|
|
6b36b18029 | ||
|
|
d8868c5197 | ||
|
|
b141620125 | ||
|
|
51d8440dd4 | ||
|
|
5b2562a919 | ||
|
|
44a9da621e | ||
|
|
69aa6bf964 | ||
|
|
f9ef9da110 | ||
|
|
57ae9180c2 | ||
|
|
efe926d20c | ||
|
|
1081b8e720 | ||
|
|
8205921c4b | ||
|
|
da6c211611 | ||
|
|
354c1e0d4d | ||
|
|
855419d698 | ||
|
|
e94fd61b24 | ||
|
|
4cf9b73c3d | ||
|
|
8442fb66a5 | ||
|
|
f8cefa3eff | ||
|
|
d83e0fb8d8 | ||
|
|
3e9da06365 | ||
|
|
bda70c988e | ||
|
|
229e897070 | ||
|
|
f20e83a32b | ||
|
|
dd84f9a896 | ||
|
|
e6df4266f6 | ||
|
|
b591e1a2b7 | ||
|
|
3dab058c73 | ||
|
|
c7bc6eb812 | ||
|
|
c690ecc1fd | ||
|
|
73e272f06e | ||
|
|
95d087b51b | ||
|
|
40ae6b6bc8 | ||
|
|
fe20534a98 | ||
|
|
dd7af477ac | ||
|
|
178f74b753 | ||
|
|
a14f563ec8 | ||
|
|
ff109e1806 | ||
|
|
5e46694b68 | ||
|
|
73af9a56e5 | ||
|
|
d2aa920275 | ||
|
|
c34f3530c8 | ||
|
|
c019a94206 | ||
|
|
f9bdfa050b | ||
|
|
1b35d1aa21 | ||
|
|
420ef9cc7b | ||
|
|
02fdc2cb9f | ||
|
|
f82745fb0c | ||
|
|
3397bdc6a5 | ||
|
|
96e858ac0b | ||
|
|
f6a98b5674 | ||
|
|
824f0bf2c0 | ||
|
|
5648b1c622 | ||
|
|
bb1382e576 | ||
|
|
085ea9181f | ||
|
|
eace5b77a7 | ||
|
|
1c61bb18e6 | ||
|
|
f79a968a09 | ||
|
|
34c23fe650 | ||
|
|
3ae9475655 | ||
|
|
11436fed45 | ||
|
|
21a7b71657 | ||
|
|
280e9ad9c9 | ||
|
|
97f31c88e1 | ||
|
|
5f483a6b13 | ||
|
|
86f24e13db | ||
|
|
4bda8c8880 | ||
|
|
80a5d27127 | ||
|
|
4307a82058 | ||
|
|
5c01c42308 | ||
|
|
80ba71682b | ||
|
|
26625e9627 | ||
|
|
134e8423b7 | ||
|
|
04a9195297 | ||
|
|
8a10a69f59 | ||
|
|
fd7c95d1d2 | ||
|
|
79aa136301 | ||
|
|
3b5cec6cc6 | ||
|
|
0e9a67956d | ||
|
|
f9f0eab0b7 | ||
|
|
ed01b439cf | ||
|
|
a398ed1a3e | ||
|
|
a818e6551b | ||
|
|
0a7471ebdc | ||
|
|
1a5bc83598 | ||
|
|
6e2df00648 | ||
|
|
b338dfc99a | ||
|
|
47033c459f | ||
|
|
92a0930634 | ||
|
|
cad1a48eb0 | ||
|
|
b451f87e3c | ||
|
|
20756290bc | ||
|
|
f44c6ed136 | ||
|
|
b501f4317c | ||
|
|
91b43f71bb | ||
|
|
6fc64f0d3b | ||
|
|
ee5c697645 | ||
|
|
3caec08ccb | ||
|
|
f7680379fc | ||
|
|
3789acc5a7 | ||
|
|
8ae232abe8 | ||
|
|
332d23c5eb | ||
|
|
5799973474 | ||
|
|
3d816d56ec | ||
|
|
111f3c28f8 | ||
|
|
10aded793c | ||
|
|
b5cc7b8dff | ||
|
|
449f042742 | ||
|
|
66b70e025b | ||
|
|
578c6d6a20 | ||
|
|
64ce9d6aa4 | ||
|
|
213ddedb85 | ||
|
|
c96201c060 | ||
|
|
16b02f4f55 | ||
|
|
e0d2b02d46 | ||
|
|
65e76df6ec | ||
|
|
052a3060d4 | ||
|
|
b65ae1ddde | ||
|
|
a8246ab1f1 | ||
|
|
6854e67464 | ||
|
|
ca7c1fc4ad | ||
|
|
5dbc945f23 | ||
|
|
655ff85dc9 | ||
|
|
6a2ceaa073 | ||
|
|
e8fb29d185 | ||
|
|
8443142f27 | ||
|
|
7ebe21dccb | ||
|
|
c25b7a1143 | ||
|
|
38eb46dfc3 | ||
|
|
fe9ed9ccdd | ||
|
|
ff4e5219b1 | ||
|
|
04632a008f | ||
|
|
6925cebcf6 | ||
|
|
571beb13d9 | ||
|
|
69cd82f483 | ||
|
|
11e379280f | ||
|
|
0018eb7db6 | ||
|
|
154a682180 | ||
|
|
1b79a245e6 | ||
|
|
6b590122c7 | ||
|
|
d5f632e6fd | ||
|
|
2fc8e5e0b6 | ||
|
|
5ab07273ba | ||
|
|
19c9e5bfdf | ||
|
|
60794367a5 | ||
|
|
ea07729bbf | ||
|
|
c4370773f6 | ||
|
|
fda17b456e | ||
|
|
bc3e1a0a71 | ||
|
|
a06988706c | ||
|
|
ce73124bbf | ||
|
|
352c62f3c3 | ||
|
|
81a51d3942 | ||
|
|
64fc3a39a7 | ||
|
|
e5b6f4f293 | ||
|
|
d26e63ed9a | ||
|
|
f4f5d31959 | ||
|
|
e7e12075b9 | ||
|
|
74dda5aa19 | ||
|
|
092e96ce70 | ||
|
|
18102027ba | ||
|
|
f80825d63e | ||
|
|
9316e47b77 | ||
|
|
f99cf1218a | ||
|
|
5871915ce9 | ||
|
|
5ce290043f | ||
|
|
080d27321b | ||
|
|
1d0936bd14 | ||
|
|
706b8ca9df | ||
|
|
7dc491b7ba | ||
|
|
779c789a64 | ||
|
|
409b4ba109 | ||
|
|
59d131d3ac | ||
|
|
6563d09ba7 | ||
|
|
05dea18b62 | ||
|
|
d7177c7d89 | ||
|
|
35f0fea804 | ||
|
|
8953c7c533 | ||
|
|
76c59a5545 | ||
|
|
237048c7ac | ||
|
|
30ff395b7b | ||
|
|
5c0a31b829 | ||
|
|
243bc3d41d | ||
|
|
67b594a950 | ||
|
|
2493c21649 | ||
|
|
d3826e670f | ||
|
|
4b5b1696b7 | ||
|
|
abb59ef14f | ||
|
|
3b7c2816b9 | ||
|
|
484517416f | ||
|
|
39447055d3 | ||
|
|
95cca277c9 | ||
|
|
96083dcaf5 | ||
|
|
75b4cf691b | ||
|
|
7c9171b00b | ||
|
|
3effade266 | ||
|
|
44e7390526 | ||
|
|
c141798abc | ||
|
|
df7ec3fb37 | ||
|
|
90e5507d03 | ||
|
|
332d3494b3 | ||
|
|
6393f5a5d7 | ||
|
|
ce97a9ca7a | ||
|
|
9af071bfe4 | ||
|
|
45a41202f3 | ||
|
|
9768999ca1 | ||
|
|
fc0d11c0a5 | ||
|
|
e6344205bb | ||
|
|
9d7a6556ef | ||
|
|
15f4add0b8 | ||
|
|
464becacd0 | ||
|
|
51a76d0d63 | ||
|
|
052e54d43a | ||
|
|
9e796671dd | ||
|
|
a9a6254f52 | ||
|
|
8b3a09c7ae | ||
|
|
6aa4d812d4 | ||
|
|
07fa719fb0 | ||
|
|
650b34ae24 | ||
|
|
0a935855f3 | ||
|
|
d500aae4dc | ||
|
|
370d3e746d | ||
|
|
ab06149c81 | ||
|
|
e72895c7c9 | ||
|
|
fe4a67daa4 | ||
|
|
09ea989d81 | ||
|
|
7fa14b6948 | ||
|
|
d4974cd35c | ||
|
|
459178811b | ||
|
|
b37f6a010e | ||
|
|
e817164d31 | ||
|
|
09ce43edbf | ||
|
|
2980cd17df | ||
|
|
8c804de643 | ||
|
|
c8241b87e6 | ||
|
|
f204d24ed8 | ||
|
|
d5461ccd8b | ||
|
|
a20d2d93d3 | ||
|
|
57e1eec165 | ||
|
|
d2dbe6afe4 | ||
|
|
72eb163223 | ||
|
|
af16c74c3a | ||
|
|
664f6584b9 | ||
|
|
76fd3bdf8c | ||
|
|
b633adb881 | ||
|
|
b6e534cdd0 | ||
|
|
1dc4adb86f | ||
|
|
0a4d7c4831 | ||
|
|
ad67e55d74 | ||
|
|
2fae64a488 | ||
|
|
1a984601ee | ||
|
|
454168204c | ||
|
|
43642956a2 | ||
|
|
1fe53750fa | ||
|
|
8609c02383 | ||
|
|
355b0c496e | ||
|
|
cd6894acf4 | ||
|
|
b90b3a9c19 | ||
|
|
e7b8488be8 | ||
|
|
06cc0c57e8 | ||
|
|
87072707ed | ||
|
|
ef63319733 | ||
|
|
2068dd5510 | ||
|
|
3e1e171c66 | ||
|
|
5f9ed1a83c | ||
|
|
3d9e54d970 | ||
|
|
52a0fdef6c | ||
|
|
d9b02fb0a0 | ||
|
|
6c8de62b24 | ||
|
|
2d3d1b030a | ||
|
|
88acf0727b | ||
|
|
02839ec779 | ||
|
|
44a8f6a3bf | ||
|
|
751ea92576 | ||
|
|
02007b3619 | ||
|
|
fe0b9e7ef5 | ||
|
|
4b1c6b51f9 | ||
|
|
0b4689f311 | ||
|
|
b77eff8f6f | ||
|
|
2782a33ecf | ||
|
|
94c6cf1b3c | ||
|
|
3c8daacd3e | ||
|
|
2f9907b072 | ||
|
|
287c4d2b03 | ||
|
|
ba9d76b3f9 | ||
|
|
0efaaf7daf | ||
|
|
9ae7d68260 | ||
|
|
486afa9fcd | ||
|
|
1f189f5225 | ||
|
|
580b1fdd68 | ||
|
|
bad0198a36 | ||
|
|
252280b56e | ||
|
|
64bf9c8885 | ||
|
|
935c138736 | ||
|
|
5891b59790 | ||
|
|
4e020c3878 | ||
|
|
3004969a93 | ||
|
|
873e9714f8 | ||
|
|
fe24dd43d4 | ||
|
|
ed91ded2c1 | ||
|
|
757614d57f | ||
|
|
faff8c00b3 | ||
|
|
45fe76eef4 | ||
|
|
80244a09fe | ||
|
|
ea772ae419 | ||
|
|
c68fca7937 | ||
|
|
37e86257f5 | ||
|
|
c182c05c2f | ||
|
|
b02875a12b | ||
|
|
03332b2955 | ||
|
|
f1f99a2371 | ||
|
|
95116dbb5b | ||
|
|
868fd64adf | ||
|
|
2f7ab2d038 | ||
|
|
159e79ee6b | ||
|
|
3d4a82cca2 | ||
|
|
6ba837d73d | ||
|
|
f4775d7673 | ||
|
|
429396aa02 | ||
|
|
8a5e9b71a5 | ||
|
|
fa78102eaf | ||
|
|
5466d474c5 | ||
|
|
80951ae973 | ||
|
|
d5662ef34c | ||
|
|
57783bb5f6 | ||
|
|
d73ee588e5 | ||
|
|
40089d710b | ||
|
|
6ec61950eb | ||
|
|
72c831a80a | ||
|
|
929931a26a | ||
|
|
577e2438c1 | ||
|
|
2679792199 | ||
|
|
2adf982991 | ||
|
|
1fb4a7f428 | ||
|
|
30e72bc5e2 | ||
|
|
35645a7233 | ||
|
|
d583c8d737 | ||
|
|
a83f00c594 | ||
|
|
45bb955b55 | ||
|
|
c448702c1b | ||
|
|
558a6a03ac | ||
|
|
52ec7907d3 | ||
|
|
792f39a888 | ||
|
|
16264f58c1 | ||
|
|
2317c0c3c8 | ||
|
|
3c09ab9736 | ||
|
|
f10dc0e1b3 | ||
|
|
634bc41d8a | ||
|
|
d7ea3648c6 | ||
|
|
e5c8e19ff2 | ||
|
|
4ddba7e44c | ||
|
|
37b31d10c8 | ||
|
|
93cf1f085f | ||
|
|
a84f824a44 | ||
|
|
9c58f3465b | ||
|
|
0e3778132b | ||
|
|
72722635f2 | ||
|
|
a4c7c7fc55 | ||
|
|
2bad73eead | ||
|
|
c8bc25d11a | ||
|
|
4c06689ff5 | ||
|
|
a45c9d0192 | ||
|
|
34e2c4f90b | ||
|
|
c0e2023c81 | ||
|
|
108b55bdc3 | ||
|
|
a29367b7fe | ||
|
|
1d7e8349ed | ||
|
|
67c194dcd1 | ||
|
|
75d3d87d64 | ||
|
|
4ff3f6d4e8 | ||
|
|
d0773f3346 | ||
|
|
ee58d27d94 | ||
|
|
9e3da391a7 | ||
|
|
bd7010678a | ||
|
|
9f716b31b3 | ||
|
|
3dd486d8fa | ||
|
|
33217891ca | ||
|
|
1d37c4e555 | ||
|
|
9f62ec2153 | ||
|
|
372eca76b8 | ||
|
|
e3cb050bbc | ||
|
|
0ae93c7f54 | ||
|
|
1f6386d760 | ||
|
|
66eb3964e2 | ||
|
|
f460d275ba | ||
|
|
fb91bad800 | ||
|
|
eaec22ae53 | ||
|
|
b7c1768cca | ||
|
|
387b26a202 | ||
|
|
8a1e6438f1 | ||
|
|
aaac5ff2e6 | ||
|
|
4dc29630b5 | ||
|
|
f716631439 | ||
|
|
648a780850 | ||
|
|
de0919ff88 | ||
|
|
8b1ea5fb6c | ||
|
|
85627aafcd | ||
|
|
49065158f5 | ||
|
|
bdb3049218 | ||
|
|
e10d1b0f86 | ||
|
|
83b98c8ebf | ||
|
|
b9d5123aa3 | ||
|
|
c09300bfd2 | ||
|
|
fc490cee7b | ||
|
|
3baa3d7fe8 | ||
|
|
764c7c0fdc | ||
|
|
c97ebbbf35 | ||
|
|
85fe32bd08 | ||
|
|
eba3fd2255 | ||
|
|
e2f2c07873 | ||
|
|
70850cd362 | ||
|
|
16992e6391 | ||
|
|
fd0d95140e | ||
|
|
ac65fcd557 | ||
|
|
4d246567b9 | ||
|
|
1ad1c834f3 | ||
|
|
41610b822c | ||
|
|
c794600242 | ||
|
|
9d414f6ec3 | ||
|
|
552e831306 | ||
|
|
c712c96a0b | ||
|
|
eb46bfc3d6 | ||
|
|
f52537b606 | ||
|
|
762419d2fe | ||
|
|
4feb7cb15b | ||
|
|
eb47b85148 | ||
|
|
9faa019a07 | ||
|
|
9589dc91fa | ||
|
|
14507a283e | ||
|
|
af0fe120ec | ||
|
|
16501ec1c6 | ||
|
|
bf867f6aff | ||
|
|
eb4ad4444f | ||
|
|
8fdba17ac6 | ||
|
|
abe8e83945 | ||
|
|
02cbae1f9f | ||
|
|
65908b395f | ||
|
|
4971395d5d | ||
|
|
eeec2038aa | ||
|
|
4fac086556 | ||
|
|
8818061d59 | ||
|
|
b195778eb9 | ||
|
|
de1763618a | ||
|
|
7485066ed4 | ||
|
|
15ce956380 | ||
|
|
e5c63884e2 | ||
|
|
9fef62d83e | ||
|
|
7563b997c2 | ||
|
|
291ff3600b | ||
|
|
2c405304ee | ||
|
|
1e5a7878e5 | ||
|
|
d89e1d7f85 | ||
|
|
98c015b775 | ||
|
|
a56502688f | ||
|
|
c0d757ab19 | ||
|
|
e68fd6eb7f | ||
|
|
90edc38859 | ||
|
|
0f018ea5dd | ||
|
|
1be6254363 | ||
|
|
760af71ed2 | ||
|
|
82f5e9f5b2 | ||
|
|
988c187db3 | ||
|
|
b23129982c | ||
|
|
4d5d0e2150 | ||
|
|
c0c487bf77 | ||
|
|
835d805079 | ||
|
|
c2a767184c | ||
|
|
1e7c8802eb | ||
|
|
a76ec42586 | ||
|
|
7418f36932 | ||
|
|
f9ef5e7e8e | ||
|
|
dbfa351395 | ||
|
|
e775f2b38e | ||
|
|
6f27454be4 | ||
|
|
201723d506 | ||
|
|
17555faaca | ||
|
|
36e0ab9f42 | ||
|
|
6017bd6cba | ||
|
|
30fed8d421 | ||
|
|
8ac5cdd2e1 | ||
|
|
114ac0793a | ||
|
|
d0b750461a | ||
|
|
9693170eb9 | ||
|
|
bbab6c2361 | ||
|
|
cfe3636c78 | ||
|
|
aadf3c702e | ||
|
|
1eac726a07 | ||
|
|
85e2c89794 | ||
|
|
fffcd3b404 | ||
|
|
fbfef4b1a3 | ||
|
|
526a6c0d0c | ||
|
|
1f33b6a74a | ||
|
|
95fc6d43e7 | ||
|
|
d8c261ffcf | ||
|
|
66ea0a9e0f | ||
|
|
435b542e7b | ||
|
|
10cd06f515 | ||
|
|
9da1868c3b | ||
|
|
2649fac4a4 | ||
|
|
6e05226e3b | ||
|
|
c1c3397f66 | ||
|
|
2065db2383 | ||
|
|
08fb868b63 | ||
|
|
8d39ef16b6 | ||
|
|
66c5082aa7 | ||
|
|
26fb58bd1b | ||
|
|
fed8826043 | ||
|
|
9af78a3249 | ||
|
|
bf1ad6cd17 | ||
|
|
15e995f2f5 | ||
|
|
b3e73b0de8 | ||
|
|
dd2633dfcb | ||
|
|
29f0278451 | ||
|
|
f0f98be692 | ||
|
|
5956a64b01 | ||
|
|
5fb36e3e2a | ||
|
|
9d295a1d91 | ||
|
|
39f350fe89 | ||
|
|
8c55e744b8 | ||
|
|
a260d4e25b | ||
|
|
509797588f | ||
|
|
2eed20f1f3 | ||
|
|
1d7b4c0db2 | ||
|
|
ac8cd788cb | ||
|
|
33dc970859 | ||
|
|
f73202734c | ||
|
|
32bacdab4b | ||
|
|
6113c3b533 | ||
|
|
1c634af489 | ||
|
|
428cdea2dc | ||
|
|
f14b55f839 | ||
|
|
5934d263b8 | ||
|
|
3860d919e6 | ||
|
|
fd0b9434ae | ||
|
|
efb30d0262 | ||
|
|
cee0bfbfa2 | ||
|
|
dc684d31d3 | ||
|
|
bfdf7f01b5 | ||
|
|
2cc0579b6e | ||
|
|
bfc472dc0f | ||
|
|
ea4e3680ab | ||
|
|
f02139956d | ||
|
|
cacbd1c212 | ||
|
|
3f78bb7819 | ||
|
|
aa65b01fe3 | ||
|
|
4f0968d678 | ||
|
|
118973cf79 | ||
|
|
df7cc0521f | ||
|
|
40c02d2cc9 | ||
|
|
be70b1a0c1 | ||
|
|
7ec5c122e1 | ||
|
|
a10ab99efc | ||
|
|
9f4398c557 | ||
|
|
d60f6bc89b | ||
|
|
617eeb4ff7 | ||
|
|
5b55825638 | ||
|
|
103d524db5 | ||
|
|
babd084a9b | ||
|
|
749f87397e | ||
|
|
307d47ebaf | ||
|
|
6acd4b91c1 | ||
|
|
f4a9530894 | ||
|
|
ab65385a16 | ||
|
|
ebd761e3dc | ||
|
|
3b942ec790 | ||
|
|
b373486908 | ||
|
|
c8cd5502f6 | ||
|
|
d6dd968c4f | ||
|
|
b8d73d2197 | ||
|
|
17e57f1e0b | ||
|
|
e21bf9fbc7 | ||
|
|
12e281f076 | ||
|
|
a5ce658755 | ||
|
|
ce30dfa82d | ||
|
|
c04d1e9d5c | ||
|
|
80031d122c | ||
|
|
943b090c90 | ||
|
|
39fd53d1f9 | ||
|
|
777e7b3b6d | ||
|
|
2783fe2a9f | ||
|
|
f5880cb001 | ||
|
|
26e501008a | ||
|
|
2c67e3f5c7 | ||
|
|
033596021d | ||
|
|
f36c72e085 | ||
|
|
fefaf7b4be | ||
|
|
91431401ad | ||
|
|
59d96c08a1 | ||
|
|
f10447395b | ||
|
|
c2b6222798 | ||
|
|
3a58c49184 | ||
|
|
440a5e49e2 | ||
|
|
77c10713a3 | ||
|
|
48e367ce2f | ||
|
|
934c23bf39 | ||
|
|
e0febcb6c3 | ||
|
|
044a6c6ea4 | ||
|
|
8ebbc10572 | ||
|
|
7435828082 | ||
|
|
369b595e8a | ||
|
|
9a6d30f03d | ||
|
|
6bdd01d52b | ||
|
|
bae9767498 | ||
|
|
b0e50dedb8 | ||
|
|
96bfb3b259 | ||
|
|
909068dfa8 | ||
|
|
f4c74968be | ||
|
|
0e958f3704 | ||
|
|
a8b2942f93 | ||
|
|
564fe62400 | ||
|
|
5c5013191b | ||
|
|
31989b85d1 | ||
|
|
5ed4af2372 | ||
|
|
4d18e391aa | ||
|
|
2feeb5b927 | ||
|
|
2853f07875 | ||
|
|
4e6adc07a1 | ||
|
|
6a5ed4f418 | ||
|
|
ef25698d3d | ||
|
|
429dcc7000 | ||
|
|
ab3f994626 | ||
|
|
5f8235fcfc | ||
|
|
db325d0fde | ||
|
|
8dc1f49ac7 | ||
|
|
9fe2b651ed | ||
|
|
24e4b75c35 | ||
|
|
34174abf26 | ||
|
|
af778312cb | ||
|
|
280f5614ef | ||
|
|
8566a46793 | ||
|
|
af3c3f4cbe | ||
|
|
034a44e625 | ||
|
|
84155fdff7 | ||
|
|
8255c913a3 | ||
|
|
4d4d17669b | ||
|
|
540a0422f5 | ||
|
|
de4d7d6273 | ||
|
|
1345d95589 | ||
|
|
a5bc19dd69 | ||
|
|
25b143c8cc | ||
|
|
82cca959e4 | ||
|
|
d52374a0b6 | ||
|
|
c71a18ca07 | ||
|
|
8d73ae2cc0 | ||
|
|
7b0c74ca3e | ||
|
|
62be9f9064 | ||
|
|
2fdc113d93 | ||
|
|
b70fb543f5 | ||
|
|
31c88f9f5a | ||
|
|
af3a818f12 | ||
|
|
a07532d4c7 | ||
|
|
fb449ca4bc | ||
|
|
4da65643c0 | ||
|
|
bf64db474c | ||
|
|
344a14416d | ||
|
|
be47a0c5db | ||
|
|
808b980301 | ||
|
|
3528480562 | ||
|
|
6bd263d23f | ||
|
|
2b9aa3864b | ||
|
|
81155caf88 | ||
|
|
c7c057483d | ||
|
|
7f5170ae4d | ||
|
|
49b8693b11 | ||
|
|
d7b0a14eb5 | ||
|
|
8996cb1e18 | ||
|
|
38f278cce0 | ||
|
|
bb4e475044 | ||
|
|
4fbe36a8e9 | ||
|
|
a1a40b562a | ||
|
|
3a4a1bb005 | ||
|
|
4f8c10c1aa | ||
|
|
4833348769 | ||
|
|
ad07d59a78 | ||
|
|
e8aaabd1d3 | ||
|
|
d7d7396eeb | ||
|
|
41538860cd | ||
|
|
5c9f8a0cf0 | ||
|
|
11c997c3e9 | ||
|
|
1b1184a5e1 | ||
|
|
4ffcc43ed9 | ||
|
|
4ccaac46a6 | ||
|
|
ba88b84055 | ||
|
|
9086634c8f | ||
|
|
e88f1f1edb | ||
|
|
13c7486f0e | ||
|
|
8e811ba141 | ||
|
|
c5d86afed6 | ||
|
|
43a0cfbee1 | ||
|
|
8567d5f302 | ||
|
|
36d1bddc5b | ||
|
|
bf992680af | ||
|
|
e064298dfc | ||
|
|
e01a10ced5 | ||
|
|
2aa10fb1ed | ||
|
|
66f442ad76 | ||
|
|
11f1ecebcf | ||
|
|
e339cb27f6 | ||
|
|
bce3232b39 | ||
|
|
b08970ce39 | ||
|
|
533f88ceaf | ||
|
|
c8f0469a44 | ||
|
|
a1fc24e532 | ||
|
|
d80daa48df | ||
|
|
92aae2803f | ||
|
|
77cbbbfaf2 | ||
|
|
6c6649f912 | ||
|
|
55fbaabfda | ||
|
|
56c2518936 | ||
|
|
2b48152da6 | ||
|
|
e743e23d6b | ||
|
|
f846f921f2 | ||
|
|
e52a599be6 | ||
|
|
99744bd318 | ||
|
|
1060035838 | ||
|
|
69cc20013e | ||
|
|
3572bfd37d | ||
|
|
a6b82990f5 | ||
|
|
540c1fd9c6 | ||
|
|
46d36cd412 | ||
|
|
a170764fc5 | ||
|
|
f72873a1ce | ||
|
|
82496c30b1 | ||
|
|
cb3c007acd | ||
|
|
cb460a797c | ||
|
|
1b666d01cf | ||
|
|
df24c7d2f8 | ||
|
|
133c15c0e2 | ||
|
|
116e18a19e | ||
|
|
ec0af7c97b | ||
|
|
a34a877737 | ||
|
|
f018794465 | ||
|
|
d45f5e9791 | ||
|
|
04bd0d834c | ||
|
|
ed4f0c4713 | ||
|
|
c747068d4a | ||
|
|
aa0fbdc993 | ||
|
|
b50bfa7277 | ||
|
|
e91988f679 | ||
|
|
3ed1fce3fb | ||
|
|
e3ea0b511a | ||
|
|
c411c663de | ||
|
|
1c6f66fc14 | ||
|
|
1f927a374c | ||
|
|
07c4225aa8 | ||
|
|
42a85ac39f | ||
|
|
16e6d31ee3 | ||
|
|
a6db5b436d | ||
|
|
47675f2e28 | ||
|
|
0642bbefa7 | ||
|
|
43da603d52 | ||
|
|
f9e1f4d111 | ||
|
|
1508564e10 | ||
|
|
c14e6f4dcc | ||
|
|
75b6a20134 | ||
|
|
d82a07c221 | ||
|
|
c6f7dbcaa5 | ||
|
|
82cd099e48 | ||
|
|
546c011dd8 | ||
|
|
10b33ccaf6 | ||
|
|
bc01572176 | ||
|
|
ccd2064722 | ||
|
|
0fb42901dd | ||
|
|
a4280d7457 | ||
|
|
6966ede68b | ||
|
|
27dd14a5a2 | ||
|
|
2494301f1e | ||
|
|
f13143accb | ||
|
|
26d340a917 | ||
|
|
cc75cd4102 | ||
|
|
cf8615b231 | ||
|
|
30f473a2b1 | ||
|
|
4618709baa | ||
|
|
16b098ea42 | ||
|
|
b31c4d407a | ||
|
|
28c36cc5e2 | ||
|
|
6bfbcb842e | ||
|
|
a0eade4fdd | ||
|
|
ee24b7e88a | ||
|
|
c9baddf9a4 | ||
|
|
c5c780a685 | ||
|
|
421aaabf62 | ||
|
|
86788f034f | ||
|
|
232d3758cf | ||
|
|
71bcf9b31d | ||
|
|
bf4ee4f064 | ||
|
|
aa3bdfeb17 | ||
|
|
ce6967d396 | ||
|
|
330065f5e0 | ||
|
|
944db82553 | ||
|
|
c257361f05 | ||
|
|
ffdbfb018a | ||
|
|
cfa2bd6b08 | ||
|
|
51e90c3ce0 | ||
|
|
d69149f43e | ||
|
|
f261663f3d | ||
|
|
e5948dd1d3 | ||
|
|
5f13aab7d8 | ||
|
|
292d489592 | ||
|
|
0a01f20e35 | ||
|
|
2bd08d5c4c | ||
|
|
adae5126db | ||
|
|
dddf1bcb76 | ||
|
|
d23d4b0fd4 | ||
|
|
658f7550b3 | ||
|
|
cfb50ae21e | ||
|
|
9b0a365822 | ||
|
|
97ab130619 | ||
|
|
3578fde290 | ||
|
|
f382da69b8 | ||
|
|
2da3d215c6 | ||
|
|
43ed29c14c | ||
|
|
9df0283689 | ||
|
|
04b82cf4a5 | ||
|
|
274c3012b0 | ||
|
|
2b24a4934f | ||
|
|
692a423072 | ||
|
|
148f55335f | ||
|
|
2f752842a1 | ||
|
|
aff72996a1 | ||
|
|
08e425bcf6 | ||
|
|
454ddc601a | ||
|
|
b025f208a8 | ||
|
|
b60e533b9d | ||
|
|
37af0e0d59 | ||
|
|
ac1de5bce9 | ||
|
|
ef7ff55e07 | ||
|
|
608db5b982 | ||
|
|
8dd69efd48 | ||
|
|
73f7fba793 | ||
|
|
867e2402d2 | ||
|
|
a3b9e61967 | ||
|
|
cd149b68e8 | ||
|
|
cd3583c736 | ||
|
|
441f86f3ed | ||
|
|
f62bea65a1 | ||
|
|
886b574987 | ||
|
|
2888bac275 | ||
|
|
35c9206916 | ||
|
|
c4c5b59312 | ||
|
|
f25fb4e5ac | ||
|
|
868bfec5e6 | ||
|
|
e7c242213a | ||
|
|
862552ead4 | ||
|
|
9d90e0c167 | ||
|
|
a281f227cd | ||
|
|
5b981278db | ||
|
|
c1091ed3d1 | ||
|
|
08aed63455 | ||
|
|
90a550ee4f | ||
|
|
34869fc2a2 | ||
|
|
3deb10156d | ||
|
|
8c0e84de05 | ||
|
|
23be083c39 | ||
|
|
217aafce39 | ||
|
|
03210c63f4 | ||
|
|
a90510f6f2 | ||
|
|
36d91aded6 | ||
|
|
9afe8a1297 | ||
|
|
1e6f272034 | ||
|
|
a1aa2f81ef | ||
|
|
62899ef308 | ||
|
|
7f3396c002 | ||
|
|
453bc18196 | ||
|
|
dbb6b57b76 | ||
|
|
d7137db78c | ||
|
|
5ac4f2d80b | ||
|
|
5ba5271da9 | ||
|
|
b834e3015a | ||
|
|
c8721ded62 | ||
|
|
1e97372d24 | ||
|
|
fd4e111784 | ||
|
|
75094e7e21 | ||
|
|
8db2d674ed | ||
|
|
ffb140fab3 | ||
|
|
e93543983c | ||
|
|
0d066f80ff | ||
|
|
ccca1b2016 | ||
|
|
fec0e31a25 | ||
|
|
d246aa8f6d | ||
|
|
66bfba2258 | ||
|
|
b53b4373cb | ||
|
|
0810f93883 | ||
|
|
a4e696a252 | ||
|
|
0951d08f52 | ||
|
|
dbf367e070 | ||
|
|
6447ba8ec8 | ||
|
|
43e260966f | ||
|
|
b0e301b046 | ||
|
|
c8a9ea4979 | ||
|
|
afb7fc05da | ||
|
|
14124ccca8 | ||
|
|
df5022dbc3 | ||
|
|
015e798a31 | ||
|
|
c19125bb02 | ||
|
|
0e6ac5baf1 | ||
|
|
2c8d1b5b8c | ||
|
|
f7c0c1c21a | ||
|
|
4edd98f7ce | ||
|
|
df0abb7000 | ||
|
|
4f93da307f | ||
|
|
a8765d54aa | ||
|
|
bb834358d4 | ||
|
|
ec0f3d22e7 | ||
|
|
009b75cab6 | ||
|
|
d64668df1e | ||
|
|
72e808c9a7 | ||
|
|
96cc9223be | ||
|
|
13b099fbd0 | ||
|
|
1a8416c297 | ||
|
|
8538bec99e | ||
|
|
f983900597 | ||
|
|
3af02020ff | ||
|
|
8c71488757 | ||
|
|
74316bf702 | ||
|
|
7aa8c435c9 | ||
|
|
daeb51253d | ||
|
|
0ce2f41db4 | ||
|
|
02e5a962d7 | ||
|
|
dcc32dc69f | ||
|
|
af3d6681dd | ||
|
|
106968a3be | ||
|
|
2cd56ca044 | ||
|
|
eff198d079 | ||
|
|
c3b5b88cd2 | ||
|
|
4e19e87bbc | ||
|
|
6be6f6585d | ||
|
|
d7579f0c99 | ||
|
|
b741679c9c | ||
|
|
852990e967 | ||
|
|
21fd75b500 | ||
|
|
3e5d9010a3 | ||
|
|
784616ec29 | ||
|
|
6251d19946 | ||
|
|
17b1332a2a | ||
|
|
74eec3bdbe | ||
|
|
a9901c4ea7 | ||
|
|
348a2f91ee | ||
|
|
7115d862ea | ||
|
|
52ed4aa631 | ||
|
|
92cedf8931 | ||
|
|
e1097f11b5 | ||
|
|
eb34c0e46b | ||
|
|
ee2181b371 | ||
|
|
2a5d090e91 | ||
|
|
857bebe819 | ||
|
|
9728152768 | ||
|
|
2566a85429 | ||
|
|
46b3130198 | ||
|
|
8664516c8d | ||
|
|
0733c246ea | ||
|
|
4203985e3e | ||
|
|
900298bce7 | ||
|
|
09c37f508e | ||
|
|
c9e01bcc81 | ||
|
|
b079545e0f | ||
|
|
c3bf0f8cbf | ||
|
|
e945bca1d9 | ||
|
|
bf5835de5e | ||
|
|
7503f0cb10 | ||
|
|
3a751bcf9b | ||
|
|
c31ba101d6 | ||
|
|
ecadc74d44 | ||
|
|
63d25aaf19 | ||
|
|
5af82c3c05 | ||
|
|
8b4d74ed17 | ||
|
|
6a6a9064d5 | ||
|
|
b188a9488a | ||
|
|
7c2635f65d | ||
|
|
c67d0a0e1a | ||
|
|
7ee78e89c9 | ||
|
|
40370e104f | ||
|
|
a8809baa6c | ||
|
|
244d5d2c3b | ||
|
|
a0370a6617 | ||
|
|
eb077fcc75 | ||
|
|
c5adc50eed | ||
|
|
6e71b6fd31 | ||
|
|
278382589d | ||
|
|
6f0f6cf21a | ||
|
|
01331ed311 | ||
|
|
f638a3d50c | ||
|
|
512c41dbaf | ||
|
|
f6bab4adcf | ||
|
|
526ecee3da | ||
|
|
1bc9815d53 | ||
|
|
78bd7c9465 | ||
|
|
d74df8692b | ||
|
|
eda86412cc | ||
|
|
cce5945fd2 | ||
|
|
72038258ed | ||
|
|
056d8fa9ad | ||
|
|
3888e0066f | ||
|
|
ee6571d050 | ||
|
|
9472288304 | ||
|
|
fd5e10cfdf | ||
|
|
aeae18ec37 | ||
|
|
03d3943e99 | ||
|
|
214d137672 | ||
|
|
83db275ddf | ||
|
|
b8f16d081a | ||
|
|
675b01ed48 | ||
|
|
b20224a096 | ||
|
|
fd6edfccc4 | ||
|
|
4c58438e8a | ||
|
|
5ff383a025 | ||
|
|
dcb6854683 | ||
|
|
e4644bfe5a | ||
|
|
93168fef87 | ||
|
|
9832822bdf | ||
|
|
5d91aa3bcd | ||
|
|
354ab5229b | ||
|
|
00de0cd4b5 | ||
|
|
26210216da | ||
|
|
e29c14a22b | ||
|
|
a6990c8fb8 | ||
|
|
3e40e71b96 | ||
|
|
3f45abe331 | ||
|
|
6777c62789 | ||
|
|
1aac869738 | ||
|
|
493554ea30 | ||
|
|
1cf87c639b | ||
|
|
2cb3d92163 | ||
|
|
89b6e52a73 | ||
|
|
97407c10ff | ||
|
|
81222dadbc | ||
|
|
400555c391 | ||
|
|
9125b05809 | ||
|
|
139b353a28 | ||
|
|
fc474a07d0 | ||
|
|
8fd8fa09a5 | ||
|
|
41ae831d0e | ||
|
|
dbca540d70 | ||
|
|
dc7eca4bf9 | ||
|
|
fb07149cb7 | ||
|
|
b2bd5a5548 | ||
|
|
aa6b333e79 | ||
|
|
0cb9740535 | ||
|
|
46eadd54e5 | ||
|
|
6b032b49fe | ||
|
|
35f78ee0f9 | ||
|
|
5ec36df7f0 | ||
|
|
f918fd65b6 | ||
|
|
d08a39483d | ||
|
|
9191f4ff2d | ||
|
|
19232f554f | ||
|
|
b4a83414ac | ||
|
|
cb0e62576d | ||
|
|
e3f557406f | ||
|
|
676af831c0 | ||
|
|
873d76d72c | ||
|
|
8ee490b881 | ||
|
|
ff31b277f6 | ||
|
|
120eb5b502 | ||
|
|
a93e288d6a | ||
|
|
8cf9311ced | ||
|
|
713e781473 | ||
|
|
a32295e74a | ||
|
|
204b02de3e | ||
|
|
8379edce99 | ||
|
|
e265ab67c7 | ||
|
|
fde1f13b4e | ||
|
|
9c3839c7e2 | ||
|
|
c0fd702cc7 | ||
|
|
429419c4af | ||
|
|
56ae20602d | ||
|
|
a4b80cc2e4 | ||
|
|
4994cc07a0 | ||
|
|
e96cf02561 | ||
|
|
764c9b2986 | ||
|
|
40c6499d3a | ||
|
|
3a78efd83c | ||
|
|
eb33cf75e3 | ||
|
|
863d8e6405 | ||
|
|
1fc5a45b9e | ||
|
|
7751fece35 | ||
|
|
7670c42462 | ||
|
|
b72fc3cd25 | ||
|
|
4cc1a4f74c | ||
|
|
540607086c | ||
|
|
7d929e98af | ||
|
|
0086097639 | ||
|
|
daff0badc8 | ||
|
|
22c4d8fabe | ||
|
|
3485482460 | ||
|
|
c43873379c | ||
|
|
ea5e5df5a3 | ||
|
|
f2caf2f1ff | ||
|
|
07d4020fca | ||
|
|
2142e529ff | ||
|
|
b9d502e2e6 | ||
|
|
8c80862c10 | ||
|
|
2356c7b63d | ||
|
|
9c24fc25f5 | ||
|
|
4f1a6d56c1 | ||
|
|
b71b7e209e | ||
|
|
2581e98aff | ||
|
|
afc7136bae | ||
|
|
e489170558 | ||
|
|
50106f2bd3 | ||
|
|
e96f4a5be6 | ||
|
|
4768ac5fda | ||
|
|
c91fcc527a | ||
|
|
8520ff35b3 | ||
|
|
9b8a98f4ec | ||
|
|
4bd4afaec7 | ||
|
|
69352d8414 | ||
|
|
4a21ea6575 | ||
|
|
86bbb9fe38 | ||
|
|
4030d4fc20 | ||
|
|
182f69a9ec | ||
|
|
fb40efe4b7 | ||
|
|
9d00c00072 | ||
|
|
10c3118f9c | ||
|
|
1fa149dca2 | ||
|
|
60f4c963b5 | ||
|
|
51b8e64972 | ||
|
|
ae542dce74 | ||
|
|
fa8a4f2020 | ||
|
|
481bdd56d3 | ||
|
|
1a9083ddb7 | ||
|
|
9779f43620 | ||
|
|
d31e82edfc | ||
|
|
981535a1c3 | ||
|
|
5354e39e5f | ||
|
|
ca9293cbfb | ||
|
|
e2fe6a8249 | ||
|
|
a8347b7ada | ||
|
|
bcbf7c3b7b | ||
|
|
6a26cb280f | ||
|
|
fd658ace9d | ||
|
|
5e71a2aa3f | ||
|
|
e3fb923b34 | ||
|
|
f55b257609 | ||
|
|
81bf3dae5c | ||
|
|
d0074f3411 | ||
|
|
2cc2d971c6 | ||
|
|
5830f5590e | ||
|
|
75facebe80 | ||
|
|
0130398e9f | ||
|
|
22d9b86e9f | ||
|
|
c87b671275 | ||
|
|
1eb5857811 | ||
|
|
5fc1cb39a6 | ||
|
|
1f8e29276e | ||
|
|
cf02c7fd02 | ||
|
|
5d93c64c0e | ||
|
|
c738928ea3 | ||
|
|
707310db64 | ||
|
|
59bf43dc1f | ||
|
|
fe461381a2 | ||
|
|
685873ab42 | ||
|
|
b6a951903e | ||
|
|
acfa84918e | ||
|
|
75304eb3be | ||
|
|
1d7eb59ff2 | ||
|
|
4273cc9e29 | ||
|
|
29be2de5cb | ||
|
|
91b0496c89 | ||
|
|
f043f948de | ||
|
|
7ef7a8f306 | ||
|
|
db8eea2468 | ||
|
|
55813d9209 | ||
|
|
4c05daae1b | ||
|
|
16eb7232c3 | ||
|
|
c28ffcdd9f | ||
|
|
4b8652f1c4 | ||
|
|
674bd8f264 | ||
|
|
1ba832dbfe | ||
|
|
d3e4d3fbcb | ||
|
|
58a3cb4fbd | ||
|
|
8ad1551b15 | ||
|
|
123771163a | ||
|
|
f80a759488 | ||
|
|
42f8a4715e | ||
|
|
c29892e340 | ||
|
|
b4a2ed6bb5 | ||
|
|
67e8caf045 | ||
|
|
2562debe31 | ||
|
|
87e2fd610c | ||
|
|
af118bcc53 | ||
|
|
7e01172b4c | ||
|
|
f56ae93772 | ||
|
|
3834805929 | ||
|
|
50b6057bbf | ||
|
|
c0199abacf | ||
|
|
77688c74f3 | ||
|
|
47ab7419ac | ||
|
|
dc209f77ec | ||
|
|
76aa8c7df5 | ||
|
|
671a29ff34 | ||
|
|
eb35794aca | ||
|
|
a8d6691dee | ||
|
|
955f4ae977 | ||
|
|
25a869a686 | ||
|
|
7aa8030b76 | ||
|
|
108d843bba | ||
|
|
099fea8565 | ||
|
|
a573a2ada1 | ||
|
|
1468ca8ebc | ||
|
|
274aea9f8f | ||
|
|
38a99a75ed | ||
|
|
6e06bd0cb4 | ||
|
|
02a793998a | ||
|
|
81ab9469b7 | ||
|
|
bcc928495d | ||
|
|
621ae7dbc9 | ||
|
|
85f2c03903 | ||
|
|
f7fd741d43 | ||
|
|
fad0d81837 | ||
|
|
09687409dc | ||
|
|
091bcd107c | ||
|
|
f9b300d63a | ||
|
|
4f2acc2c96 | ||
|
|
6aa4a60d5c | ||
|
|
b075bf51b0 | ||
|
|
de2341ece0 | ||
|
|
ff67e7d47c | ||
|
|
31644ed39d | ||
|
|
acb235ef4f | ||
|
|
d554835b50 | ||
|
|
c8453d80fc | ||
|
|
f3f713ae65 | ||
|
|
cfa741e597 | ||
|
|
13fb2351ed | ||
|
|
3555ba518d | ||
|
|
c5a19ca42e | ||
|
|
153eb7e9d3 | ||
|
|
7ba52d4931 | ||
|
|
ebe5b46653 | ||
|
|
1bd82d4914 | ||
|
|
89775fa94f | ||
|
|
4456872635 | ||
|
|
ee9ae22651 | ||
|
|
afe0f46768 | ||
|
|
203d8c3481 | ||
|
|
c9ae49255d | ||
|
|
51f17d3358 | ||
|
|
cacdd58b41 | ||
|
|
8b7bcbbc47 | ||
|
|
bdf9482e75 | ||
|
|
b94d0b66e6 | ||
|
|
1dff122a94 | ||
|
|
fb8065df27 | ||
|
|
4274139210 | ||
|
|
b422a44c03 | ||
|
|
285479c0bc | ||
|
|
e641ec12fa | ||
|
|
36fda28a92 | ||
|
|
1ece515074 | ||
|
|
04f840d907 | ||
|
|
df8ccc04eb | ||
|
|
dd764b93e0 | ||
|
|
335497f688 | ||
|
|
41a9251982 | ||
|
|
84bf03580d | ||
|
|
43d5dfcb71 | ||
|
|
7a9fc7ef12 | ||
|
|
ecf24cd4d9 | ||
|
|
ba828e59de | ||
|
|
34719f94b4 | ||
|
|
c95a6792e5 | ||
|
|
88529d5c25 | ||
|
|
3489878395 | ||
|
|
d938013733 | ||
|
|
dfe2ea4d0a | ||
|
|
7a3e345cf7 | ||
|
|
1fb8c9c896 | ||
|
|
2ed97640d5 | ||
|
|
6d31aa6f67 | ||
|
|
a76ffbd194 | ||
|
|
0d7e0ba087 | ||
|
|
618d491f92 | ||
|
|
21a3462798 | ||
|
|
d2c5783e5a | ||
|
|
007cb4516a | ||
|
|
8ec93d9973 | ||
|
|
0a64708302 | ||
|
|
b964f6dd22 | ||
|
|
14233188be | ||
|
|
e3193c6243 | ||
|
|
8782714ec3 | ||
|
|
03010ecde7 | ||
|
|
97d63d3da4 | ||
|
|
a212f4eb5e | ||
|
|
5c993fd568 | ||
|
|
df60189266 | ||
|
|
97f61a9ecc | ||
|
|
8740e6ca66 | ||
|
|
c9eb3c2b54 | ||
|
|
d9411bc9bb | ||
|
|
a3a1b143cf | ||
|
|
5c18c78b50 | ||
|
|
3bcb5f147d | ||
|
|
1bfe43ff76 | ||
|
|
2d2019c059 | ||
|
|
4613619841 | ||
|
|
44e3c7eb6d | ||
|
|
fd0b460391 | ||
|
|
3b917b9d79 | ||
|
|
970049fde8 | ||
|
|
5b40cc4a01 | ||
|
|
0919c5642d | ||
|
|
de4f90b3f4 | ||
|
|
a1c2270956 | ||
|
|
b9cf0cfc44 | ||
|
|
d2869e4749 | ||
|
|
3ec911b62c | ||
|
|
4ff66c1cb6 | ||
|
|
184146b825 | ||
|
|
1e8543efb1 | ||
|
|
a976e54c19 | ||
|
|
88e26da026 | ||
|
|
58522b8f67 | ||
|
|
f09bb17da4 | ||
|
|
353ae0f090 | ||
|
|
0404881d85 | ||
|
|
fb88d54c31 | ||
|
|
a523356504 | ||
|
|
91ff7f1c80 | ||
|
|
51f6c268d3 | ||
|
|
5e1b284ad0 | ||
|
|
a962d28674 | ||
|
|
7f0c1f823a | ||
|
|
d08a2b8c02 | ||
|
|
d7f3518a9a | ||
|
|
d34d2a023c | ||
|
|
1ecd954199 | ||
|
|
6e161ab84e | ||
|
|
97c59f36a2 | ||
|
|
89443eac0e | ||
|
|
3e8414e259 | ||
|
|
06a30f0447 | ||
|
|
4e636aa53a | ||
|
|
7bd18ef331 | ||
|
|
181fcc3965 | ||
|
|
3a1f745e65 | ||
|
|
2dc3ea3f12 | ||
|
|
1e8ed49661 | ||
|
|
84bf169458 | ||
|
|
3dabe62254 | ||
|
|
0d246ac95b | ||
|
|
2d0612c972 | ||
|
|
4cf2b78fca | ||
|
|
3af8a22d13 | ||
|
|
b0c7b3a38b | ||
|
|
3be03b681b | ||
|
|
dd5b7240b6 | ||
|
|
2b9b82e5c4 | ||
|
|
c5c14bb798 | ||
|
|
a201fc773a | ||
|
|
d897164d5c | ||
|
|
e558d3f9ad | ||
|
|
6a7078f634 | ||
|
|
b14676f0c5 | ||
|
|
4cef1af8cb | ||
|
|
42aa407adc | ||
|
|
e7298d60d3 | ||
|
|
9c0ff932c8 | ||
|
|
288dd221f8 | ||
|
|
d374ef9ffe | ||
|
|
7fa6a363b2 | ||
|
|
13da3390e5 | ||
|
|
4164e6ee8e | ||
|
|
2b454f99dd | ||
|
|
2025634417 | ||
|
|
42e582a6ad | ||
|
|
339a7e9409 | ||
|
|
f420911e19 | ||
|
|
2e39a5fff0 | ||
|
|
e0f7deabfd | ||
|
|
abe345e925 | ||
|
|
4d33554465 | ||
|
|
32c559838d | ||
|
|
62a0bf8732 | ||
|
|
24ae8b4498 | ||
|
|
2945a91189 | ||
|
|
26735dac8d | ||
|
|
7c0a41c998 | ||
|
|
778a89ef8a | ||
|
|
83d85dc928 | ||
|
|
25a06aee01 | ||
|
|
c89ea1ad56 | ||
|
|
76f9f23b16 | ||
|
|
a45f6bea5b | ||
|
|
49fec95b33 | ||
|
|
d38fd80dff | ||
|
|
37b03ef5d2 | ||
|
|
0c878a056e | ||
|
|
1da4bef068 | ||
|
|
65c156750d | ||
|
|
bd34dfe1f7 | ||
|
|
78445f9879 | ||
|
|
053210330e | ||
|
|
df894f91f2 | ||
|
|
f758614b0a | ||
|
|
71846c98b3 | ||
|
|
272cad7b97 | ||
|
|
5eb9523325 | ||
|
|
d2b2f2f6b6 | ||
|
|
55f9720a44 | ||
|
|
9d52e6acbf | ||
|
|
8f649f5ab4 | ||
|
|
fbfb54e3e2 | ||
|
|
e523d908bf | ||
|
|
8b2d416035 | ||
|
|
078356458b | ||
|
|
4846246f12 | ||
|
|
dc10b3d904 | ||
|
|
05d4a5e4a3 | ||
|
|
2883b6dc17 | ||
|
|
5f9e153db8 | ||
|
|
c05153f00a | ||
|
|
3616641e93 | ||
|
|
78cbeca606 | ||
|
|
354c7ecddf | ||
|
|
4d659318c4 | ||
|
|
9d4399eb28 | ||
|
|
32702559f6 | ||
|
|
310a1dfaec | ||
|
|
6528b5f25b | ||
|
|
19378abfae | ||
|
|
593e86c15d | ||
|
|
6226d60c9a | ||
|
|
aa35dc9437 | ||
|
|
098d05c27f | ||
|
|
05917c6d2f | ||
|
|
e300c62d76 | ||
|
|
3829d1f964 | ||
|
|
0d2593e0e3 | ||
|
|
e99f0d12b8 | ||
|
|
d0e736f31b | ||
|
|
3a5db3c16d | ||
|
|
0cddd9c417 | ||
|
|
51ce3e1093 | ||
|
|
db50880399 | ||
|
|
8e63da2f04 | ||
|
|
a0b502dd44 | ||
|
|
ff272c797a | ||
|
|
f4b93c8a5a | ||
|
|
c01056b99a | ||
|
|
12ca721e0b | ||
|
|
9c7d519ab2 | ||
|
|
5299079f01 | ||
|
|
4c8575dea3 | ||
|
|
f3aaa8bcee | ||
|
|
2cc53321ae | ||
|
|
64e9d704e2 | ||
|
|
1c1f10056d | ||
|
|
ccae4a8888 | ||
|
|
5c1840914b | ||
|
|
be61e6724a | ||
|
|
38975ecee0 | ||
|
|
d8b31c02e2 | ||
|
|
331b961819 | ||
|
|
769e4d5193 | ||
|
|
dbf7e690b8 | ||
|
|
12a9c2b441 | ||
|
|
12d3c52de2 | ||
|
|
614f0b4350 | ||
|
|
74c78ef927 | ||
|
|
765c2de148 | ||
|
|
644fef1e84 | ||
|
|
b9053a24dc | ||
|
|
0be8326351 | ||
|
|
a7a73df696 | ||
|
|
e9b4c47887 | ||
|
|
7ee6f1de39 | ||
|
|
eea51bee30 | ||
|
|
0beb03fe53 | ||
|
|
4ccfe020a2 | ||
|
|
19735d5416 | ||
|
|
e53a45b3e0 | ||
|
|
e00d1ed78c | ||
|
|
83a4562b98 | ||
|
|
27fef50919 | ||
|
|
947a00f6c9 | ||
|
|
2f36d7d259 | ||
|
|
e2d7027074 | ||
|
|
a2de92d2a3 | ||
|
|
edef65f333 | ||
|
|
e7dfe97ecc | ||
|
|
cd0fe51109 | ||
|
|
6c0a5021cd | ||
|
|
c9b34681b7 | ||
|
|
8422c3a9d3 | ||
|
|
daed251d0d | ||
|
|
ddb6d791e8 | ||
|
|
107170163a | ||
|
|
7aa09e393c | ||
|
|
75cc3e40a5 | ||
|
|
78cf84310c | ||
|
|
0f6622fab6 | ||
|
|
bb20df0db9 | ||
|
|
8a2b5f53f6 | ||
|
|
e30db9816e | ||
|
|
5f8efc3aa8 | ||
|
|
f3565f3f70 | ||
|
|
2be7ee6ee0 | ||
|
|
f7a8cd1250 | ||
|
|
3f5cc224a6 | ||
|
|
26363638bc | ||
|
|
1cd51181eb | ||
|
|
a1d5c340e8 | ||
|
|
6f1763317a | ||
|
|
8973393333 | ||
|
|
a5d53c4453 | ||
|
|
85fda89413 | ||
|
|
7b6c11adb7 | ||
|
|
7e14666802 | ||
|
|
6fbf6721b9 | ||
|
|
ec76498686 | ||
|
|
05634e61a7 | ||
|
|
2dd7ef5302 | ||
|
|
49a5a556e9 | ||
|
|
855dd98c62 | ||
|
|
2759c9e3bd | ||
|
|
594b8b786a | ||
|
|
3387d085b4 | ||
|
|
ee6b842f9a | ||
|
|
fce11d7b46 | ||
|
|
48c9b8abdc | ||
|
|
c3c99f317e | ||
|
|
9deb50f812 | ||
|
|
18c02ea991 | ||
|
|
3e23a5ff75 | ||
|
|
076bb9c356 | ||
|
|
c21af17a30 | ||
|
|
1d298ea5cf | ||
|
|
f214ebf4e9 | ||
|
|
ce5ca6f845 | ||
|
|
cc2be00abb | ||
|
|
bbfcce1cc6 | ||
|
|
d81961ccee | ||
|
|
c1da5dd513 | ||
|
|
7c201fed81 | ||
|
|
f3a97b6c08 | ||
|
|
6509067856 | ||
|
|
6482718dbf | ||
|
|
6dac4c76eb | ||
|
|
0d825eb590 | ||
|
|
6cc0d9103d | ||
|
|
514a1ad7d0 | ||
|
|
7f99353ca0 | ||
|
|
a58657403e | ||
|
|
b9a86df795 | ||
|
|
cf94ce6a54 | ||
|
|
e9d112ac39 | ||
|
|
f4c6bf30b6 | ||
|
|
626522d1bb | ||
|
|
58f3905af4 | ||
|
|
89b4984009 | ||
|
|
804c779359 | ||
|
|
d699add216 | ||
|
|
e36fb3cc17 | ||
|
|
fcf57a5066 | ||
|
|
715c886dad | ||
|
|
e2cd45b18a | ||
|
|
a8f8708418 | ||
|
|
ca5b02af9a | ||
|
|
832d43efdc | ||
|
|
e9daff7616 | ||
|
|
22999a9861 | ||
|
|
64edf70b93 | ||
|
|
75dbb0bc19 | ||
|
|
e34439dcd7 | ||
|
|
9c84ce1e6f | ||
|
|
907003881e | ||
|
|
4e2ec6b7f8 | ||
|
|
4b90ff892f | ||
|
|
5591a82a15 | ||
|
|
598c06f5b0 | ||
|
|
bf12001c04 | ||
|
|
e59df0fbb5 | ||
|
|
47f5c51b2d | ||
|
|
e9b982b8ea | ||
|
|
770cf71c13 | ||
|
|
5734fb897c | ||
|
|
df8aa642c5 | ||
|
|
5c76cfb071 | ||
|
|
75f8bc2679 | ||
|
|
208c1cfb1a | ||
|
|
1d543b3737 | ||
|
|
b41b72c316 | ||
|
|
26703df4d7 | ||
|
|
f490f6af98 | ||
|
|
70ad551cf4 | ||
|
|
48705b6d8c | ||
|
|
6e5c8750f6 | ||
|
|
1f78f30756 | ||
|
|
df5b97c614 | ||
|
|
1de892bf0e | ||
|
|
457cbbd954 | ||
|
|
842edd62a6 | ||
|
|
7b374a4b08 | ||
|
|
d0f5664358 | ||
|
|
053546402d | ||
|
|
0fa9d0ab12 | ||
|
|
9d0eab6305 | ||
|
|
79a90d0671 | ||
|
|
451e95e48d | ||
|
|
d3f535a0a7 | ||
|
|
4fc54dae32 | ||
|
|
4e70d078ef | ||
|
|
31673d8acd | ||
|
|
d5e127bfea | ||
|
|
f40374deb9 | ||
|
|
f8cbea4dbf | ||
|
|
e3bd6cd5ef | ||
|
|
71e7b0ab71 | ||
|
|
fd662a1855 | ||
|
|
2a8940415d | ||
|
|
b63a271d55 | ||
|
|
47e70efca6 | ||
|
|
0f3dd88029 | ||
|
|
35a052f4ab | ||
|
|
a31e78817e | ||
|
|
f250d7ab47 | ||
|
|
8686ab9a9d | ||
|
|
2cd98c2c60 | ||
|
|
c9eec4fa06 | ||
|
|
6230c608d0 | ||
|
|
ab8392b856 | ||
|
|
067f02f9d8 | ||
|
|
0c1f8550b8 | ||
|
|
7287204279 | ||
|
|
e392212c0e | ||
|
|
dacfe38429 | ||
|
|
1eb75d9be7 | ||
|
|
a122d35e43 | ||
|
|
445543e256 | ||
|
|
cfeffe40f6 | ||
|
|
dfb72ccb2e | ||
|
|
0f4a369aeb | ||
|
|
385f7f2c24 | ||
|
|
aa36ed5aa4 | ||
|
|
c87096993e | ||
|
|
784ab79eec | ||
|
|
7122a3f90b | ||
|
|
868a447c58 | ||
|
|
002244e3b3 | ||
|
|
5a319d6ee1 | ||
|
|
a1ca9025e7 | ||
|
|
9cd7cbc9e3 | ||
|
|
2d3dc1f6cc | ||
|
|
d01c1614a5 | ||
|
|
fb5320f7bc | ||
|
|
7c916e9bdb | ||
|
|
b774702ee8 | ||
|
|
ffaaacc148 | ||
|
|
9de9335554 | ||
|
|
feae21992a | ||
|
|
18cfe81e00 | ||
|
|
869bdc454d | ||
|
|
6725234466 | ||
|
|
05bf1512f9 | ||
|
|
bd2d1f7722 | ||
|
|
f58bc49176 | ||
|
|
5cabafc257 | ||
|
|
0fdff04fc6 | ||
|
|
1448d0b0c2 | ||
|
|
f843e658a1 | ||
|
|
06ffb6dd53 | ||
|
|
78110e17e5 | ||
|
|
74df1a1c31 | ||
|
|
d9862af8e1 | ||
|
|
ea82d8f8ca | ||
|
|
8de3235a63 | ||
|
|
eb3ed5744b | ||
|
|
b98a4d82c3 | ||
|
|
ac562d9388 | ||
|
|
d0cb960455 | ||
|
|
7db16f8521 | ||
|
|
229d3986c2 | ||
|
|
c237c8ee9e | ||
|
|
bd9a1320fa | ||
|
|
9eb4506117 | ||
|
|
58c95bb399 | ||
|
|
af5af829cf | ||
|
|
0961bdb506 | ||
|
|
7b9111d386 | ||
|
|
f8580a23ff | ||
|
|
b5f99881fe | ||
|
|
6266216fda | ||
|
|
ca39ac5f00 | ||
|
|
5d99798c7d | ||
|
|
24ed84dddd | ||
|
|
e82e68d22a | ||
|
|
e6bb06030c | ||
|
|
595c82c1f1 | ||
|
|
a46855821b | ||
|
|
89ba3e707a | ||
|
|
2cd6a2d7a0 | ||
|
|
1f758f90d0 | ||
|
|
8681dd8c93 | ||
|
|
0781cef8b1 | ||
|
|
5edbe5758e | ||
|
|
20c5c4c3dd | ||
|
|
e376c14e8a | ||
|
|
68babfb4bb | ||
|
|
f3d4377fdd | ||
|
|
efaeb6786e | ||
|
|
96d2978a23 | ||
|
|
6e1665d1fb | ||
|
|
c6603be194 | ||
|
|
d17e706351 | ||
|
|
acd978e054 | ||
|
|
ed6591e450 | ||
|
|
fc61869ea8 | ||
|
|
80501e7f8f | ||
|
|
a3e6518c41 | ||
|
|
b71496a25d | ||
|
|
391ef70e67 | ||
|
|
29e2bbc0c2 | ||
|
|
5884f7df55 | ||
|
|
6708046951 | ||
|
|
4751a5f3e2 | ||
|
|
0b82def5f5 | ||
|
|
ee529a5472 | ||
|
|
d38344125e | ||
|
|
caee9415e4 | ||
|
|
7e85ad95c7 | ||
|
|
86a35d6c13 | ||
|
|
ff3360afc0 | ||
|
|
eea322e647 | ||
|
|
120f0f0959 | ||
|
|
38443cf3f5 | ||
|
|
c69f28e0a0 | ||
|
|
704e44e479 | ||
|
|
c19a7d7b32 | ||
|
|
7323ddbabf | ||
|
|
0b7dc326e9 | ||
|
|
afc0341b54 | ||
|
|
0df8462562 | ||
|
|
305ace528a | ||
|
|
f7b8e5c861 | ||
|
|
8bf5dd0502 | ||
|
|
8d84da40e1 | ||
|
|
ab886cde16 | ||
|
|
ab5432daa0 | ||
|
|
60d4708f15 | ||
|
|
7fba68fcbd | ||
|
|
8f45ecebb4 | ||
|
|
c51ba50946 | ||
|
|
616b32eb67 | ||
|
|
278f764d61 | ||
|
|
5ed5693cd5 | ||
|
|
236a087a42 | ||
|
|
044f8fce4e | ||
|
|
618adf501d | ||
|
|
0da3b07fb3 | ||
|
|
4bea303c5f | ||
|
|
c18b72b53d | ||
|
|
ac9ea53e8e | ||
|
|
669a18564f | ||
|
|
c6b234673c | ||
|
|
1adf994740 | ||
|
|
72d82e45ed | ||
|
|
070e13ded8 | ||
|
|
c7d8031681 | ||
|
|
bf8932efaa | ||
|
|
ff9e0cd4cf | ||
|
|
1522d4cb2b | ||
|
|
fac8a286e8 | ||
|
|
d37e74c62c | ||
|
|
0a1862e92e | ||
|
|
9dd16045fb | ||
|
|
c05b45b241 | ||
|
|
2a0f69ac5f | ||
|
|
d5f50954c0 | ||
|
|
dda9289d77 | ||
|
|
66f9ee0b3e | ||
|
|
72d2cab517 | ||
|
|
a376d656a7 | ||
|
|
204fc25c21 | ||
|
|
bea8c72a82 | ||
|
|
16c1fcf4db | ||
|
|
566f78a95c | ||
|
|
6ca707822e | ||
|
|
59477a32bc | ||
|
|
bc38750d47 | ||
|
|
51278c0fbf | ||
|
|
644e3e8721 | ||
|
|
107bc5c217 | ||
|
|
1313445afe | ||
|
|
79db8807a6 | ||
|
|
4dc12c72c2 | ||
|
|
ac427bdc0c | ||
|
|
96a3736cd7 | ||
|
|
6424b65097 | ||
|
|
c6121675bb | ||
|
|
626f835601 | ||
|
|
aa38c8101b | ||
|
|
d2760d5a49 | ||
|
|
0c3f9e7e2e | ||
|
|
fd4a33e450 | ||
|
|
f07face7c0 | ||
|
|
935f985e25 | ||
|
|
35b43e9708 | ||
|
|
9991b066c7 | ||
|
|
c76d6f34a2 | ||
|
|
380f7c2e51 | ||
|
|
ab07b8ca06 | ||
|
|
6f302e26b3 | ||
|
|
f9343c4683 | ||
|
|
466ed1f8e6 | ||
|
|
83cdd40191 | ||
|
|
579a6d6064 | ||
|
|
3a5eb4c2ad | ||
|
|
40455108bb | ||
|
|
2c241025c9 | ||
|
|
f5697fd82b | ||
|
|
10d20197ed | ||
|
|
5d5913efeb | ||
|
|
8cc0178b64 | ||
|
|
6a26a5f47d | ||
|
|
01f5ce73a3 | ||
|
|
1e94b1f5bb | ||
|
|
13e8b0dd0d | ||
|
|
f25b830aad | ||
|
|
be0e12edb0 | ||
|
|
6aafd827f9 | ||
|
|
41746eebbb | ||
|
|
fb3019f3f1 | ||
|
|
aa3cb37e05 | ||
|
|
f0a4810b08 | ||
|
|
42e8c56b13 | ||
|
|
ff0e955ccb | ||
|
|
f8ee0561cb | ||
|
|
6c7d71028b | ||
|
|
c63f60ef7c | ||
|
|
79e8a86750 | ||
|
|
aa0e58ef3b | ||
|
|
4c93b51427 | ||
|
|
f4f10f6dd2 | ||
|
|
e9b537a861 | ||
|
|
b385d176a7 | ||
|
|
df2ae076b9 | ||
|
|
9e6e381a40 | ||
|
|
a8bdaba497 | ||
|
|
e3ac64d14a | ||
|
|
c146e5076e | ||
|
|
374d0b4e91 | ||
|
|
c415b6b41f | ||
|
|
3807b0b6cd | ||
|
|
8b05113cc8 | ||
|
|
304b11ee09 | ||
|
|
11b7bf77c0 | ||
|
|
ee2d990ece | ||
|
|
031d844d30 | ||
|
|
33d3c9f0bd | ||
|
|
a6aa1c36b3 | ||
|
|
90542fb499 | ||
|
|
70031c63b6 | ||
|
|
b781cdad6d | ||
|
|
504c163570 | ||
|
|
5f294bc587 | ||
|
|
b202da7d84 | ||
|
|
43525d622a | ||
|
|
0979c67b63 | ||
|
|
90abe7bbe7 | ||
|
|
9c9d6248ae | ||
|
|
8c7fef47a4 | ||
|
|
78f1afa959 | ||
|
|
f5d358d3cf | ||
|
|
55cd72cf62 | ||
|
|
11d62f6c13 | ||
|
|
4182c03258 | ||
|
|
2da96e3169 | ||
|
|
8e3c95b48c | ||
|
|
3c3f57ece1 | ||
|
|
69ec5fd82e | ||
|
|
386895f800 | ||
|
|
6065237de4 | ||
|
|
a7617745e2 | ||
|
|
923f28225a | ||
|
|
7dfef27886 | ||
|
|
5c698908a4 | ||
|
|
d88089fb24 | ||
|
|
0188d03d1b | ||
|
|
7b6ea338ed | ||
|
|
40e88ded25 | ||
|
|
38bcc2b736 | ||
|
|
73e6941817 | ||
|
|
1268c119b5 | ||
|
|
434edce8a7 | ||
|
|
c0ceaee122 | ||
|
|
e9a053c18d | ||
|
|
427f3bf163 | ||
|
|
96cfc49cb9 | ||
|
|
dc65118f17 | ||
|
|
31025a0a7f | ||
|
|
d20c301dcd | ||
|
|
0a382c411f | ||
|
|
367bf6849b | ||
|
|
848716607c | ||
|
|
0a0e71a9ff | ||
|
|
ca232dbdf4 | ||
|
|
efcf78b348 | ||
|
|
bbc0d30fbf | ||
|
|
1c60882525 | ||
|
|
d6cb415f76 | ||
|
|
f58bf878d5 | ||
|
|
2fbc716615 | ||
|
|
cce99b1ff2 | ||
|
|
f98b1669fa | ||
|
|
efebabe44f | ||
|
|
42a0461f57 | ||
|
|
a23ad3ad4a | ||
|
|
1478be716d | ||
|
|
0eed51dfdd | ||
|
|
574d65ab4b | ||
|
|
ac336b20ca | ||
|
|
c9613016e2 | ||
|
|
f9696a85d3 | ||
|
|
deb97546c0 | ||
|
|
cea964910d | ||
|
|
f8b99f2e34 | ||
|
|
3a7e328c6e | ||
|
|
732792fc80 | ||
|
|
dd842ac3b8 | ||
|
|
bdcf10e209 | ||
|
|
a43edd9dd8 | ||
|
|
65d9c187b8 | ||
|
|
75e1c1dac8 | ||
|
|
28ccdcc52d | ||
|
|
7c34ff166a | ||
|
|
36bf479115 | ||
|
|
3b90bfcdc3 | ||
|
|
ab19135ca6 | ||
|
|
41f7b8cb9d | ||
|
|
d8b9541b86 | ||
|
|
a4620adbce | ||
|
|
02ac87d160 | ||
|
|
f4c62726ee | ||
|
|
0844be5a28 | ||
|
|
3a77626cd7 | ||
|
|
4fee33c020 | ||
|
|
e3c53ee874 | ||
|
|
367eff77fc | ||
|
|
1bed6a1b96 | ||
|
|
1cf9220380 | ||
|
|
fd8629a6cf | ||
|
|
be1ca971be | ||
|
|
5fa59d86e7 | ||
|
|
be80009aca | ||
|
|
f18f6af5e0 | ||
|
|
65f14723ca | ||
|
|
6910847c71 | ||
|
|
62b19b53f9 | ||
|
|
8fb6592c6a | ||
|
|
cda35e2a9a | ||
|
|
4472719362 | ||
|
|
6c12b7a951 | ||
|
|
ad3b63ed5d | ||
|
|
e7545ad183 | ||
|
|
e390595551 | ||
|
|
b77b3a4566 | ||
|
|
16692e2e5f | ||
|
|
757bdf69dc | ||
|
|
a259f154da | ||
|
|
e441c6dfa7 | ||
|
|
c4c7af88c0 | ||
|
|
d78b249827 | ||
|
|
af8cdedc07 | ||
|
|
fc7a62b650 | ||
|
|
7919c90b81 | ||
|
|
1854d20566 | ||
|
|
c5c5c3d863 | ||
|
|
6c47ae1d88 | ||
|
|
70ad200dca | ||
|
|
341956768a | ||
|
|
0656477131 | ||
|
|
e878d0e76e | ||
|
|
dc6a38c360 | ||
|
|
f883e11c7a | ||
|
|
7e4402b128 | ||
|
|
e045e14522 | ||
|
|
f209e17215 | ||
|
|
07461d24e0 | ||
|
|
47cef1d907 | ||
|
|
c59adc3369 | ||
|
|
cc3ba20ec9 | ||
|
|
562f3d0bb7 | ||
|
|
e8d321cbab | ||
|
|
1edffac2bc | ||
|
|
735ffb3c92 | ||
|
|
66b60d860e | ||
|
|
f99d31f7c5 | ||
|
|
170b1d80b5 | ||
|
|
10846653f0 | ||
|
|
5d4d4f32d2 | ||
|
|
1f49150d30 | ||
|
|
3f583bd927 | ||
|
|
d11987a2ad | ||
|
|
79f7985784 | ||
|
|
104422eed9 | ||
|
|
d77e4205c1 | ||
|
|
847bc0995b | ||
|
|
529b053620 | ||
|
|
4d72e4e257 | ||
|
|
8e18af5912 | ||
|
|
bee5bb8660 | ||
|
|
e486872d81 | ||
|
|
6e8d4a6fa6 | ||
|
|
9081303a97 | ||
|
|
40c07afd85 | ||
|
|
da46a679f3 | ||
|
|
283405dc17 | ||
|
|
ed38cbbc0b | ||
|
|
ad91636c74 | ||
|
|
5543dab97c | ||
|
|
d4ae9a89df | ||
|
|
032faf2dce | ||
|
|
bcea7cc8ad | ||
|
|
0ad94f80cd | ||
|
|
7e9533afc7 | ||
|
|
6ca6233387 | ||
|
|
503050904c | ||
|
|
ba2f9d5781 | ||
|
|
e571cbaeec | ||
|
|
202f8a1678 | ||
|
|
4068c6694e | ||
|
|
7d43037d4e | ||
|
|
d6bdb466ae | ||
|
|
1114885429 | ||
|
|
e29078e5d1 | ||
|
|
2bd56de934 | ||
|
|
df82cd5aec | ||
|
|
67571f4ede | ||
|
|
fa22c5b071 | ||
|
|
5b7c81eb2d | ||
|
|
8b20136571 | ||
|
|
2a426edfe5 | ||
|
|
5dd9c997e2 | ||
|
|
be5fa32c0c | ||
|
|
0c3fb9528a | ||
|
|
d5c24b0c63 | ||
|
|
9b8e06c51d | ||
|
|
ea4948ff8a | ||
|
|
5dc939355a | ||
|
|
2672859ee0 | ||
|
|
542a65323f | ||
|
|
85e6d7f649 | ||
|
|
e73e276e2b | ||
|
|
1879fb5109 | ||
|
|
15cac5afc4 | ||
|
|
1ae17d5745 | ||
|
|
7106a7c1d1 | ||
|
|
0115e469c1 | ||
|
|
7729295bce | ||
|
|
3265825446 | ||
|
|
90fdc9b2e2 | ||
|
|
9853951aa5 | ||
|
|
b839c79144 | ||
|
|
fad8813911 | ||
|
|
ed57876068 | ||
|
|
5143dbb167 | ||
|
|
75126aa167 | ||
|
|
00a1840a46 | ||
|
|
127f8768aa | ||
|
|
6e330fa993 | ||
|
|
c6ab6459fb | ||
|
|
4e58589afd | ||
|
|
89c65affea | ||
|
|
099b487560 | ||
|
|
25235a4d5a | ||
|
|
1d329e0364 | ||
|
|
d07f23395c | ||
|
|
5e3eba6662 | ||
|
|
61adfe42ff | ||
|
|
80e7e71526 | ||
|
|
1e6790ab05 | ||
|
|
18358db467 | ||
|
|
2eea89a0a6 | ||
|
|
dcce90bcc4 | ||
|
|
b5fc1ef4a3 | ||
|
|
4ae129d565 | ||
|
|
3ec9d358f7 | ||
|
|
1fc4718d36 | ||
|
|
bf3f5e1b92 | ||
|
|
20496651c5 | ||
|
|
9df123a180 | ||
|
|
e7b597787d | ||
|
|
048b96b540 | ||
|
|
be29156f6f | ||
|
|
140cfd70ce | ||
|
|
2e5fdbf5ce | ||
|
|
ee710e3922 | ||
|
|
b8febddad5 | ||
|
|
da74681de2 | ||
|
|
c8605647f1 | ||
|
|
032d77dd15 | ||
|
|
0df49c59c0 | ||
|
|
d354aa6f09 | ||
|
|
551bf42c66 | ||
|
|
b691a73dba | ||
|
|
26720997ea | ||
|
|
431ce50964 | ||
|
|
04bc2a800a | ||
|
|
ccab27a1e2 | ||
|
|
fa40c41124 | ||
|
|
1881c0b932 | ||
|
|
0d44dbf078 | ||
|
|
c5a6634d59 | ||
|
|
81dee7b857 | ||
|
|
b1f88cb1a3 | ||
|
|
f2ba4b03a2 | ||
|
|
c1af3abbdc | ||
|
|
0bf6ecafa0 | ||
|
|
0658a420ee | ||
|
|
5823683265 | ||
|
|
5b65591cc2 | ||
|
|
7fae368c0d | ||
|
|
04ebdbb00b | ||
|
|
b030b4eba5 | ||
|
|
b01226fe62 | ||
|
|
e080bfc79a | ||
|
|
9eaf2438dd | ||
|
|
bd5e6bd1e6 | ||
|
|
62755fe5b1 | ||
|
|
e570d22f40 | ||
|
|
3e48dc3b4d | ||
|
|
9b06679d56 | ||
|
|
9cc7a7a87f | ||
|
|
4e23e7dbd1 | ||
|
|
d9ec8125c9 | ||
|
|
73c418cf57 | ||
|
|
8b722c7951 | ||
|
|
fdfcd4c651 | ||
|
|
4357c3c74e | ||
|
|
5c80d6ab4e | ||
|
|
199b1ed1dc | ||
|
|
b9f8dedc8b | ||
|
|
96a9c6cb92 | ||
|
|
2ad5122ef4 | ||
|
|
1f749805a5 | ||
|
|
de5ff68943 | ||
|
|
e7d2221d08 | ||
|
|
0b8f3bc4c5 | ||
|
|
9d5488e361 | ||
|
|
80574a5a6a | ||
|
|
affdbe719a | ||
|
|
ba3e14cefd | ||
|
|
105dc001e5 | ||
|
|
8bdaa69a2c | ||
|
|
760d46af5c | ||
|
|
21c3f41814 | ||
|
|
5c42f1af14 | ||
|
|
7a89ef2465 | ||
|
|
38244bfdb3 | ||
|
|
e7759b4bae | ||
|
|
66a4f76c74 | ||
|
|
80c9e623ef | ||
|
|
722d87ca5c | ||
|
|
f0221b1fdb | ||
|
|
51e65a35a6 | ||
|
|
a8b93f6d48 | ||
|
|
9b7de69f08 | ||
|
|
554b32efb5 | ||
|
|
c4a5eb9803 | ||
|
|
f92f389612 | ||
|
|
1021637283 | ||
|
|
d85a54a01c | ||
|
|
77dceab7be | ||
|
|
01e97ff285 | ||
|
|
f6f0f5ce1e | ||
|
|
75a5c09981 | ||
|
|
16674275ed | ||
|
|
a0524af242 | ||
|
|
54b64f8922 | ||
|
|
706cea8996 | ||
|
|
1a72660a3f | ||
|
|
efe75d9b51 | ||
|
|
2ac24991c1 | ||
|
|
b11aab5369 | ||
|
|
a348c3f7c1 | ||
|
|
78a731b9e2 | ||
|
|
94ede83462 | ||
|
|
1085fb8cf4 | ||
|
|
0a5b436da1 | ||
|
|
7d3591f5c1 | ||
|
|
4ed1986c26 | ||
|
|
33b4e72401 | ||
|
|
c36a463f44 | ||
|
|
f85015365f | ||
|
|
b9a47cafb2 | ||
|
|
22ceecaa87 | ||
|
|
37e373a68f | ||
|
|
ff9013d977 | ||
|
|
39f92e527c | ||
|
|
f1ef68c166 | ||
|
|
260752f501 | ||
|
|
01c23c3414 | ||
|
|
dea5f98c4e | ||
|
|
38d51cd97c | ||
|
|
22db36c4a6 | ||
|
|
71a293ce46 | ||
|
|
75356cd9ce | ||
|
|
c7e2d2270d | ||
|
|
df05037841 | ||
|
|
1235b3f468 | ||
|
|
99e778b9b7 | ||
|
|
c1b3690671 | ||
|
|
df1384bf31 | ||
|
|
5a4ddd685d | ||
|
|
8cd8705d67 | ||
|
|
4927674306 | ||
|
|
eb464752fb | ||
|
|
210092eeda | ||
|
|
9f7ecd28f9 | ||
|
|
a05b013ecc | ||
|
|
bc49fc2e10 | ||
|
|
344af97656 | ||
|
|
ac650c1034 | ||
|
|
b411630ad4 | ||
|
|
86b917fd33 | ||
|
|
c1815d6750 | ||
|
|
e6ab64ee45 | ||
|
|
f7d39ae7b3 | ||
|
|
98c6eace0c | ||
|
|
6be4ee00aa | ||
|
|
88b35f7ee1 | ||
|
|
27212a16dd | ||
|
|
74672c8fad | ||
|
|
d4108ca840 | ||
|
|
499aa57ac2 | ||
|
|
0b05bf0fa6 | ||
|
|
d98613db13 | ||
|
|
c4baf72fd4 | ||
|
|
d725c7c5e6 | ||
|
|
0dfb5d4441 | ||
|
|
d9ee6ea917 | ||
|
|
0fe5fb628a | ||
|
|
fea06c6fdb | ||
|
|
02c2926ea4 | ||
|
|
b151e2a15a | ||
|
|
a78b4fda8f | ||
|
|
a702f58ed7 | ||
|
|
8311285adb | ||
|
|
62e22c27d5 | ||
|
|
89dd04d06e | ||
|
|
9222f803f4 | ||
|
|
2456b6dc8b | ||
|
|
91b97641a2 | ||
|
|
123c3fa78b | ||
|
|
ab4925f59f | ||
|
|
0356a74d4c | ||
|
|
37a1288ab0 | ||
|
|
43959dc4d0 | ||
|
|
11e5e1b0f2 | ||
|
|
9589e7aaa1 | ||
|
|
c5c7932ee7 | ||
|
|
5d181c3ef2 | ||
|
|
ce4c58a1f0 | ||
|
|
e6b4a12c08 | ||
|
|
7c8a21ddcf | ||
|
|
40839c79fc | ||
|
|
284f5a4968 | ||
|
|
6241ff4bef | ||
|
|
cf41203504 | ||
|
|
460d73f55e | ||
|
|
09403094cd | ||
|
|
40c9328e84 | ||
|
|
382a993e68 | ||
|
|
0f05404f72 | ||
|
|
33836ea5f8 | ||
|
|
cc491904bc | ||
|
|
be36c5d974 | ||
|
|
2dd604b039 | ||
|
|
58a371f9d9 | ||
|
|
564cc22d95 | ||
|
|
1da96b56e5 | ||
|
|
5a929b095c | ||
|
|
3bc4834c82 | ||
|
|
43213cddfd | ||
|
|
9975cd5f27 | ||
|
|
65b4c18ab6 | ||
|
|
d14d250e0a | ||
|
|
a993d9c355 | ||
|
|
14c4bc7967 | ||
|
|
143402dace | ||
|
|
3dff3e71bc | ||
|
|
549168b835 | ||
|
|
d4c1dbb133 | ||
|
|
ca454360d8 | ||
|
|
2f17424b89 | ||
|
|
b80fd81e65 | ||
|
|
5797be9b14 | ||
|
|
a771c637d7 | ||
|
|
dd5e47f2e0 | ||
|
|
1b0d635152 | ||
|
|
ace777e495 | ||
|
|
e882ed39dc | ||
|
|
7c6f878c69 | ||
|
|
fc94a5e19d | ||
|
|
7538f1eb9c | ||
|
|
43028fe89d | ||
|
|
5f9b8b92ba | ||
|
|
4c865ac793 | ||
|
|
7a51ef664a | ||
|
|
9e9f0307df | ||
|
|
5eafbb794a | ||
|
|
b5483754d0 | ||
|
|
e03fd44d6d | ||
|
|
9b9c1db05e | ||
|
|
63d14f3a0c | ||
|
|
bef02456eb | ||
|
|
a4efd223a4 | ||
|
|
5058049096 | ||
|
|
c0e854007e | ||
|
|
118344ba62 | ||
|
|
33e75f8fe1 | ||
|
|
03472381a0 | ||
|
|
3aabe2da1a | ||
|
|
ad0bd8763a | ||
|
|
3b696eedb2 | ||
|
|
b2c1727b67 | ||
|
|
b602c9cdf6 | ||
|
|
86f0609931 | ||
|
|
3b456593a6 | ||
|
|
a3e8eabc66 | ||
|
|
df2c498e9a | ||
|
|
21da0ed5b3 | ||
|
|
e51c942e91 | ||
|
|
9dec850072 | ||
|
|
7814ea05be | ||
|
|
7f9750dd4f | ||
|
|
5b1e4f56a0 | ||
|
|
9a9f705c42 | ||
|
|
08bb956a20 | ||
|
|
c4938e6567 | ||
|
|
0dc34c347d | ||
|
|
faf5a88727 | ||
|
|
97722bef03 | ||
|
|
a268f79878 | ||
|
|
45a155a765 | ||
|
|
7ae632d33f | ||
|
|
582e8e183c | ||
|
|
c28f2dc5c1 | ||
|
|
0b18212e69 | ||
|
|
67d499e9de | ||
|
|
46c28405ec | ||
|
|
2e825963f1 | ||
|
|
b8858cc1f5 | ||
|
|
77252de54c | ||
|
|
2869467b4f | ||
|
|
099adf9bab | ||
|
|
31e49fb662 | ||
|
|
3405745182 | ||
|
|
09f2aae866 | ||
|
|
0579c49ab0 | ||
|
|
7df980b5d4 | ||
|
|
c2b2f70a69 | ||
|
|
5c723bf92d | ||
|
|
905f634781 | ||
|
|
b62f0ee511 | ||
|
|
ba111db2a8 | ||
|
|
03d6b40afe | ||
|
|
6f1df6ae65 | ||
|
|
2d6fc280fe | ||
|
|
e7ffdcd09f | ||
|
|
17dacd31f4 | ||
|
|
f7b9874a93 | ||
|
|
36fa9bd8bf | ||
|
|
51372897bd | ||
|
|
1831acbaec | ||
|
|
4dffd524e9 | ||
|
|
a5a78e6173 | ||
|
|
51bca114a0 | ||
|
|
72f0559f8a | ||
|
|
9be47e67d9 | ||
|
|
5190b65b14 | ||
|
|
f7a92603c1 | ||
|
|
0c6bc3ec9b | ||
|
|
53af0233a7 | ||
|
|
9c9d261433 | ||
|
|
f64ddd6fcb | ||
|
|
c26cf1977c | ||
|
|
abc766280a | ||
|
|
2ca4c1a344 | ||
|
|
58b2955cf1 | ||
|
|
a75a22d71a | ||
|
|
d245bcbc6e | ||
|
|
6ab537db6e | ||
|
|
94009584ec | ||
|
|
dc0e10f6a7 | ||
|
|
235ec1e3d1 | ||
|
|
83de6b1617 | ||
|
|
1f1d10033f | ||
|
|
9f2a707b2b | ||
|
|
08cb38b342 | ||
|
|
6ac347813a | ||
|
|
b9b4ce30e8 | ||
|
|
f1f14d237e | ||
|
|
563dfc1371 | ||
|
|
6198584f7d | ||
|
|
0003d57163 | ||
|
|
5e7f718df3 | ||
|
|
8bdc6877c0 | ||
|
|
d7eee61dd4 | ||
|
|
e0d4e9392a | ||
|
|
7f8e198074 | ||
|
|
e1b040c8f9 | ||
|
|
2d0f93850c | ||
|
|
610c02abc4 | ||
|
|
452cc6e78a | ||
|
|
642ebeef52 | ||
|
|
31ca9a1041 | ||
|
|
670c26bdbd | ||
|
|
1bbc00c346 | ||
|
|
ca4979099c | ||
|
|
30cd27e5fc | ||
|
|
72d83f988e | ||
|
|
c4cd4fc42f | ||
|
|
b56d93b909 | ||
|
|
ab9fcb4624 | ||
|
|
84d585c14c | ||
|
|
1873f4018d | ||
|
|
57f4221fc9 | ||
|
|
15ff08dc6f | ||
|
|
5b6586de3c | ||
|
|
ff158b8353 | ||
|
|
f985902a00 | ||
|
|
e022e73b0c | ||
|
|
658be46831 | ||
|
|
06018ee3b5 | ||
|
|
1b4c76365c | ||
|
|
8239f9c4e3 | ||
|
|
239e6738a8 | ||
|
|
d605ff6fc2 | ||
|
|
76dc41b86e | ||
|
|
2f85d83090 | ||
|
|
1f34139df3 | ||
|
|
78115cf12a | ||
|
|
3a030ab74b | ||
|
|
ef3d63f30c | ||
|
|
0d8e0cb1ca | ||
|
|
a8ee33ff08 | ||
|
|
16f93ceee5 | ||
|
|
b3ef028361 | ||
|
|
672363bff4 | ||
|
|
a1d651aed2 | ||
|
|
5fa24d7880 | ||
|
|
78d23c8243 | ||
|
|
d43d49494d | ||
|
|
f4ca94f6d8 | ||
|
|
0dedac6a2e | ||
|
|
f268ee9ae9 | ||
|
|
57aa443bd7 | ||
|
|
45bc25d589 | ||
|
|
c98da40873 | ||
|
|
bcd953490d | ||
|
|
3103442447 | ||
|
|
e08bc540cf | ||
|
|
d6682f092c | ||
|
|
bf5a6b84b4 | ||
|
|
97e0cdebbc | ||
|
|
6f64f51f8d | ||
|
|
f94a7a73c1 | ||
|
|
5cd8cff11d | ||
|
|
c293fd94d3 | ||
|
|
91f0e444c0 | ||
|
|
abdcdefb5f | ||
|
|
6164733489 | ||
|
|
f9a0ccf318 | ||
|
|
bb82093ffc | ||
|
|
d3139a531c | ||
|
|
3a40cf2373 | ||
|
|
a7b0d05d3c | ||
|
|
ae796a8497 | ||
|
|
6d44caa4e3 | ||
|
|
f32519b156 | ||
|
|
d5824d9238 | ||
|
|
e83aab202b | ||
|
|
00a22e18cc | ||
|
|
fee9382c7f | ||
|
|
f757a08a99 | ||
|
|
414716b841 | ||
|
|
50f4f8a5b0 | ||
|
|
73d0308e35 | ||
|
|
43b8293a07 | ||
|
|
15c26192e8 | ||
|
|
95a0587499 | ||
|
|
0f1693a9d7 | ||
|
|
4c624d0a85 | ||
|
|
6287d6d30b | ||
|
|
c19260ec4e | ||
|
|
43daea05c1 | ||
|
|
75916754a6 | ||
|
|
14d8683135 | ||
|
|
61f8e6d4a1 | ||
|
|
b658f879f9 | ||
|
|
4aa4295508 | ||
|
|
75c8feaeb9 | ||
|
|
66ff79dfbd | ||
|
|
7206c202bf | ||
|
|
773c979955 | ||
|
|
ef16a99f88 | ||
|
|
d86092ae78 | ||
|
|
6c87bed66b | ||
|
|
2d100c33b8 | ||
|
|
81b755ff0f | ||
|
|
fb9747b6be | ||
|
|
cd1eccf5f4 | ||
|
|
3b69d310dd | ||
|
|
dc2ebf292b | ||
|
|
2815b33b0a | ||
|
|
9819c3a01e | ||
|
|
cf619eacc5 | ||
|
|
410086df6b | ||
|
|
2b9c5ae7d4 | ||
|
|
eb921e9281 | ||
|
|
6d2aca182c | ||
|
|
a2691d5dad | ||
|
|
c1b7c4c1b7 | ||
|
|
66ffcf1e1b | ||
|
|
e2d9eb4772 | ||
|
|
0bbaa5be21 | ||
|
|
54d0230d1b | ||
|
|
4018e550fe | ||
|
|
21f2e01921 | ||
|
|
34cb9c7186 | ||
|
|
52ac98ea1c | ||
|
|
aa254b350b | ||
|
|
8194fd4d13 | ||
|
|
2031e232ca | ||
|
|
b71e51e30f | ||
|
|
a1d93f92cd | ||
|
|
3a5c0ebc78 | ||
|
|
5061397e66 | ||
|
|
31e085b7df | ||
|
|
13a7d96d84 | ||
|
|
3765435ee6 | ||
|
|
e61f08b981 | ||
|
|
1fbd82d19c | ||
|
|
dfb4b3a2c8 | ||
|
|
5f30d5ddaf | ||
|
|
aceda5ec62 | ||
|
|
626e642d90 | ||
|
|
812c549156 | ||
|
|
34ca230473 | ||
|
|
c211d0e436 | ||
|
|
52f62430f4 | ||
|
|
6fdac5020f | ||
|
|
dca02111be | ||
|
|
fcd86e3298 | ||
|
|
286753b464 | ||
|
|
a227b31162 | ||
|
|
d246bab0eb | ||
|
|
78a199f946 | ||
|
|
54009a05cf | ||
|
|
eb9bfcda4a | ||
|
|
91c51c88cd | ||
|
|
2a69a371fd | ||
|
|
2e6398d5b5 | ||
|
|
8b622c964f | ||
|
|
fd8049c997 | ||
|
|
2ab21ed710 | ||
|
|
01be413927 | ||
|
|
b93563bfeb | ||
|
|
c68de1066d | ||
|
|
23484b18b7 | ||
|
|
aea03ebba4 | ||
|
|
0522535a15 | ||
|
|
2799a8c34d | ||
|
|
d22f3653b7 | ||
|
|
509e0e8363 | ||
|
|
1cce96f4ee | ||
|
|
7981d8ed8c | ||
|
|
b78fd60343 | ||
|
|
f9c8442260 | ||
|
|
f84cbc3091 | ||
|
|
f6406c95aa | ||
|
|
e83f47b82e | ||
|
|
145e0b228e | ||
|
|
ca1c84c9d4 | ||
|
|
a9bb1aabbb | ||
|
|
e31a9af5be | ||
|
|
c941434510 | ||
|
|
7a305ca456 | ||
|
|
e2e509b8a4 | ||
|
|
92d08a5682 | ||
|
|
0fa4523450 | ||
|
|
dbcb9c562f | ||
|
|
aff1d1d9b3 | ||
|
|
226247d858 | ||
|
|
f9bc7c56e5 | ||
|
|
4910d6cc9d | ||
|
|
036fc07500 | ||
|
|
189c1c0e0c | ||
|
|
017f4175f8 | ||
|
|
8cd93f51c2 | ||
|
|
cbd824ceda | ||
|
|
1d91890c9f | ||
|
|
726004bb3f | ||
|
|
cd5d39dbce | ||
|
|
29a14cf0c3 | ||
|
|
b83b82849f | ||
|
|
c4892d9f33 | ||
|
|
3ebe95d669 | ||
|
|
cfb55efcf7 | ||
|
|
5283002951 | ||
|
|
6e5456d14c | ||
|
|
5e706816e4 | ||
|
|
2cf2c82899 | ||
|
|
9ea6e8d0d0 | ||
|
|
0563061b25 | ||
|
|
5937c20ed1 | ||
|
|
58fcbcf7a5 | ||
|
|
34980655b2 | ||
|
|
d51ebac71b | ||
|
|
5e52c64153 | ||
|
|
4cb4318426 | ||
|
|
d23b1aa755 | ||
|
|
7151ac1f81 | ||
|
|
ee921cc0ca | ||
|
|
5dc776f857 | ||
|
|
c4288b1e82 | ||
|
|
5b29c19afe | ||
|
|
ac1b906888 | ||
|
|
3e09319f8c | ||
|
|
1fab0aba7e | ||
|
|
2d52eda730 | ||
|
|
6f51e0de13 | ||
|
|
491ad692d7 | ||
|
|
26f573fdc8 | ||
|
|
689a0ea4cc | ||
|
|
5c6f4ff637 | ||
|
|
693574212d | ||
|
|
cd0e119737 | ||
|
|
64193b5cc9 | ||
|
|
4a4fdb1452 | ||
|
|
23bfc67d62 | ||
|
|
e0f725363c | ||
|
|
1dd4187cd0 | ||
|
|
19f052e016 | ||
|
|
141bdd6f96 | ||
|
|
d1a49d3128 | ||
|
|
48bd3cac39 | ||
|
|
db3c58ddb1 | ||
|
|
279e4d5976 | ||
|
|
15840bd1c7 | ||
|
|
5c3874a392 | ||
|
|
43c5c011d8 | ||
|
|
fb12595bdd | ||
|
|
3163f090dd | ||
|
|
e47b77d50a | ||
|
|
544dbfd746 | ||
|
|
54f548eec8 | ||
|
|
786791670e | ||
|
|
ce58da82c5 | ||
|
|
3437b0f2b9 | ||
|
|
0970285956 | ||
|
|
c0028587dd | ||
|
|
7fafa2adeb | ||
|
|
513a3050c7 | ||
|
|
57a2aae83f | ||
|
|
c621e7d381 | ||
|
|
fe48478993 | ||
|
|
d1cc5deaac | ||
|
|
952b1fc61b | ||
|
|
bd63aac8b3 | ||
|
|
9581f39186 | ||
|
|
6649840b46 | ||
|
|
1b03db6ab5 | ||
|
|
8a19ba4862 | ||
|
|
eb8bce4e22 | ||
|
|
f73d561557 | ||
|
|
83003a7d8f | ||
|
|
01534c1fc1 | ||
|
|
84a991520f | ||
|
|
89c4dbcdba | ||
|
|
e7a24a2062 | ||
|
|
0e897f7751 | ||
|
|
ea898e25ad | ||
|
|
6d38226a1c | ||
|
|
b415e0eed3 | ||
|
|
90e8e75716 | ||
|
|
5a74918e1e | ||
|
|
d8551a6c9c | ||
|
|
51b546f50f | ||
|
|
4bc4c65795 | ||
|
|
a0493b000e | ||
|
|
7071c1d200 | ||
|
|
64ee763c99 | ||
|
|
e78d979d4c | ||
|
|
845529cc9d | ||
|
|
c71b2dc312 | ||
|
|
d8775d1054 | ||
|
|
db2e564e7a | ||
|
|
7fc71272fd | ||
|
|
8011bc7b7a | ||
|
|
171fdf792e | ||
|
|
7a01ba7b49 | ||
|
|
403d000a6f | ||
|
|
880b6666ef | ||
|
|
2aee9eedad | ||
|
|
db203371fe | ||
|
|
50fa1baf96 | ||
|
|
da7c9501d2 | ||
|
|
be53b67e68 | ||
|
|
ffcaac5b4c | ||
|
|
65c3bf6d0f | ||
|
|
58976b46f9 | ||
|
|
fe2a9fe097 | ||
|
|
3e3c69eaf9 | ||
|
|
bcb3df383f | ||
|
|
24c0179048 | ||
|
|
e54661b5df | ||
|
|
85cc8cd542 | ||
|
|
9076806a9b | ||
|
|
17378812a4 | ||
|
|
0e97b53e70 | ||
|
|
0caa90751b | ||
|
|
c38c8d539b | ||
|
|
23883303ff | ||
|
|
d08d2915e0 | ||
|
|
1a618e7240 | ||
|
|
60f66fc288 | ||
|
|
4faa633fb2 | ||
|
|
8bb99547e3 | ||
|
|
e867cfa4a2 | ||
|
|
7901413a97 | ||
|
|
b7e8670b43 | ||
|
|
e2531edb02 | ||
|
|
96913732e4 | ||
|
|
06a89446ab | ||
|
|
ac128da45a | ||
|
|
265f6d3ce5 | ||
|
|
388fd0bd00 | ||
|
|
1c6945cb75 | ||
|
|
772cb0d326 | ||
|
|
b2f2e69377 | ||
|
|
377d5b7f58 | ||
|
|
b4da0686c8 | ||
|
|
f3baa69aad | ||
|
|
9527626ffe | ||
|
|
e13568117b | ||
|
|
57c6b11d47 | ||
|
|
800355ec2f | ||
|
|
4478a89f28 | ||
|
|
07aedc0e61 | ||
|
|
115ef7dd97 | ||
|
|
9e07912e1c | ||
|
|
8fd768e46b | ||
|
|
dad3dcacfe | ||
|
|
0927093303 | ||
|
|
3099119815 | ||
|
|
7a026c7e10 | ||
|
|
7177a6543b | ||
|
|
b2b0f78587 | ||
|
|
7001afbcbe | ||
|
|
3eb28198bd | ||
|
|
81deb8d828 | ||
|
|
e30ba80d6a | ||
|
|
22d13ba881 | ||
|
|
6cfbcf1ac8 | ||
|
|
21daca9faf | ||
|
|
142edcff38 | ||
|
|
70d82ed48e | ||
|
|
52c9234621 | ||
|
|
78d309551f | ||
|
|
f91109570c | ||
|
|
291ef56bc7 | ||
|
|
b12484bb6f | ||
|
|
709ee2a0e8 | ||
|
|
8d4f2bd126 | ||
|
|
b6e7351431 | ||
|
|
329145c13f | ||
|
|
35d1a7a1b5 | ||
|
|
a2e801c2de | ||
|
|
e86c11e5de | ||
|
|
b0217ba299 | ||
|
|
62c3318fe5 | ||
|
|
b9a3fe59c8 | ||
|
|
e46800f5b4 | ||
|
|
0648737fc1 | ||
|
|
1a4daaba10 | ||
|
|
6be4ac044c | ||
|
|
c0aabc7d0b | ||
|
|
4df0bbd814 | ||
|
|
5e6e746951 | ||
|
|
a55a27acf6 | ||
|
|
8046992e08 | ||
|
|
de56e88a00 | ||
|
|
72afd76e1a | ||
|
|
12e53c732e | ||
|
|
49f7cf8eca | ||
|
|
10be7bac2f | ||
|
|
fa6fb1b53d | ||
|
|
5a1f0bdda5 | ||
|
|
405748c744 | ||
|
|
cc90b048af | ||
|
|
6886228992 | ||
|
|
4569c905a5 | ||
|
|
453e81e895 | ||
|
|
3af8696761 | ||
|
|
399b33822a | ||
|
|
913a296cc4 | ||
|
|
bd55569703 | ||
|
|
0e2d3f833d | ||
|
|
3646969779 | ||
|
|
d5bfb9f6aa | ||
|
|
5c05f709d8 | ||
|
|
30a270b5f4 | ||
|
|
671836c47d | ||
|
|
56a2d9dc0a | ||
|
|
e90c05c8f8 | ||
|
|
08d79cc324 | ||
|
|
990b0c93a5 | ||
|
|
14d638c588 | ||
|
|
df8b12b2c0 | ||
|
|
2645667257 | ||
|
|
38c2d82c88 | ||
|
|
986f5b7b4e | ||
|
|
ef76c04ae8 | ||
|
|
d4d5393faa | ||
|
|
9ffc4bf928 | ||
|
|
b9bfff19bb | ||
|
|
51b6fd6f86 | ||
|
|
be765dc4e8 | ||
|
|
7febd9328d | ||
|
|
33a80fca5a | ||
|
|
b0c6233b44 | ||
|
|
f7158b233f | ||
|
|
f368820b7e | ||
|
|
2f1dbc2dae | ||
|
|
3ad30217c4 | ||
|
|
4a10f2cb37 | ||
|
|
f3948295e9 | ||
|
|
42fb12027c | ||
|
|
91124d2d4f | ||
|
|
19fe9119cb | ||
|
|
2e2ce9a57a | ||
|
|
fdcb395739 | ||
|
|
7d1fed2eb9 | ||
|
|
462a1516d2 | ||
|
|
654f70d901 | ||
|
|
b09b1da1f4 | ||
|
|
8ca49cb7af | ||
|
|
e4d3942f36 | ||
|
|
dd2f673083 | ||
|
|
43df84ae8f | ||
|
|
f211d4c8ec | ||
|
|
31f20348c9 | ||
|
|
8c721ba561 | ||
|
|
01c0a5462b | ||
|
|
f73575a8c1 | ||
|
|
c7385ec512 | ||
|
|
bd0876e2e6 | ||
|
|
4f3dc7629a | ||
|
|
a47c09e5d2 | ||
|
|
164468f990 | ||
|
|
c56b631700 | ||
|
|
84c487b577 | ||
|
|
2636969807 | ||
|
|
1e17303b97 | ||
|
|
7fa8d891ef | ||
|
|
c029dfe3fa | ||
|
|
c4ef120b74 | ||
|
|
8644ce1cb8 | ||
|
|
b0b3cdc21f | ||
|
|
e3d30d8a35 | ||
|
|
0ef9c189c0 | ||
|
|
18953536f1 | ||
|
|
dd02f33482 | ||
|
|
3576839199 | ||
|
|
4ed668ef93 | ||
|
|
f8344469e1 | ||
|
|
1d94fb67da | ||
|
|
9ad85127e4 | ||
|
|
3845abeff8 | ||
|
|
f95c712f95 | ||
|
|
f5c3300304 | ||
|
|
84fa83b4dd | ||
|
|
927c37470a | ||
|
|
b80fa53b2a | ||
|
|
cce5ae01f8 | ||
|
|
92ef783948 | ||
|
|
2e7c1fd2cc | ||
|
|
85164b616e | ||
|
|
c67a1ac9f7 | ||
|
|
a2cae7df29 | ||
|
|
f44e3bc9d8 | ||
|
|
03bc58116c | ||
|
|
9b88eb67a1 | ||
|
|
6e5fa7de3c | ||
|
|
d327394057 | ||
|
|
b7c06941e3 | ||
|
|
57adfc8683 | ||
|
|
e13d805197 | ||
|
|
f0635a0df4 | ||
|
|
24adb74498 | ||
|
|
16519b11aa | ||
|
|
0a666caa13 | ||
|
|
7525da70ef | ||
|
|
5833acbc8c | ||
|
|
e57c7b651d | ||
|
|
9a40395cdb | ||
|
|
03aecc8d0c | ||
|
|
a554b383a2 | ||
|
|
a4be1e1dcb | ||
|
|
7b498f4179 | ||
|
|
4a10c8dce7 | ||
|
|
0cc99c50a7 | ||
|
|
92fdf45f0c | ||
|
|
f3cafae030 | ||
|
|
12e5bf6036 | ||
|
|
f0ab957edb | ||
|
|
4308b28aa6 | ||
|
|
f79619ec0a | ||
|
|
5dd147123a | ||
|
|
63d6ab2006 | ||
|
|
1951e0f5e8 | ||
|
|
fb69b89ef9 | ||
|
|
2d84dd4fbd | ||
|
|
d760229abc | ||
|
|
ffb38a21e3 | ||
|
|
85a2f48c80 | ||
|
|
9f208f711e | ||
|
|
ea2637395c | ||
|
|
0ca6026124 | ||
|
|
b8d5a341f4 | ||
|
|
014a8f9222 | ||
|
|
9599b3f584 | ||
|
|
ca31b79cc0 | ||
|
|
675e858050 | ||
|
|
c04517bf04 | ||
|
|
eb12ef1dcd | ||
|
|
03f50f560b | ||
|
|
c1387c5692 | ||
|
|
a4a9221d95 | ||
|
|
7ed0036af0 | ||
|
|
1489393489 | ||
|
|
c4939368ae | ||
|
|
ab59ebe4f2 | ||
|
|
f3701ab837 | ||
|
|
f48f78fc58 | ||
|
|
ddb1785698 | ||
|
|
963b0e23ee | ||
|
|
2a9ae83270 | ||
|
|
788507e046 | ||
|
|
60001ad6b4 | ||
|
|
6c9d5c7370 | ||
|
|
1c3a02b2c8 | ||
|
|
28dc10ed98 | ||
|
|
0d49295b94 | ||
|
|
679784735e | ||
|
|
99f62e850f | ||
|
|
001b9abce9 | ||
|
|
248ca3ff76 | ||
|
|
704ee58846 | ||
|
|
f26948dde2 | ||
|
|
3cac2d3ab7 | ||
|
|
82793a02d3 | ||
|
|
434eb94730 | ||
|
|
73b70622a1 | ||
|
|
00cbe3ec3b | ||
|
|
8ecdab817a | ||
|
|
94ae9fd4a7 | ||
|
|
75c8f32186 | ||
|
|
69621fe6f9 | ||
|
|
81f4c1bd7c | ||
|
|
bb7cfb7dc2 | ||
|
|
b98ea32add | ||
|
|
2b89c5cd9a | ||
|
|
74e5b8bdff | ||
|
|
17157f2973 | ||
|
|
478b17a4dc | ||
|
|
f14225f7e4 | ||
|
|
8a8f7a9929 | ||
|
|
7d490d4886 | ||
|
|
af13b2c745 | ||
|
|
a164d83dad | ||
|
|
d10e340823 | ||
|
|
e7bb9d14b2 | ||
|
|
4e7c096c34 | ||
|
|
0f5ce12dad | ||
|
|
2f4e92a728 | ||
|
|
b047ed82b6 | ||
|
|
82f165625f | ||
|
|
2f5aa3bd0e | ||
|
|
63ef8e3f17 | ||
|
|
f1eaeb4ed2 | ||
|
|
a2ffe8e938 | ||
|
|
355d2ad6fc | ||
|
|
f089b4b077 | ||
|
|
73607b85b7 | ||
|
|
7b022f3afa | ||
|
|
0a2e4f761b | ||
|
|
ddd73cd73b | ||
|
|
efdb837a50 | ||
|
|
90abc2d2f3 | ||
|
|
f60938aab0 | ||
|
|
af7c752fc6 | ||
|
|
a80989952a | ||
|
|
8d74550609 | ||
|
|
d5774b3da4 | ||
|
|
7f7002f36c | ||
|
|
b62ba4a985 | ||
|
|
2b3370887e | ||
|
|
26427d2af0 | ||
|
|
d502b33ef4 | ||
|
|
210cf43574 | ||
|
|
d74e37d4ea | ||
|
|
ea8825996d | ||
|
|
336368195e | ||
|
|
70206b1635 | ||
|
|
191ae61b02 | ||
|
|
f6bf8d912a | ||
|
|
30b7407597 | ||
|
|
58bf73d4bf | ||
|
|
ec61073560 | ||
|
|
b0f81edf96 | ||
|
|
cc8ef47747 | ||
|
|
5d05bf0aba | ||
|
|
1d18a54b5e | ||
|
|
a4605ec844 | ||
|
|
9f58400ba8 | ||
|
|
ec8277b0e4 | ||
|
|
8c7763acf6 | ||
|
|
8e426e60c9 | ||
|
|
3a7f931a3a | ||
|
|
314ca6c361 | ||
|
|
12f0887d28 | ||
|
|
a986ae247d | ||
|
|
9507669b42 | ||
|
|
715155a1e9 | ||
|
|
32c5679039 | ||
|
|
89d211b061 | ||
|
|
f938fd4540 | ||
|
|
61e4fbf152 | ||
|
|
fda38e7cbb | ||
|
|
c0a3b02fb4 | ||
|
|
80482aae34 | ||
|
|
c19085862a | ||
|
|
9672d55c1e | ||
|
|
e043643a54 | ||
|
|
ade108f01c | ||
|
|
6b08fd5e8d | ||
|
|
3c8bbddb5f | ||
|
|
4c02b4a6c3 | ||
|
|
786726e626 | ||
|
|
1f97fe463e | ||
|
|
5a3e3ba90f | ||
|
|
154aae5093 | ||
|
|
3af88b0699 | ||
|
|
0fb620c697 | ||
|
|
7d66965d0b | ||
|
|
acca6a7161 | ||
|
|
ad2f228048 | ||
|
|
3a7dcd9736 | ||
|
|
ca15b44d0f | ||
|
|
bf9c466855 | ||
|
|
abcbacaf69 | ||
|
|
ffceff7498 | ||
|
|
25ac1db646 | ||
|
|
c6d6dae352 | ||
|
|
aa4f771df2 | ||
|
|
4715ad9009 | ||
|
|
a4e5a5ac78 | ||
|
|
f587efde60 | ||
|
|
d57f4c54d8 | ||
|
|
b9c74e0b07 | ||
|
|
aebefe09b5 | ||
|
|
78c13d252e | ||
|
|
8270c85ffd | ||
|
|
7a2279e433 | ||
|
|
3ef519d139 | ||
|
|
85eac05a38 | ||
|
|
8af79841f7 | ||
|
|
afe236d9ac | ||
|
|
90f8e0b70e | ||
|
|
0432c1d7e3 | ||
|
|
08820a2061 | ||
|
|
4f62978de5 | ||
|
|
3ab8238cfb | ||
|
|
43a9db55b1 | ||
|
|
08fdcad282 | ||
|
|
7df6e0dc68 | ||
|
|
5c1c5880b6 | ||
|
|
f99efbf72e | ||
|
|
e90b60eecd | ||
|
|
1205e15be2 | ||
|
|
32f39f35f6 | ||
|
|
9591b86430 | ||
|
|
b54c6023eb | ||
|
|
00ba5d36b9 | ||
|
|
89eeaf1390 | ||
|
|
3f18b93980 | ||
|
|
96cb056ec9 | ||
|
|
1042f1ac8b | ||
|
|
dd232594a5 | ||
|
|
5762e5fdfb | ||
|
|
0f1c154a1a | ||
|
|
ad1fcbe8b2 | ||
|
|
877440b1e6 | ||
|
|
ca02a58519 | ||
|
|
2834f2d8b6 | ||
|
|
cc4f285765 | ||
|
|
2efae5a9c3 | ||
|
|
416cc72498 | ||
|
|
d66584f35c | ||
|
|
2b80d7ad8d | ||
|
|
be3445b78a | ||
|
|
ab63042dfa | ||
|
|
af8622e8ff | ||
|
|
53d083ec58 | ||
|
|
32f74b60ef | ||
|
|
0885be1dc0 | ||
|
|
8b58b208ca | ||
|
|
3188aeaac4 | ||
|
|
e83edd30de | ||
|
|
04333699a0 | ||
|
|
95c9f76e32 | ||
|
|
2830b6a899 | ||
|
|
54c02ef4b4 | ||
|
|
dacce7c864 | ||
|
|
08c5f9aed8 | ||
|
|
fb26ce5c24 | ||
|
|
91d869e61a | ||
|
|
d168bdd0c8 | ||
|
|
6a104c1938 | ||
|
|
2d5525e887 | ||
|
|
a35ad186e3 | ||
|
|
dd469adf29 | ||
|
|
4ffc5cbe6a | ||
|
|
f3449dcfcb | ||
|
|
4e8c7b9216 | ||
|
|
473078986c | ||
|
|
5b74c58a43 | ||
|
|
a72a4e1fcb | ||
|
|
13dd72029f | ||
|
|
fc4fc5762b | ||
|
|
d515903172 | ||
|
|
97a6a51bec | ||
|
|
9222c79043 | ||
|
|
38254a8695 | ||
|
|
9b1aede911 | ||
|
|
ac71888236 | ||
|
|
3f31b52daf | ||
|
|
e3230aad55 | ||
|
|
ac40aa9b02 | ||
|
|
fa480e61a1 | ||
|
|
c19644882b | ||
|
|
e29eccd741 | ||
|
|
4dd80567e1 | ||
|
|
2654c79548 | ||
|
|
3b357340fd | ||
|
|
6c8e74bac9 | ||
|
|
182714b6b8 | ||
|
|
8410be848f | ||
|
|
3f9b9962c3 | ||
|
|
ec1f4bc33d | ||
|
|
f2a0d36b34 | ||
|
|
fc2b86df4f | ||
|
|
0cd0792b65 | ||
|
|
122ee5ab7d | ||
|
|
8270ef71b2 | ||
|
|
d59a13079f | ||
|
|
ed59bd22f3 | ||
|
|
8d32c870fc | ||
|
|
bea2d4fb34 | ||
|
|
fcb97bf78a | ||
|
|
161a78dc23 | ||
|
|
4b7bddb481 | ||
|
|
0879b1b38b | ||
|
|
8bf81a581a | ||
|
|
759da58648 | ||
|
|
ec4a4fe7df | ||
|
|
4dedd62aea | ||
|
|
cf4030ed94 | ||
|
|
35df887307 | ||
|
|
d41adaa51b | ||
|
|
9373a45870 | ||
|
|
a2db88c9c3 | ||
|
|
a26d7bf9e8 | ||
|
|
4225047b06 | ||
|
|
0a9ed9977b | ||
|
|
fc1b4ce88e | ||
|
|
6295c96852 | ||
|
|
73418b5c16 | ||
|
|
98d530f0b1 | ||
|
|
e45ed0ed8c | ||
|
|
fc04e2db89 | ||
|
|
cfaacc5a76 | ||
|
|
b91c3edb16 | ||
|
|
0a503a0bed | ||
|
|
015e4d66b2 | ||
|
|
9e36ebdaab | ||
|
|
da4c135e23 | ||
|
|
588851ac1c | ||
|
|
2b7d7061f9 | ||
|
|
24bc3b6d76 | ||
|
|
cd52a152f6 | ||
|
|
3ecf8be873 | ||
|
|
f38466db11 | ||
|
|
3b8d5c0609 | ||
|
|
60539aaa56 | ||
|
|
6d53e67670 | ||
|
|
9771e63247 | ||
|
|
02c9bcabe0 | ||
|
|
69c8a09d43 | ||
|
|
9ae229a0d5 | ||
|
|
38921fad17 | ||
|
|
633858a218 | ||
|
|
70262b38f8 | ||
|
|
f96dedf3a9 | ||
|
|
1ce0493488 | ||
|
|
027a0d2ee6 | ||
|
|
9c8e08811b | ||
|
|
c1c09f3342 | ||
|
|
05b82a22bc | ||
|
|
067aa2ced0 | ||
|
|
f18733fd09 | ||
|
|
a981f657ec | ||
|
|
81426ae800 | ||
|
|
4771452590 | ||
|
|
10bfaf0e4b | ||
|
|
9e25ec2f07 | ||
|
|
90fb908376 | ||
|
|
a08c0753e7 | ||
|
|
fc22cb2bf0 | ||
|
|
fbaae2e493 | ||
|
|
c86390e139 | ||
|
|
d890642c28 | ||
|
|
6620a3cd90 | ||
|
|
7e181280b3 | ||
|
|
53499e6b14 | ||
|
|
3f948ae501 | ||
|
|
2090887a07 | ||
|
|
a7bfae061c | ||
|
|
fb1926a571 | ||
|
|
c215158d67 | ||
|
|
74152562fe | ||
|
|
e2af871a5a | ||
|
|
2ad116649a | ||
|
|
03aa086e0b | ||
|
|
a335857695 | ||
|
|
95a88b9d5d | ||
|
|
2501783d62 | ||
|
|
7367f0ffbd | ||
|
|
088442e9c1 | ||
|
|
ec14c6b2dc | ||
|
|
7eb033e71a | ||
|
|
1a700c1212 | ||
|
|
78fbde0e1f | ||
|
|
a30cc5e41e | ||
|
|
804a495d82 | ||
|
|
0a4eea4388 | ||
|
|
8471ce8d46 | ||
|
|
f9b1cf6c1c | ||
|
|
22a2887df2 | ||
|
|
02e88a31df | ||
|
|
98d5bc1285 | ||
|
|
436815f313 | ||
|
|
328ce82bae | ||
|
|
d39a048e6e | ||
|
|
67b56488d3 | ||
|
|
07397edd47 | ||
|
|
1e3bdc9c06 | ||
|
|
12bfeaa0d3 | ||
|
|
56801f9095 | ||
|
|
54b0b38900 | ||
|
|
e4660969cf | ||
|
|
1090a1612a | ||
|
|
f4baba8cc1 | ||
|
|
28fa237f87 | ||
|
|
f19f0e8193 | ||
|
|
72d6ee2446 | ||
|
|
f8dfe48653 | ||
|
|
9c9c0d991a | ||
|
|
8d2cb5fdf1 | ||
|
|
1486796973 | ||
|
|
1300f8f49f | ||
|
|
29e9c63e94 | ||
|
|
4bda6769c5 | ||
|
|
dc5c59b40b | ||
|
|
a90ef2504e | ||
|
|
0f3967e87d | ||
|
|
1a0df174c9 | ||
|
|
a1b5375e50 | ||
|
|
101fd139c7 | ||
|
|
25d5fb1655 | ||
|
|
e672042306 | ||
|
|
42ec3f9f06 | ||
|
|
a4fd148a80 | ||
|
|
e9927fb09c | ||
|
|
da31c9a708 | ||
|
|
1be8cb8e91 | ||
|
|
a6ae79faf4 | ||
|
|
61c345955e | ||
|
|
ebce6da788 | ||
|
|
9772c1caeb | ||
|
|
5661855dcc | ||
|
|
11319171be | ||
|
|
3134b59637 | ||
|
|
dfb87dce38 | ||
|
|
ce105d2350 | ||
|
|
e039397ab1 | ||
|
|
b54aadf968 | ||
|
|
e9cf074b45 | ||
|
|
c417c2011b | ||
|
|
2c3c3c9a84 | ||
|
|
f546390221 | ||
|
|
40034e056f | ||
|
|
47e9896d54 | ||
|
|
cda365f22a | ||
|
|
36e1252824 | ||
|
|
cf873d0fc5 | ||
|
|
026c50deb3 | ||
|
|
c5138eb30f | ||
|
|
0bd59998c0 | ||
|
|
7cd336081f | ||
|
|
47cc931b0f | ||
|
|
5462216bb3 | ||
|
|
fe86615625 | ||
|
|
9a74abf4cc | ||
|
|
2847f690f1 | ||
|
|
2c94e9e650 | ||
|
|
95ab2ab443 | ||
|
|
3dcfa2c475 | ||
|
|
7bab31543e | ||
|
|
08c4c2a8b5 | ||
|
|
9fcad69bf4 | ||
|
|
b406a536a9 | ||
|
|
5e8ab9ce4a | ||
|
|
562d47f12a | ||
|
|
ab6d4d7de5 | ||
|
|
4b9ad21e9e | ||
|
|
f4c233aeba | ||
|
|
90497b1e47 | ||
|
|
9b9319cbd0 | ||
|
|
fe948d6805 | ||
|
|
b17d70679f | ||
|
|
5290451a65 | ||
|
|
faadb34aff | ||
|
|
314b4530d8 | ||
|
|
843d342137 | ||
|
|
f0981964f3 | ||
|
|
da409549d4 | ||
|
|
dc7ad2afc7 | ||
|
|
7e8ea51c1a | ||
|
|
343afc2374 | ||
|
|
c2a0a2092a | ||
|
|
f74a252b95 | ||
|
|
f5cfadae67 | ||
|
|
7c1ecaf2b8 | ||
|
|
ea5edf20ba | ||
|
|
c5f8cc7816 | ||
|
|
60d75d26f0 | ||
|
|
f6402d3390 | ||
|
|
7b23a1b9a8 | ||
|
|
7714d12f7c | ||
|
|
fc813e40eb | ||
|
|
96578c3d2f | ||
|
|
f47be0808f | ||
|
|
b6d1e15a9f | ||
|
|
7d332aaa35 | ||
|
|
9ff8705cd7 | ||
|
|
76669995f6 | ||
|
|
1079e9bfaf | ||
|
|
67d85316ac | ||
|
|
7d41f4e22c | ||
|
|
cdeb0d1423 | ||
|
|
477699a102 | ||
|
|
63047d01ab | ||
|
|
5e53e64df2 | ||
|
|
89207155fd | ||
|
|
b7d9eecf86 | ||
|
|
8212994018 | ||
|
|
c283cb0ff4 | ||
|
|
a34ab9a268 | ||
|
|
2a2a2b26ef | ||
|
|
49fe2c3bb3 | ||
|
|
170942c8be | ||
|
|
438b3529ae | ||
|
|
2bff901860 | ||
|
|
d45fff3c5a | ||
|
|
8843a22854 | ||
|
|
d9ba73af44 | ||
|
|
491d5935cf | ||
|
|
85389afb3e | ||
|
|
16d75249c5 | ||
|
|
27842f4cff | ||
|
|
016afd4b2c | ||
|
|
cdb0cbdca7 | ||
|
|
da2d7ea8c0 | ||
|
|
f6278d590a | ||
|
|
3b0d14bd5d | ||
|
|
66d1f2099b | ||
|
|
1ae32c12ab | ||
|
|
c626de76ff | ||
|
|
c80792d713 | ||
|
|
a16958e35d | ||
|
|
3e4c75e41b | ||
|
|
1596174a36 | ||
|
|
f4084f069a | ||
|
|
aceee680c8 | ||
|
|
48c47bf11e | ||
|
|
8783c013e5 | ||
|
|
aaa0127354 | ||
|
|
70069f53b1 | ||
|
|
bf665e1c14 | ||
|
|
e359a69b18 | ||
|
|
c01caefac9 | ||
|
|
2653201fe1 | ||
|
|
dadab35aee | ||
|
|
c218af8512 | ||
|
|
874ead9751 | ||
|
|
1e5308db31 | ||
|
|
83c8381c19 | ||
|
|
b5f5117555 | ||
|
|
b0a4f5c981 | ||
|
|
1da50abe2f | ||
|
|
6d69ff0bda | ||
|
|
7179d135fa | ||
|
|
3e4523e1ef | ||
|
|
69a65dd63f | ||
|
|
3c25a9b40d | ||
|
|
f43d9b5e88 | ||
|
|
5826bc80bc | ||
|
|
6563b03299 | ||
|
|
406ff55c7d | ||
|
|
8882bbe617 | ||
|
|
769a886b93 | ||
|
|
f2fc002f5c | ||
|
|
836998c9e9 | ||
|
|
f90a5b14ad | ||
|
|
6004bdf012 | ||
|
|
d7610a7c55 | ||
|
|
2ecc1e06cf | ||
|
|
dcc017d681 | ||
|
|
ea401f6556 | ||
|
|
09fbe288d8 | ||
|
|
7786175d32 | ||
|
|
f558516f40 | ||
|
|
d8c46d94df | ||
|
|
f64e335735 | ||
|
|
b263ba7df2 | ||
|
|
d2a68d92a3 | ||
|
|
4cbff8e1a1 | ||
|
|
33ffafc7d6 | ||
|
|
4780c4bb18 | ||
|
|
c61561aab2 | ||
|
|
9466862560 | ||
|
|
931dd4e301 | ||
|
|
e52475cac7 | ||
|
|
afa9fc051e | ||
|
|
3cbf49cba7 | ||
|
|
5deb7e8c2d | ||
|
|
2003222691 | ||
|
|
08913bf96b | ||
|
|
15c047077a | ||
|
|
260bcfd532 | ||
|
|
3deb295d29 | ||
|
|
f56ac542bc | ||
|
|
ebd6d3ef19 | ||
|
|
808ed75858 | ||
|
|
d2c704884e | ||
|
|
91a5b1ce52 | ||
|
|
bec30efec5 | ||
|
|
2cd24cfa9e | ||
|
|
963fb84cb7 | ||
|
|
65729c4acc | ||
|
|
9b8e8ff17a | ||
|
|
8ea9c68be0 | ||
|
|
282774cbdf | ||
|
|
eb504ae866 | ||
|
|
0f1520c392 | ||
|
|
009eaa3a59 | ||
|
|
80232ff8e8 | ||
|
|
9938af1580 | ||
|
|
6935a4a2e4 | ||
|
|
eef5024354 | ||
|
|
bb6b469768 | ||
|
|
d4c2dfedb2 | ||
|
|
3434ad9ca0 | ||
|
|
937219dd91 | ||
|
|
5bdd1ebdbc | ||
|
|
17f3f24652 | ||
|
|
d80b37854a | ||
|
|
cbfa21ce45 | ||
|
|
3665e65986 | ||
|
|
0daca0276b | ||
|
|
8769118471 | ||
|
|
863dbd2f4d | ||
|
|
eb00b1a1b9 | ||
|
|
953ba9b8eb | ||
|
|
aa9d43a3fc | ||
|
|
9d5cbf7e51 | ||
|
|
1744f21084 | ||
|
|
adf05bd11d | ||
|
|
3d205c3597 | ||
|
|
9f9b861769 | ||
|
|
6025d3d843 | ||
|
|
3cf03f3018 | ||
|
|
1c0caf9a81 | ||
|
|
4dc79f655f | ||
|
|
5a06d57d7e | ||
|
|
84ba7f57d0 | ||
|
|
8af30611f3 | ||
|
|
6e27476faa | ||
|
|
acddb3b939 | ||
|
|
b6193be1ef | ||
|
|
e7b1a093a3 | ||
|
|
5be8c7f85f | ||
|
|
b751ed6c6a | ||
|
|
d16ca86782 | ||
|
|
b92d6692ce | ||
|
|
dab2ff402f | ||
|
|
51252b06b9 | ||
|
|
1fd84ad9d5 | ||
|
|
c4d6b2ed0f | ||
|
|
71a239825a | ||
|
|
f72e0a8ddf | ||
|
|
069bc3a905 | ||
|
|
0307d78236 | ||
|
|
e543dc4278 | ||
|
|
029ef1795f | ||
|
|
12433fdba4 | ||
|
|
0a66adf707 | ||
|
|
b5aab26c38 | ||
|
|
416173a03c | ||
|
|
e82361c893 | ||
|
|
7d3bf03404 | ||
|
|
eb50b8319b | ||
|
|
cfd2d60575 | ||
|
|
d4c3fb8261 | ||
|
|
7940b71ffe | ||
|
|
6dd04b1a43 | ||
|
|
399a6854c5 | ||
|
|
8eded7081c | ||
|
|
3bdebba18d | ||
|
|
8aab340a2a | ||
|
|
0138228309 | ||
|
|
e60280c4d6 | ||
|
|
3912028318 | ||
|
|
59cea11ef5 | ||
|
|
d9c12abd2d | ||
|
|
4b981caa53 | ||
|
|
735ff8831d | ||
|
|
0264386c18 | ||
|
|
6529c3edd3 | ||
|
|
8840996a30 | ||
|
|
d35e549dbf | ||
|
|
7195f07b3d | ||
|
|
9398ccd820 | ||
|
|
cfd4aad49c | ||
|
|
a97620f8f0 | ||
|
|
351542257e | ||
|
|
8927aa8e02 | ||
|
|
aef7866e29 | ||
|
|
70694e3bb9 | ||
|
|
717d1ed995 | ||
|
|
3773843094 | ||
|
|
9bee0190d2 | ||
|
|
60c4619862 | ||
|
|
9ffbb3ad02 | ||
|
|
350b81db99 | ||
|
|
412b165dc9 | ||
|
|
531d7c687e | ||
|
|
e866caa900 | ||
|
|
ec466067b2 | ||
|
|
59b6f78c71 | ||
|
|
7757c85d4f | ||
|
|
3077eecb97 | ||
|
|
e6fc0f6724 | ||
|
|
42f817abf5 | ||
|
|
e716db7983 | ||
|
|
51f68e3aab | ||
|
|
3dc2c9126d | ||
|
|
3f409a7183 | ||
|
|
b3133f7cdf | ||
|
|
ac8ed74f28 | ||
|
|
b6af6994cb | ||
|
|
371e8b438a | ||
|
|
91efd7fc78 | ||
|
|
133c857c8b | ||
|
|
3b0c9f8b48 | ||
|
|
37a888deac | ||
|
|
46dc4eaa87 | ||
|
|
20132085b5 | ||
|
|
20417a02a4 | ||
|
|
aa16f3dcb3 | ||
|
|
23dfcdd396 | ||
|
|
bf00abf71e | ||
|
|
8ff06d8b82 | ||
|
|
61af974a83 | ||
|
|
e3cc9f0f92 | ||
|
|
92670cbce0 | ||
|
|
8a921360d7 | ||
|
|
045783e296 | ||
|
|
15ae37a70c | ||
|
|
a31745683b | ||
|
|
1f5d0fb72c | ||
|
|
6702d5e35c | ||
|
|
9afc06c3c7 | ||
|
|
5ef8df2fae | ||
|
|
fe4389509a | ||
|
|
a0856c1785 | ||
|
|
f3441662b5 | ||
|
|
bd40ff337f | ||
|
|
f312583627 | ||
|
|
eb066ec337 | ||
|
|
a20d98aeaf | ||
|
|
9f5701680f | ||
|
|
29578858c6 | ||
|
|
31bd22f753 | ||
|
|
74ad1ca1d1 | ||
|
|
5c6e464f98 | ||
|
|
2451b78cdf | ||
|
|
c8fc558099 | ||
|
|
1f4c35f3d8 | ||
|
|
0b135772d2 | ||
|
|
014672637a | ||
|
|
84588a366c | ||
|
|
ab14380eb8 | ||
|
|
6d66ab06d1 | ||
|
|
a829da5d48 | ||
|
|
72996a2250 | ||
|
|
00fb0c4965 | ||
|
|
e15a04ade9 | ||
|
|
9d1b25d424 | ||
|
|
791fa2ba16 | ||
|
|
e13b31d99b | ||
|
|
4ec391b9fe | ||
|
|
84c0c355d5 | ||
|
|
e07d1aa621 | ||
|
|
34b98e06a3 | ||
|
|
c6dba6a83a | ||
|
|
e6b105837d | ||
|
|
1cf12ff6ae | ||
|
|
56523a5d82 | ||
|
|
0ca86a5cf4 | ||
|
|
4c4bd0cd8f | ||
|
|
8da3438ae7 | ||
|
|
dd25750f7d | ||
|
|
8210b1b86f | ||
|
|
d644d05245 | ||
|
|
33b14fd7d8 | ||
|
|
b8c0602a37 | ||
|
|
e0de86ec88 | ||
|
|
8d418604f0 | ||
|
|
77b19b834b | ||
|
|
2f4b3c0e26 | ||
|
|
b87d24de91 | ||
|
|
7b30e0e406 | ||
|
|
618dee031d | ||
|
|
c233caf50b | ||
|
|
a54b5e39ab | ||
|
|
c25919d87e | ||
|
|
fb0da4578c | ||
|
|
7e328b5c4c | ||
|
|
e6f044c516 | ||
|
|
9ecd5a7a3c | ||
|
|
a96dba2dd0 | ||
|
|
45bbaf2af1 | ||
|
|
0c7ef07cf3 | ||
|
|
069b8ebf4d | ||
|
|
f1d01877dc | ||
|
|
c6acf94914 | ||
|
|
c85cb43c4d | ||
|
|
4c928c6157 | ||
|
|
ce660cb826 | ||
|
|
8377522f61 | ||
|
|
a03ca11ab9 | ||
|
|
780512c279 | ||
|
|
57d814fda2 | ||
|
|
3883ad351d | ||
|
|
7be91155e1 | ||
|
|
a1cc37c6d9 | ||
|
|
2cbae63649 | ||
|
|
f8a78c39a0 | ||
|
|
f4afd495ad | ||
|
|
2a7cebcf30 | ||
|
|
4d0abe0961 | ||
|
|
9b3df57588 | ||
|
|
fc146be08a | ||
|
|
d359d0574b | ||
|
|
69cbb609ba | ||
|
|
d61b28e767 | ||
|
|
6f43c8fe50 | ||
|
|
6e30cd87aa | ||
|
|
5163529b69 | ||
|
|
418f4adc6a | ||
|
|
b7b03c7064 | ||
|
|
2e4bc56b73 | ||
|
|
9f5040d8cc | ||
|
|
cf77a9a744 | ||
|
|
32765ed706 | ||
|
|
ccee039c76 | ||
|
|
29584e3c51 | ||
|
|
4ccab99765 | ||
|
|
b523590f9e | ||
|
|
2f72c0e496 | ||
|
|
45ddd3d7f1 | ||
|
|
deab38a4e1 | ||
|
|
30b6868d95 | ||
|
|
4b8d19c75c | ||
|
|
a1b44201d4 | ||
|
|
52c1d5ace2 | ||
|
|
e5e93f5f43 | ||
|
|
389c4af010 | ||
|
|
bc8d523a4e | ||
|
|
42d6c9ff43 | ||
|
|
4cc5e6d648 | ||
|
|
e4ca350391 | ||
|
|
36dcca2f1f | ||
|
|
ba4cc78a75 | ||
|
|
af44abf7a6 | ||
|
|
db71b1a43d | ||
|
|
a9487e89bf | ||
|
|
addcb1460b | ||
|
|
95f3064aef | ||
|
|
4da156f392 | ||
|
|
5e5916ce08 | ||
|
|
16e055a740 | ||
|
|
c2bc1c5361 | ||
|
|
2cb7394583 | ||
|
|
cbb256adde | ||
|
|
0b51d18b3a | ||
|
|
6454a81593 | ||
|
|
08150b09fc | ||
|
|
738304f438 | ||
|
|
5b94bc3259 | ||
|
|
ad02e8cd05 | ||
|
|
665264723d | ||
|
|
f588876461 | ||
|
|
cce9e3a100 | ||
|
|
b7134385b2 | ||
|
|
63793b74f2 | ||
|
|
0b0e9e02e7 | ||
|
|
5c60f18146 | ||
|
|
c0ce5cb3e3 | ||
|
|
8e84f53c65 | ||
|
|
ea974fde74 | ||
|
|
a5ee60c56a | ||
|
|
2a8f0b8d0b | ||
|
|
4f2f5bb700 | ||
|
|
5fc97bc7f3 | ||
|
|
c11cd92b83 | ||
|
|
9a91aa2584 | ||
|
|
15b13054d1 | ||
|
|
22d4a1d73d | ||
|
|
fb970192cd | ||
|
|
c58daa1dc9 | ||
|
|
28ef796d47 | ||
|
|
8135948e0d | ||
|
|
1c67d19b37 | ||
|
|
bb8883b7ef | ||
|
|
361eee66ca | ||
|
|
228524fa46 | ||
|
|
acbda732a8 | ||
|
|
18a5e44dbc | ||
|
|
6652eced95 | ||
|
|
b4772bc3b6 | ||
|
|
273af5368f | ||
|
|
582f9f9143 | ||
|
|
1620a17eca | ||
|
|
16fa082e47 | ||
|
|
f473eae8c3 | ||
|
|
40f009f017 | ||
|
|
97536e53a8 | ||
|
|
7cbec9ee8f | ||
|
|
18f3849678 | ||
|
|
f2d153779c | ||
|
|
d66f3a8bf4 | ||
|
|
197c05106e | ||
|
|
8e9a44ee3f | ||
|
|
5c2fa708e7 | ||
|
|
6e620589b5 | ||
|
|
97d836eb1d | ||
|
|
13ebfdf831 | ||
|
|
130cac96d3 | ||
|
|
dd8307268e | ||
|
|
99a04e9512 | ||
|
|
0cf38bcd19 | ||
|
|
19e4e0cbeb | ||
|
|
59ad09cfbd | ||
|
|
c1c9fc1ed4 | ||
|
|
df570f6889 | ||
|
|
669a29bded | ||
|
|
ff047a27c9 | ||
|
|
957115e467 | ||
|
|
be541237e8 | ||
|
|
b801518195 | ||
|
|
32615f48b6 | ||
|
|
6a62ec43e9 | ||
|
|
74b00f42df | ||
|
|
7954ff688f | ||
|
|
05777ebf38 | ||
|
|
26a1fb06a0 | ||
|
|
b370852272 | ||
|
|
f143cfe213 | ||
|
|
0d074c36e5 | ||
|
|
c358fc0c04 | ||
|
|
f316b07a2b | ||
|
|
025a87222f | ||
|
|
492305e965 | ||
|
|
ac16fefbf8 | ||
|
|
386abbee66 | ||
|
|
3a8ffa7e0f | ||
|
|
75d6413f49 | ||
|
|
6ef1ef6a3d | ||
|
|
d820d68a8c | ||
|
|
0f164c9204 | ||
|
|
7145fa5528 | ||
|
|
4f4810c327 | ||
|
|
d24cf0ad27 | ||
|
|
36cd3331a7 | ||
|
|
e0d87eee71 | ||
|
|
5d4c770b6c | ||
|
|
fe2e22f5b8 | ||
|
|
78ca9d3ab8 | ||
|
|
5c5f471731 | ||
|
|
4d27585b34 | ||
|
|
0fddcfef32 | ||
|
|
d56800f638 | ||
|
|
c38e34fe1b | ||
|
|
68047d6fa7 | ||
|
|
94c2b05a60 | ||
|
|
3046eee5dc | ||
|
|
6d6cb201ca | ||
|
|
8587bd4435 | ||
|
|
50efa65c12 | ||
|
|
aa06a8a606 | ||
|
|
606014642d | ||
|
|
dd406a8cdb | ||
|
|
9b15377cee | ||
|
|
ed4b8f0c8f | ||
|
|
d946ac2c99 | ||
|
|
383ea3542a | ||
|
|
c367d5bc75 | ||
|
|
4ab0ec96a8 | ||
|
|
9955070085 | ||
|
|
56957d4940 | ||
|
|
4bb01e5fe8 | ||
|
|
01212cb19d | ||
|
|
15ca05d7e1 | ||
|
|
1876257610 | ||
|
|
00fdf6a1c1 | ||
|
|
b99b4d5ef3 | ||
|
|
c1c88a2ca7 | ||
|
|
9214e98c78 | ||
|
|
3b12b93e09 | ||
|
|
96172da83f | ||
|
|
8240542d3e | ||
|
|
088553d308 | ||
|
|
39cab15994 | ||
|
|
045fccc8c0 | ||
|
|
0e5a8f158e | ||
|
|
72c39bcfc8 | ||
|
|
017e08747d | ||
|
|
b1e186a132 | ||
|
|
78fd05ab73 | ||
|
|
435f1b4781 | ||
|
|
287c4cf89f | ||
|
|
3601f1c9ee | ||
|
|
ca42b63bc2 | ||
|
|
06725c5a51 | ||
|
|
bc23db08fb | ||
|
|
6802237479 | ||
|
|
dbb32e99c7 | ||
|
|
9593a6f720 | ||
|
|
2d91be0329 | ||
|
|
796130066d | ||
|
|
554ecb0e33 | ||
|
|
c9b1cade48 | ||
|
|
8570c632b9 | ||
|
|
eb9e4f7133 | ||
|
|
5fe95db75e | ||
|
|
88f3430f1e | ||
|
|
0822af4e68 | ||
|
|
d4bdc50b57 | ||
|
|
c027a12654 | ||
|
|
4b5417ead3 | ||
|
|
2a6277cc19 | ||
|
|
cd0263c2e4 | ||
|
|
f7c0b6f59c | ||
|
|
090172ca66 | ||
|
|
66fc74ac18 | ||
|
|
9a395facfd | ||
|
|
1a1d45c9a0 | ||
|
|
3868f70b18 | ||
|
|
90ea0e601b | ||
|
|
7846a2ecba | ||
|
|
1edfb50000 | ||
|
|
6435c0f5f7 | ||
|
|
35333c5fe2 | ||
|
|
ebdc11b380 | ||
|
|
b15c5a7278 | ||
|
|
48810996b3 | ||
|
|
19ccbf2d47 | ||
|
|
02fc867ef4 | ||
|
|
bb5d211c94 | ||
|
|
afba7f7294 | ||
|
|
d050b3268a | ||
|
|
e7ef99bae9 | ||
|
|
f14ad85402 | ||
|
|
457df4de2c | ||
|
|
b33dbf0717 | ||
|
|
dad9970ca6 | ||
|
|
afe1489a73 | ||
|
|
7cd544d33e | ||
|
|
13cb504c38 | ||
|
|
d528d25f8c | ||
|
|
5c062d6700 | ||
|
|
e2e26141d9 | ||
|
|
0e580ca6a6 | ||
|
|
70299041b0 | ||
|
|
fb25258a62 | ||
|
|
0a21938fe3 | ||
|
|
768abdeea3 | ||
|
|
62228291ab | ||
|
|
f4cbf85e2e | ||
|
|
81e31e7be2 | ||
|
|
7baf983574 | ||
|
|
8122c1b692 | ||
|
|
e752345cc5 | ||
|
|
e57c497f7d | ||
|
|
cbc675e584 | ||
|
|
a698486c2d | ||
|
|
5a4bdd44e4 | ||
|
|
1d8b2370d3 | ||
|
|
b71ff3799c | ||
|
|
dd4f4c4e8c | ||
|
|
cb285f55d1 | ||
|
|
8428740098 | ||
|
|
7b70efe4cd | ||
|
|
af59fd8514 | ||
|
|
d1afb27fe9 | ||
|
|
545cf0b0c5 | ||
|
|
a57a487513 | ||
|
|
4b2332ae39 | ||
|
|
f739bd3927 | ||
|
|
825df517db | ||
|
|
afb46586ab | ||
|
|
9bcd4e3061 | ||
|
|
ee1f385ed2 | ||
|
|
1f2d9ca2ea | ||
|
|
eaea480060 | ||
|
|
9cda84f855 | ||
|
|
6e82e31c77 | ||
|
|
f58751b356 | ||
|
|
34c113ad98 | ||
|
|
679e57cfa9 | ||
|
|
49373e54d1 | ||
|
|
c4262a7734 | ||
|
|
e07a017984 | ||
|
|
6d5802c788 | ||
|
|
02799e5297 | ||
|
|
b89018eb84 | ||
|
|
b6f5283dd1 | ||
|
|
4459c0d04c | ||
|
|
5ccaf5b7e2 | ||
|
|
92566fdbb1 | ||
|
|
9c9baf98a3 | ||
|
|
4b43b6d2b3 | ||
|
|
b801f9d762 | ||
|
|
57eaa0cfa4 | ||
|
|
77eb04a5c3 | ||
|
|
c815004860 | ||
|
|
3cb27fbd50 | ||
|
|
8256706f40 | ||
|
|
ceb51dfdcf | ||
|
|
e79904fbd7 | ||
|
|
ba6dca6e3b | ||
|
|
ccd16a2b8a | ||
|
|
903612dc56 | ||
|
|
7c286fc8b9 | ||
|
|
30f03692ef | ||
|
|
bd79dd1aec | ||
|
|
b4480cb88f | ||
|
|
10ceaa256f | ||
|
|
74b33f483b | ||
|
|
5fef7529c2 | ||
|
|
1209212f45 | ||
|
|
d9001f8765 | ||
|
|
1df26d5ac7 | ||
|
|
b8aeb40ca5 | ||
|
|
2a11069380 | ||
|
|
cad3f9a5ac | ||
|
|
b5c2ce3521 | ||
|
|
6d969817d0 | ||
|
|
2690b50986 | ||
|
|
5957195aaf | ||
|
|
76f526d167 | ||
|
|
4136e96ce3 | ||
|
|
1c2f6b6284 | ||
|
|
37cd3e10ed | ||
|
|
4a9e3ee937 | ||
|
|
1e98c5467d | ||
|
|
9767d11162 | ||
|
|
c60187f78a | ||
|
|
73febed2dc | ||
|
|
832f4286bb | ||
|
|
befe9c2e52 | ||
|
|
c8d329ebf4 | ||
|
|
777510edec | ||
|
|
4a15f5e1f5 | ||
|
|
4e57b17c0b | ||
|
|
f44a5121f4 | ||
|
|
56b7aacb8a | ||
|
|
1123f7e16f | ||
|
|
a4b6048fea | ||
|
|
c67924f0e2 | ||
|
|
94046075c1 | ||
|
|
ec83c0256f | ||
|
|
3b3a486966 | ||
|
|
2e1aaac1ed | ||
|
|
89001e15b8 | ||
|
|
5d0624becc | ||
|
|
fd3f9efdd0 | ||
|
|
44e06eecee | ||
|
|
12d5c58e3c | ||
|
|
37c4279629 | ||
|
|
4cc8de920c | ||
|
|
9ead2663c2 | ||
|
|
af42a20f4f | ||
|
|
e6550b464d | ||
|
|
fdbf030723 | ||
|
|
42e611af67 | ||
|
|
1e513f3f47 | ||
|
|
a2f8f48e48 | ||
|
|
ad7800695e | ||
|
|
87d04cee9e | ||
|
|
6f01836f10 | ||
|
|
975df131da | ||
|
|
2e1d7c7668 | ||
|
|
27d62b87d5 | ||
|
|
d6ee3ad160 | ||
|
|
e6b21796c1 | ||
|
|
a7ef822636 | ||
|
|
b995cbbbee | ||
|
|
ed22de1847 | ||
|
|
cea11a3165 | ||
|
|
38dc9fa23d | ||
|
|
c7c3d09355 | ||
|
|
3cb174feb2 | ||
|
|
5d049b0ede | ||
|
|
012a98949c | ||
|
|
736c5aed2f | ||
|
|
adca49cc9d | ||
|
|
2330e67499 | ||
|
|
9ad1dd10bf | ||
|
|
c5c09d077f | ||
|
|
b28b23c7df | ||
|
|
a57c0b2428 | ||
|
|
be8b9c0b0b | ||
|
|
9655869416 | ||
|
|
526a449e5d | ||
|
|
bf67477cac | ||
|
|
eed4b5c388 | ||
|
|
9afe77a0bb | ||
|
|
98295558a6 | ||
|
|
6bf9c326f9 | ||
|
|
ff64f8166a | ||
|
|
fa7f5070c4 | ||
|
|
9bcaf2b059 | ||
|
|
743fef66d8 | ||
|
|
ece36751f0 | ||
|
|
610ae5d9e4 | ||
|
|
c79c41298b | ||
|
|
ce0e31c1d9 | ||
|
|
95fa78ac80 | ||
|
|
5c56653c1f | ||
|
|
f3854a7164 | ||
|
|
26af941e5d | ||
|
|
3a6f6d4fa5 | ||
|
|
f1824469cd | ||
|
|
ccef3c4697 | ||
|
|
05f8c28ed1 | ||
|
|
03d9e0b24d | ||
|
|
5e877c055b | ||
|
|
c3c824330a | ||
|
|
5579a30392 | ||
|
|
3794336920 | ||
|
|
574d859bed | ||
|
|
e5bc9c08bc | ||
|
|
7e1f6eef66 | ||
|
|
9d8275c7d6 | ||
|
|
4b02265c1b | ||
|
|
c13f16ca6d | ||
|
|
7f9be89b8d | ||
|
|
568c82e25c | ||
|
|
111142ba4f | ||
|
|
b5a5003921 | ||
|
|
577609b392 | ||
|
|
3c767e015e | ||
|
|
c68bf7a7d8 | ||
|
|
1b947ec180 | ||
|
|
0b05355522 | ||
|
|
3effb00c80 | ||
|
|
e86bbe0816 | ||
|
|
8548b6d340 | ||
|
|
587d525d98 | ||
|
|
4d70120b1d | ||
|
|
376709c944 | ||
|
|
6bf8028b1f | ||
|
|
a2ef3741ad | ||
|
|
cdfdb24f92 | ||
|
|
3ca2d5c6b8 | ||
|
|
5f6bda072a | ||
|
|
40afdf4a76 | ||
|
|
fa4a2f9eeb | ||
|
|
c402207f74 | ||
|
|
56e30286ba | ||
|
|
19be61ac97 | ||
|
|
c49970bcf0 | ||
|
|
1889b5b7b4 | ||
|
|
9d09931903 | ||
|
|
d05f9959f3 | ||
|
|
07903368d4 | ||
|
|
684bde9039 | ||
|
|
3aab1a558f | ||
|
|
2ff8a25192 | ||
|
|
285f1da847 | ||
|
|
5b2ba18bfe | ||
|
|
8aba382350 | ||
|
|
540631f696 | ||
|
|
145a82b738 | ||
|
|
5d9b8c5995 | ||
|
|
b20fa52bcd | ||
|
|
89e45fb738 | ||
|
|
0f37c9811e | ||
|
|
e7abe27bfa | ||
|
|
bf7608550d | ||
|
|
a894ca9e65 | ||
|
|
58c184a1f4 | ||
|
|
1c4ead3572 | ||
|
|
e20ac4193b | ||
|
|
d13d85681f | ||
|
|
a382def2d0 | ||
|
|
d28407d735 | ||
|
|
457db9d09e | ||
|
|
13691adc63 | ||
|
|
fa43d9d117 | ||
|
|
5f0c645d5a | ||
|
|
a52b30aa2a | ||
|
|
c19a42625a | ||
|
|
f6fcbaffad | ||
|
|
d1d7dcb9cc | ||
|
|
5b76eb1161 | ||
|
|
f65b3d677a | ||
|
|
688fa467b2 | ||
|
|
bc432f9584 | ||
|
|
4133656bea | ||
|
|
0413b6c841 | ||
|
|
8c874176f4 | ||
|
|
3d0c026835 | ||
|
|
d4966b6bca | ||
|
|
7be0fb0d56 | ||
|
|
f5f7bea3db | ||
|
|
5344f54c3c | ||
|
|
7d7b557142 | ||
|
|
0a797af081 | ||
|
|
70464529a6 | ||
|
|
5fefbbd214 | ||
|
|
3567e205a9 | ||
|
|
e20796e828 | ||
|
|
c81417dc1a | ||
|
|
d966ec28aa | ||
|
|
64a6ec552c | ||
|
|
e680e46671 | ||
|
|
edbc7ca885 | ||
|
|
4131c06e12 | ||
|
|
848ff6a3f9 | ||
|
|
68634a2e87 | ||
|
|
2d441f8ebd | ||
|
|
79c60f68c5 | ||
|
|
5664fe4a2e | ||
|
|
69616bb3c9 | ||
|
|
32bdc15dc0 | ||
|
|
d62ce34fc3 | ||
|
|
2ff26aa41a | ||
|
|
24c50341fb | ||
|
|
fc9601e73f | ||
|
|
10a8ad29d9 | ||
|
|
09e28a7226 | ||
|
|
600c5edaed | ||
|
|
c6baa16aa8 | ||
|
|
ab5dd3e7f2 | ||
|
|
30d6068278 | ||
|
|
1d086e4145 | ||
|
|
5473639b9f | ||
|
|
862211458c | ||
|
|
a5d17a30c7 | ||
|
|
262ab34158 | ||
|
|
1b69d553c5 | ||
|
|
5fbcd12218 | ||
|
|
6783966d0d | ||
|
|
032a56372a | ||
|
|
4eb75ec5b6 | ||
|
|
0372fefae0 | ||
|
|
76098ea883 | ||
|
|
a1aa8639fe | ||
|
|
4d56644db0 | ||
|
|
d3170e606f | ||
|
|
0f899bf029 | ||
|
|
011434d314 | ||
|
|
94033d22f8 | ||
|
|
4415cb65f5 | ||
|
|
598aeeb4df | ||
|
|
788bbdb65a | ||
|
|
eba47d0af3 | ||
|
|
8ff58a2e0e | ||
|
|
323ab1e02d | ||
|
|
6dbe79bfb5 | ||
|
|
850d00ccbe | ||
|
|
33da2db729 | ||
|
|
ed60db0d3b | ||
|
|
1c7f64ecde | ||
|
|
2afc202678 | ||
|
|
f7f78c0853 | ||
|
|
f039bb632d | ||
|
|
c104fdb3fc | ||
|
|
e716cba0ab | ||
|
|
e57a770adb | ||
|
|
9c05b6eb45 | ||
|
|
c82d69f115 | ||
|
|
cc9c1855b0 | ||
|
|
fdf4a42eba | ||
|
|
a552e3a0a0 | ||
|
|
3489e90f28 | ||
|
|
c643ac96aa | ||
|
|
b648b993b1 | ||
|
|
fe477aecb5 | ||
|
|
969cc9bca0 | ||
|
|
da941a3da2 | ||
|
|
cee92f5f8c | ||
|
|
f2e8e8b163 | ||
|
|
478f1e4f82 | ||
|
|
c750ab9d09 | ||
|
|
e40ed43d7b | ||
|
|
fd17c2e404 | ||
|
|
9f365eb68d | ||
|
|
c395b47f7b | ||
|
|
bc50a251e3 | ||
|
|
c02caa0e5b | ||
|
|
6e52b528e2 | ||
|
|
9a282d25e7 | ||
|
|
478490286d | ||
|
|
230329ee64 | ||
|
|
bc15f9a025 | ||
|
|
efe4ecec89 | ||
|
|
5cc2e13c37 | ||
|
|
1e10f5bf9c | ||
|
|
335e5ff5ea | ||
|
|
6eadce1922 | ||
|
|
238808acfc | ||
|
|
aea38650d3 | ||
|
|
cda3a680ff | ||
|
|
7a5670b977 | ||
|
|
6762fc22f4 | ||
|
|
b72854daa2 | ||
|
|
130d8d2878 | ||
|
|
fa13e6178e | ||
|
|
70bd0deb28 | ||
|
|
d248955d33 | ||
|
|
af7958471d | ||
|
|
3783515dff | ||
|
|
dd31dae017 | ||
|
|
1227c4b0a8 | ||
|
|
44ebe6e823 | ||
|
|
ecf7596492 | ||
|
|
a37374d1a4 | ||
|
|
8d8a7fb6ba | ||
|
|
8fa29fe3ce | ||
|
|
82c75a5334 | ||
|
|
1df97bf577 | ||
|
|
70d7e042cb | ||
|
|
2d6a81f761 | ||
|
|
66d8673aed | ||
|
|
e0430e6d11 | ||
|
|
bda33e18ee | ||
|
|
82580dc9da | ||
|
|
852dc49546 | ||
|
|
8634f9b2ba | ||
|
|
9046d8517b | ||
|
|
21d2c7a9f7 | ||
|
|
88ca656a7c | ||
|
|
2487369abb | ||
|
|
3c6a99a6c5 | ||
|
|
d34c69d9d3 | ||
|
|
08b2d778ea | ||
|
|
8d23ac8b28 | ||
|
|
ff6a0e22d1 | ||
|
|
f458c426f5 | ||
|
|
8b8b3aa47f | ||
|
|
52adcd74e1 | ||
|
|
c54d3d486f | ||
|
|
e40585efbc | ||
|
|
9e32391546 | ||
|
|
b3e15939c2 | ||
|
|
8ca0e32e7c | ||
|
|
502cd8a130 | ||
|
|
a75fa193ed | ||
|
|
d15c0c6126 | ||
|
|
c9dec2e780 | ||
|
|
637ebaf866 | ||
|
|
e9177e27fc | ||
|
|
a225a56cc0 | ||
|
|
dfb24fdaf3 | ||
|
|
34d0e33e95 | ||
|
|
66636baec8 | ||
|
|
5f04aae415 | ||
|
|
02e8e666b7 | ||
|
|
e4cc22946a | ||
|
|
1cf9139105 | ||
|
|
7db0082873 | ||
|
|
d232e951cb | ||
|
|
ce46052aae | ||
|
|
99773883be | ||
|
|
7dc740c894 | ||
|
|
ca080a61b0 | ||
|
|
42878693a7 | ||
|
|
83a1e5f0e9 | ||
|
|
6d6b4799e7 | ||
|
|
e03f09b5a3 | ||
|
|
606f35cf15 | ||
|
|
38ea608ec0 | ||
|
|
b9f70b26d3 | ||
|
|
d332c313bc | ||
|
|
4bfd3fc834 | ||
|
|
7e00a452e3 | ||
|
|
c5dfc55e56 | ||
|
|
030bb02ae3 | ||
|
|
c772d29954 | ||
|
|
29871fc142 | ||
|
|
d9f165dc5e | ||
|
|
fe4647f1cc | ||
|
|
053e4a5cca | ||
|
|
a1ac446b16 | ||
|
|
8e1bd686f2 | ||
|
|
8ea5e76692 | ||
|
|
9bb3a2a035 | ||
|
|
d8dfb52bee | ||
|
|
ea7d17d8f4 | ||
|
|
25fa5c4112 | ||
|
|
9925e23c6a | ||
|
|
6f168af72d | ||
|
|
b0628513b6 | ||
|
|
12fb1ab80c | ||
|
|
3271503542 | ||
|
|
e681a4e60b | ||
|
|
2af2b96a10 | ||
|
|
2c131c7de7 | ||
|
|
f5b5939262 | ||
|
|
ecd772779b | ||
|
|
86834a0d22 | ||
|
|
18d75b0ebf | ||
|
|
e96387b824 | ||
|
|
f513340edc | ||
|
|
3b0482d58f | ||
|
|
f1dcad4ca1 | ||
|
|
31e901e526 | ||
|
|
a6554fa60a | ||
|
|
d809c3cef9 | ||
|
|
c12c5144b5 | ||
|
|
8e5772505c | ||
|
|
18b7e4f00b | ||
|
|
de9413b948 | ||
|
|
bfdbd96730 | ||
|
|
a044d9dc50 | ||
|
|
77be0e51b1 | ||
|
|
36f4ecbcdb | ||
|
|
3875f5d8f3 | ||
|
|
f632f3a5b3 | ||
|
|
673c6d69e2 | ||
|
|
642c8a08d0 | ||
|
|
5a2a1fa552 | ||
|
|
5ffe4a591f | ||
|
|
e2c279b550 | ||
|
|
da6c467446 | ||
|
|
e080f730ef | ||
|
|
d35249c6d3 | ||
|
|
4f79c28bce | ||
|
|
321600b2b4 | ||
|
|
de06d65374 | ||
|
|
7e3b361e48 | ||
|
|
a817c9f76f | ||
|
|
26bddd34ba | ||
|
|
e060aebfcc | ||
|
|
40a1177b34 | ||
|
|
74178f0887 | ||
|
|
2c380df283 | ||
|
|
8f008315a5 | ||
|
|
1a101ad0a5 | ||
|
|
6c0f59d251 | ||
|
|
b6e4a825e0 | ||
|
|
46912a8c61 | ||
|
|
12b0b55df6 | ||
|
|
d8dd7afcf7 | ||
|
|
28b8067f9c | ||
|
|
80c9e9b889 | ||
|
|
d0c3cd24f4 | ||
|
|
8d9d3ced26 | ||
|
|
c31aa51fc1 | ||
|
|
4d56410e3b | ||
|
|
0419ae5302 | ||
|
|
9701cd896e | ||
|
|
e874f9a9aa | ||
|
|
3a756cf671 | ||
|
|
f4791ec701 | ||
|
|
fcf5e63ef8 | ||
|
|
1f3500e16f | ||
|
|
ccab9618b9 | ||
|
|
40c7d0283c | ||
|
|
62ac88664a | ||
|
|
1dfc4e2560 | ||
|
|
2a98651389 | ||
|
|
55a0c096b2 | ||
|
|
20aa1ddc8e | ||
|
|
86d7828936 | ||
|
|
2360171804 | ||
|
|
36b26d88f4 | ||
|
|
ff3aa6e9a7 | ||
|
|
3b0103cc4a | ||
|
|
5db15c71ee | ||
|
|
cfa12203b6 | ||
|
|
92b1c0e252 | ||
|
|
36c157f907 | ||
|
|
b573a71bfb | ||
|
|
99ba80fe4d | ||
|
|
dec4540f14 | ||
|
|
0a8d678513 | ||
|
|
47e728a37d | ||
|
|
bffd8bfa91 | ||
|
|
9a2304ceea | ||
|
|
be520692c3 | ||
|
|
f6c08daa4a | ||
|
|
c442167f79 | ||
|
|
2ed632da70 | ||
|
|
4613e41822 | ||
|
|
46feb97589 | ||
|
|
1fb9c1c288 | ||
|
|
d24d441019 | ||
|
|
cea8fe6aa1 | ||
|
|
4cd197818f | ||
|
|
0e37ac45a7 | ||
|
|
a67d0b48e0 | ||
|
|
99742a45d7 | ||
|
|
22c27aecfb | ||
|
|
c82040ab83 | ||
|
|
94b170e813 | ||
|
|
84fa79eaea | ||
|
|
8ebb2d5760 | ||
|
|
6dde523c66 | ||
|
|
a840b6950c | ||
|
|
bc8a1888d9 | ||
|
|
aeedb53d97 | ||
|
|
2677f03e7b | ||
|
|
87c31aafeb | ||
|
|
492282d433 | ||
|
|
a45735af7b | ||
|
|
ba0b4597a8 | ||
|
|
1450855e41 | ||
|
|
a3123ee1b0 | ||
|
|
ce5f2f41d0 | ||
|
|
48ce48ec05 | ||
|
|
c1f3f0ff17 | ||
|
|
2fc30d7033 | ||
|
|
5838f1f1fb | ||
|
|
ac0dd0d69e | ||
|
|
a0869df573 | ||
|
|
eb8544099b | ||
|
|
53008379b4 | ||
|
|
cd35aa80ee | ||
|
|
9997afb5e2 | ||
|
|
f9a6b0fe6a | ||
|
|
1cff39fca0 | ||
|
|
7984b7cd08 | ||
|
|
25ec5d0dcd | ||
|
|
05d44726af | ||
|
|
810124b3b6 | ||
|
|
88b4a283e1 | ||
|
|
63e9918f5d | ||
|
|
20701ba915 | ||
|
|
4956f912e3 | ||
|
|
fd9f47efc8 | ||
|
|
8a53b5888a | ||
|
|
c0b57d4ef4 | ||
|
|
ca85dc3f9a | ||
|
|
da82757d82 | ||
|
|
1278434f4d | ||
|
|
233182fe2b | ||
|
|
072ae943b9 | ||
|
|
a76b5b9a57 | ||
|
|
efb204feb1 | ||
|
|
3579cc9cb5 | ||
|
|
08842e5ad8 | ||
|
|
509e02f64d | ||
|
|
d7de207722 | ||
|
|
172c7cef4a | ||
|
|
b344243cab | ||
|
|
309d48b451 | ||
|
|
42bb465ba7 | ||
|
|
3fed1092ce | ||
|
|
0df3f13944 | ||
|
|
0407623099 | ||
|
|
4678036405 | ||
|
|
3e0a1fe2ce | ||
|
|
beb29f3aab | ||
|
|
85847e0169 | ||
|
|
62f78f338c | ||
|
|
8736f1589d | ||
|
|
0c50960ffa | ||
|
|
8d8d8a610b | ||
|
|
d1df7f79d7 | ||
|
|
25c7a29020 | ||
|
|
a6b376e310 | ||
|
|
aa54747dc3 | ||
|
|
1a41c71e9e | ||
|
|
2448c30d90 | ||
|
|
6b41d8e4db | ||
|
|
251ef40138 | ||
|
|
2dc3c40ebd | ||
|
|
42bf0db1d3 | ||
|
|
78126ae690 | ||
|
|
160a520baa | ||
|
|
8cf590d00d | ||
|
|
2d0ea1bd6f | ||
|
|
97e0d1ec81 | ||
|
|
f25d1c299c | ||
|
|
0e01064a23 | ||
|
|
2fe3758018 | ||
|
|
a9161cf8ad | ||
|
|
4a00ff26fd | ||
|
|
958c72c3c4 | ||
|
|
6a0f9195bd |
@@ -1,9 +1,39 @@
|
||||
[bumpversion]
|
||||
current_version = 0.6.0
|
||||
commit = True
|
||||
tag = True
|
||||
current_version = 1.1.0b1
|
||||
parse = (?P<major>\d+)
|
||||
\.(?P<minor>\d+)
|
||||
\.(?P<patch>\d+)
|
||||
((?P<prekind>a|b|rc)
|
||||
(?P<pre>\d+) # pre-release version num
|
||||
)?
|
||||
serialize =
|
||||
{major}.{minor}.{patch}{prekind}{pre}
|
||||
{major}.{minor}.{patch}
|
||||
commit = False
|
||||
tag = False
|
||||
|
||||
[bumpversion:file:setup.py]
|
||||
[bumpversion:part:prekind]
|
||||
first_value = a
|
||||
optional_value = final
|
||||
values =
|
||||
a
|
||||
b
|
||||
rc
|
||||
final
|
||||
|
||||
[bumpversion:file:dbt/version.py]
|
||||
[bumpversion:part:pre]
|
||||
first_value = 1
|
||||
|
||||
[bumpversion:file:core/setup.py]
|
||||
|
||||
[bumpversion:file:core/dbt/version.py]
|
||||
|
||||
[bumpversion:file:core/scripts/create_adapter_plugins.py]
|
||||
|
||||
[bumpversion:file:plugins/postgres/setup.py]
|
||||
|
||||
[bumpversion:file:plugins/postgres/dbt/adapters/postgres/__version__.py]
|
||||
|
||||
[bumpversion:file:docker/Dockerfile]
|
||||
|
||||
[bumpversion:file:tests/adapter/setup.py]
|
||||
|
||||
16
.changes/0.0.0.md
Normal file
16
.changes/0.0.0.md
Normal file
@@ -0,0 +1,16 @@
|
||||
## Previous Releases
|
||||
|
||||
For information on prior major and minor releases, see their changelogs:
|
||||
|
||||
* [1.0](https://github.com/dbt-labs/dbt-core/blob/1.0.latest/CHANGELOG.md)
|
||||
* [0.21](https://github.com/dbt-labs/dbt-core/blob/0.21.latest/CHANGELOG.md)
|
||||
* [0.20](https://github.com/dbt-labs/dbt-core/blob/0.20.latest/CHANGELOG.md)
|
||||
* [0.19](https://github.com/dbt-labs/dbt-core/blob/0.19.latest/CHANGELOG.md)
|
||||
* [0.18](https://github.com/dbt-labs/dbt-core/blob/0.18.latest/CHANGELOG.md)
|
||||
* [0.17](https://github.com/dbt-labs/dbt-core/blob/0.17.latest/CHANGELOG.md)
|
||||
* [0.16](https://github.com/dbt-labs/dbt-core/blob/0.16.latest/CHANGELOG.md)
|
||||
* [0.15](https://github.com/dbt-labs/dbt-core/blob/0.15.latest/CHANGELOG.md)
|
||||
* [0.14](https://github.com/dbt-labs/dbt-core/blob/0.14.latest/CHANGELOG.md)
|
||||
* [0.13](https://github.com/dbt-labs/dbt-core/blob/0.13.latest/CHANGELOG.md)
|
||||
* [0.12](https://github.com/dbt-labs/dbt-core/blob/0.12.latest/CHANGELOG.md)
|
||||
* [0.11 and earlier](https://github.com/dbt-labs/dbt-core/blob/0.11.latest/CHANGELOG.md)
|
||||
50
.changes/1.1.0-b1.md
Normal file
50
.changes/1.1.0-b1.md
Normal file
@@ -0,0 +1,50 @@
|
||||
## dbt-core 1.1.0-b1 - March 22, 2022
|
||||
### Breaking Changes
|
||||
- **Relevant to maintainers of adapter plugins _only_:** The abstractmethods `get_response` and `execute` now only return a `connection.AdapterReponse` in type hints. (Previously, they could return a string.) We encourage you to update your methods to return an object of class `AdapterResponse`, or implement a subclass specific to your adapter ([#4499](https://github.com/dbt-labs/dbt-core/issues/4499), [#4869](https://github.com/dbt-labs/dbt-core/pull/4869))
|
||||
### Features
|
||||
- Change behaviour of `non_null` test so that it only `select`s all columns if `--store-failures` is enabled. ([#4769](https://github.com/dbt-labs/dbt-core/issues/4769), [#4777](https://github.com/dbt-labs/dbt-core/pull/4777))
|
||||
- Testing framework for dbt adapter testing ([#4730](https://github.com/dbt-labs/dbt-core/issues/4730), [#4846](https://github.com/dbt-labs/dbt-core/pull/4846))
|
||||
- Allow unique key to take a list implementation for postgres/redshift ([#4738](https://github.com/dbt-labs/dbt-core/issues/4738), [#4858](https://github.com/dbt-labs/dbt-core/pull/4858))
|
||||
- Added Support for Semantic Versioning ([#4453](https://github.com/dbt-labs/dbt-core/issues/4453), [#4644](https://github.com/dbt-labs/dbt-core/pull/4644))
|
||||
- New Dockerfile to support specific db adapters and platforms. See docker/README.md for details ([#4495](https://github.com/dbt-labs/dbt-core/issues/4495), [#4487](https://github.com/dbt-labs/dbt-core/pull/4487))
|
||||
- Allow unique_key to take a list ([#2479](https://github.com/dbt-labs/dbt-core/issues/2479), [#4618](https://github.com/dbt-labs/dbt-core/pull/4618))
|
||||
- Add `--quiet` global flag and `print` Jinja function ([#3451](https://github.com/dbt-labs/dbt-core/issues/3451), [#4701](https://github.com/dbt-labs/dbt-core/pull/4701))
|
||||
- Add space before justification periods ([#4737](https://github.com/dbt-labs/dbt-core/issues/4737), [#4744](https://github.com/dbt-labs/dbt-core/pull/4744))
|
||||
### Fixes
|
||||
- Fix bug causing empty node level meta, snapshot config errors ([#4459](https://github.com/dbt-labs/dbt-core/issues/4459), [#4726](https://github.com/dbt-labs/dbt-core/pull/4726))
|
||||
- Catch all Requests Exceptions on deps install to attempt retries. Also log the exceptions hit. ([#4849](https://github.com/dbt-labs/dbt-core/issues/4849), [#4865](https://github.com/dbt-labs/dbt-core/pull/4865))
|
||||
- Use cli_vars instead of context to create package and selector renderers ([#4876](https://github.com/dbt-labs/dbt-core/issues/4876), [#4878](https://github.com/dbt-labs/dbt-core/pull/4878))
|
||||
- depend on new dbt-extractor version with fixed github links ([#4891](https://github.com/dbt-labs/dbt-core/issues/4891), [#4890](https://github.com/dbt-labs/dbt-core/pull/4890))
|
||||
- Update bumpervsion config to stop looking for missing setup.py ([#-1](https://github.com/dbt-labs/dbt-core/issues/-1), [#4896](https://github.com/dbt-labs/dbt-core/pull/4896))
|
||||
- Corrected permissions settings for docker release workflow ([#4902](https://github.com/dbt-labs/dbt-core/issues/4902), [#4903](https://github.com/dbt-labs/dbt-core/pull/4903))
|
||||
- User wasn't asked for permission to overwite a profile entry when running init inside an existing project ([#4375](https://github.com/dbt-labs/dbt-core/issues/4375), [#4447](https://github.com/dbt-labs/dbt-core/pull/4447))
|
||||
- Add project name validation to `dbt init` ([#4490](https://github.com/dbt-labs/dbt-core/issues/4490), [#4536](https://github.com/dbt-labs/dbt-core/pull/4536))
|
||||
- Allow override of string and numeric types for adapters. ([#4603](https://github.com/dbt-labs/dbt-core/issues/4603), [#4604](https://github.com/dbt-labs/dbt-core/pull/4604))
|
||||
- A change in secret environment variables won't trigger a full reparse ([#4650](https://github.com/dbt-labs/dbt-core/issues/4650), [#4665](https://github.com/dbt-labs/dbt-core/pull/4665))
|
||||
- Fix misspellings and typos in docstrings ([#4904](https://github.com/dbt-labs/dbt-core/issues/4904), [#4545](https://github.com/dbt-labs/dbt-core/pull/4545))
|
||||
### Under the Hood
|
||||
- Automate changelog generation with changie ([#4652](https://github.com/dbt-labs/dbt-core/issues/4652), [#4743](https://github.com/dbt-labs/dbt-core/pull/4743))
|
||||
- Fix broken links for changelog generation and tweak GHA to only post a comment once when changelog entry is missing. ([#4848](https://github.com/dbt-labs/dbt-core/issues/4848), [#4857](https://github.com/dbt-labs/dbt-core/pull/4857))
|
||||
- Add support for Python 3.10 ([#4562](https://github.com/dbt-labs/dbt-core/issues/4562), [#4866](https://github.com/dbt-labs/dbt-core/pull/4866))
|
||||
- Enable more dialects to snapshot sources with added columns, even those that don't support boolean datatypes ([#4488](https://github.com/dbt-labs/dbt-core/issues/4488), [#4871](https://github.com/dbt-labs/dbt-core/pull/4871))
|
||||
- Testing cleanup ([#3648](https://github.com/dbt-labs/dbt-core/issues/3648), [#4509](https://github.com/dbt-labs/dbt-core/pull/4509))
|
||||
- Clean up test deprecation warnings ([#3988](https://github.com/dbt-labs/dbt-core/issues/3988), [#4556](https://github.com/dbt-labs/dbt-core/pull/4556))
|
||||
- Use mashumaro for serialization in event logging ([#4504](https://github.com/dbt-labs/dbt-core/issues/4504), [#4505](https://github.com/dbt-labs/dbt-core/pull/4505))
|
||||
- Drop support for Python 3.7.0 + 3.7.1 ([#4584](https://github.com/dbt-labs/dbt-core/issues/4584), [#4585](https://github.com/dbt-labs/dbt-core/pull/4585))
|
||||
- Drop support for Python <3.7.2 ([#4584](https://github.com/dbt-labs/dbt-core/issues/4584), [#4643](https://github.com/dbt-labs/dbt-core/pull/4643))
|
||||
- Re-format codebase (except tests) using pre-commit hooks ([#3195](https://github.com/dbt-labs/dbt-core/issues/3195), [#4697](https://github.com/dbt-labs/dbt-core/pull/4697))
|
||||
- Add deps module README ([#4904](https://github.com/dbt-labs/dbt-core/issues/4904), [#4686](https://github.com/dbt-labs/dbt-core/pull/4686))
|
||||
- Initial conversion of tests to pytest ([#4690](https://github.com/dbt-labs/dbt-core/issues/4690), [#4691](https://github.com/dbt-labs/dbt-core/pull/4691))
|
||||
- Fix errors in Windows for tests/functions ([#4782](https://github.com/dbt-labs/dbt-core/issues/4782), [#4767](https://github.com/dbt-labs/dbt-core/pull/4767))
|
||||
### Docs
|
||||
- Resolve errors related to operations preventing DAG from generating in the docs. Also patch a spark issue to allow search to filter accurately past the missing columns. ([#4578](https://github.com/dbt-labs/dbt-core/issues/4578), [#4763](https://github.com/dbt-labs/dbt-core/pull/4763))
|
||||
### Contributors
|
||||
- [@NiallRees](https://github.com/NiallRees) ([#4447](https://github.com/dbt-labs/dbt-core/pull/4447))
|
||||
- [@alswang18](https://github.com/alswang18) ([#4644](https://github.com/dbt-labs/dbt-core/pull/4644))
|
||||
- [@amirkdv](https://github.com/amirkdv) ([#4536](https://github.com/dbt-labs/dbt-core/pull/4536))
|
||||
- [@ehmartens](https://github.com/ehmartens) ([#4701](https://github.com/dbt-labs/dbt-core/pull/4701))
|
||||
- [@joellabes](https://github.com/joellabes) ([#4744](https://github.com/dbt-labs/dbt-core/pull/4744))
|
||||
- [@kazanzhy](https://github.com/kazanzhy) ([#4545](https://github.com/dbt-labs/dbt-core/pull/4545))
|
||||
- [@mdesmet](https://github.com/mdesmet) ([#4604](https://github.com/dbt-labs/dbt-core/pull/4604))
|
||||
- [@versusfacit](https://github.com/versusfacit) ([#4869](https://github.com/dbt-labs/dbt-core/pull/4869))
|
||||
- [@willbowditch](https://github.com/willbowditch) ([#4777](https://github.com/dbt-labs/dbt-core/pull/4777))
|
||||
11
.changes/1.1.0/Breaking Changes-20220316-031311.yaml
Normal file
11
.changes/1.1.0/Breaking Changes-20220316-031311.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
kind: Breaking Changes
|
||||
body: >
|
||||
**Relevant to maintainers of adapter plugins _only_:**
|
||||
The abstractmethods `get_response` and `execute` now only return a `connection.AdapterReponse` in type hints.
|
||||
(Previously, they could return a string.) We encourage you to update your methods to return an object of
|
||||
class `AdapterResponse`, or implement a subclass specific to your adapter
|
||||
time: 2022-03-16T03:13:11.656007-07:00
|
||||
custom:
|
||||
Author: versusfacit
|
||||
Issue: "4499"
|
||||
PR: "4869"
|
||||
8
.changes/1.1.0/Docs-20220307-203105.yaml
Normal file
8
.changes/1.1.0/Docs-20220307-203105.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
kind: Docs
|
||||
body: Resolve errors related to operations preventing DAG from generating in the docs. Also
|
||||
patch a spark issue to allow search to filter accurately past the missing columns.
|
||||
time: 2022-03-07T20:31:05.557064-06:00
|
||||
custom:
|
||||
Author: emmyoop
|
||||
Issue: "4578"
|
||||
PR: "4763"
|
||||
7
.changes/1.1.0/Features-20220309-142645.yaml
Normal file
7
.changes/1.1.0/Features-20220309-142645.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Features
|
||||
body: Testing framework for dbt adapter testing
|
||||
time: 2022-03-09T14:26:45.828295-05:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "4730"
|
||||
PR: "4846"
|
||||
8
.changes/1.1.0/Features-20220309-163817.yaml
Normal file
8
.changes/1.1.0/Features-20220309-163817.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
kind: Features
|
||||
body: Change behaviour of `non_null` test so that it only `select`s all columns if
|
||||
`--store-failures` is enabled.
|
||||
time: 2022-03-09T16:38:17.160568Z
|
||||
custom:
|
||||
Author: willbowditch
|
||||
Issue: "4769"
|
||||
PR: "4777"
|
||||
7
.changes/1.1.0/Features-20220314-112341.yaml
Normal file
7
.changes/1.1.0/Features-20220314-112341.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Features
|
||||
body: Allow unique key to take a list implementation for postgres/redshift
|
||||
time: 2022-03-14T11:23:41.293726-05:00
|
||||
custom:
|
||||
Author: McKnight-42
|
||||
Issue: "4738"
|
||||
PR: "4858"
|
||||
7
.changes/1.1.0/Features-20220321-135949.yaml
Normal file
7
.changes/1.1.0/Features-20220321-135949.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Features
|
||||
body: Added Support for Semantic Versioning
|
||||
time: 2022-03-21T13:59:49.725046-05:00
|
||||
custom:
|
||||
Author: alswang18
|
||||
Issue: "4453"
|
||||
PR: "4644"
|
||||
8
.changes/1.1.0/Features-20220321-140046.yaml
Normal file
8
.changes/1.1.0/Features-20220321-140046.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
kind: Features
|
||||
body: New Dockerfile to support specific db adapters and platforms. See docker/README.md
|
||||
for details
|
||||
time: 2022-03-21T14:00:46.670045-05:00
|
||||
custom:
|
||||
Author: iknox-fa
|
||||
Issue: "4495"
|
||||
PR: "4487"
|
||||
7
.changes/1.1.0/Features-20220321-140139.yaml
Normal file
7
.changes/1.1.0/Features-20220321-140139.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Features
|
||||
body: Allow unique_key to take a list
|
||||
time: 2022-03-21T14:01:39.918897-05:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "2479"
|
||||
PR: "4618"
|
||||
7
.changes/1.1.0/Features-20220321-140306.yaml
Normal file
7
.changes/1.1.0/Features-20220321-140306.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Features
|
||||
body: "Add `--quiet` global flag and `print` Jinja function"
|
||||
time: 2022-03-21T14:03:06.565157-05:00
|
||||
custom:
|
||||
Author: ehmartens
|
||||
Issue: "3451"
|
||||
PR: "4701"
|
||||
7
.changes/1.1.0/Features-20220322-144822.yaml
Normal file
7
.changes/1.1.0/Features-20220322-144822.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Features
|
||||
body: Add space before justification periods
|
||||
time: 2022-03-22T14:48:22.64892-04:00
|
||||
custom:
|
||||
Author: joellabes
|
||||
Issue: "4737"
|
||||
PR: "4744"
|
||||
7
.changes/1.1.0/Fixes-20220307-203022.yaml
Normal file
7
.changes/1.1.0/Fixes-20220307-203022.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Fix bug causing empty node level meta, snapshot config errors
|
||||
time: 2022-03-07T20:30:22.624709-06:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "4459"
|
||||
PR: "4726"
|
||||
8
.changes/1.1.0/Fixes-20220315-105331.yaml
Normal file
8
.changes/1.1.0/Fixes-20220315-105331.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
kind: Fixes
|
||||
body: Catch all Requests Exceptions on deps install to attempt retries. Also log
|
||||
the exceptions hit.
|
||||
time: 2022-03-15T10:53:31.637963-05:00
|
||||
custom:
|
||||
Author: emmyoop
|
||||
Issue: "4849"
|
||||
PR: "4865"
|
||||
7
.changes/1.1.0/Fixes-20220316-155420.yaml
Normal file
7
.changes/1.1.0/Fixes-20220316-155420.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Use cli_vars instead of context to create package and selector renderers
|
||||
time: 2022-03-16T15:54:20.608384-04:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "4876"
|
||||
PR: "4878"
|
||||
7
.changes/1.1.0/Fixes-20220317-132418.yaml
Normal file
7
.changes/1.1.0/Fixes-20220317-132418.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: depend on new dbt-extractor version with fixed github links
|
||||
time: 2022-03-17T13:24:18.419599-04:00
|
||||
custom:
|
||||
Author: nathaniel-may
|
||||
Issue: "4891"
|
||||
PR: "4890"
|
||||
7
.changes/1.1.0/Fixes-20220317-163051.yaml
Normal file
7
.changes/1.1.0/Fixes-20220317-163051.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Update bumpervsion config to stop looking for missing setup.py
|
||||
time: 2022-03-17T16:30:51.299919-05:00
|
||||
custom:
|
||||
Author: iknox-fa
|
||||
Issue: "-1"
|
||||
PR: "4896"
|
||||
7
.changes/1.1.0/Fixes-20220318-095846.yaml
Normal file
7
.changes/1.1.0/Fixes-20220318-095846.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Corrected permissions settings for docker release workflow
|
||||
time: 2022-03-18T09:58:46.061468-05:00
|
||||
custom:
|
||||
Author: iknox-fa
|
||||
Issue: "4902"
|
||||
PR: "4903"
|
||||
7
.changes/1.1.0/Fixes-20220321-140521.yaml
Normal file
7
.changes/1.1.0/Fixes-20220321-140521.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: "User wasn't asked for permission to overwite a profile entry when running init inside an existing project"
|
||||
time: 2022-03-21T14:05:21.238521-05:00
|
||||
custom:
|
||||
Author: NiallRees
|
||||
Issue: "4375"
|
||||
PR: "4447"
|
||||
7
.changes/1.1.0/Fixes-20220321-140720.yaml
Normal file
7
.changes/1.1.0/Fixes-20220321-140720.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Add project name validation to `dbt init`
|
||||
time: 2022-03-21T14:07:20.153071-05:00
|
||||
custom:
|
||||
Author: amirkdv
|
||||
Issue: "4490"
|
||||
PR: "4536"
|
||||
7
.changes/1.1.0/Fixes-20220321-140833.yaml
Normal file
7
.changes/1.1.0/Fixes-20220321-140833.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Allow override of string and numeric types for adapters.
|
||||
time: 2022-03-21T14:08:33.384372-05:00
|
||||
custom:
|
||||
Author: mdesmet
|
||||
Issue: "4603"
|
||||
PR: "4604"
|
||||
7
.changes/1.1.0/Fixes-20220321-140921.yaml
Normal file
7
.changes/1.1.0/Fixes-20220321-140921.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: A change in secret environment variables won't trigger a full reparse
|
||||
time: 2022-03-21T14:09:21.004543-05:00
|
||||
custom:
|
||||
Author: nathaniel-may
|
||||
Issue: "4650"
|
||||
PR: "4665"
|
||||
7
.changes/1.1.0/Fixes-20220321-141007.yaml
Normal file
7
.changes/1.1.0/Fixes-20220321-141007.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Fix misspellings and typos in docstrings
|
||||
time: 2022-03-21T14:10:07.962502-05:00
|
||||
custom:
|
||||
Author: kazanzhy
|
||||
Issue: "4904"
|
||||
PR: "4545"
|
||||
7
.changes/1.1.0/Under the Hood-20220218-161319.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220218-161319.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Automate changelog generation with changie
|
||||
time: 2022-02-18T16:13:19.882436-06:00
|
||||
custom:
|
||||
Author: emmyoop
|
||||
Issue: "4652"
|
||||
PR: "4743"
|
||||
8
.changes/1.1.0/Under the Hood-20220311-101851.yaml
Normal file
8
.changes/1.1.0/Under the Hood-20220311-101851.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
kind: Under the Hood
|
||||
body: Fix broken links for changelog generation and tweak GHA to only post a comment
|
||||
once when changelog entry is missing.
|
||||
time: 2022-03-11T10:18:51.404524-06:00
|
||||
custom:
|
||||
Author: emmyoop
|
||||
Issue: "4848"
|
||||
PR: "4857"
|
||||
7
.changes/1.1.0/Under the Hood-20220315-155436.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220315-155436.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Add support for Python 3.10
|
||||
time: 2022-03-15T15:54:36.759434-05:00
|
||||
custom:
|
||||
Author: iknox-fa
|
||||
Issue: "4562"
|
||||
PR: "4866"
|
||||
8
.changes/1.1.0/Under the Hood-20220316-100305.yaml
Normal file
8
.changes/1.1.0/Under the Hood-20220316-100305.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
kind: Under the Hood
|
||||
body: Enable more dialects to snapshot sources with added columns, even those that
|
||||
don't support boolean datatypes
|
||||
time: 2022-03-16T10:03:05.96768-05:00
|
||||
custom:
|
||||
Author: McKnight-42
|
||||
Issue: "4488"
|
||||
PR: "4871"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141158.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141158.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Testing cleanup
|
||||
time: 2022-03-21T14:11:58.750419-05:00
|
||||
custom:
|
||||
Author: emmyoop
|
||||
Issue: "3648"
|
||||
PR: "4509"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141300.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141300.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Clean up test deprecation warnings
|
||||
time: 2022-03-21T14:13:00.557425-05:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "3988"
|
||||
PR: "4556"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141338.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141338.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Use mashumaro for serialization in event logging
|
||||
time: 2022-03-21T14:13:38.758158-05:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "4504"
|
||||
PR: "4505"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141451.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141451.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Drop support for Python 3.7.0 + 3.7.1
|
||||
time: 2022-03-21T14:14:51.840637-05:00
|
||||
custom:
|
||||
Author: nathaniel-may
|
||||
Issue: "4584"
|
||||
PR: "4585"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141523.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141523.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Drop support for Python <3.7.2
|
||||
time: 2022-03-21T14:15:23.893773-05:00
|
||||
custom:
|
||||
Author: jtcohen6
|
||||
Issue: "4584"
|
||||
PR: "4643"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141610.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141610.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Re-format codebase (except tests) using pre-commit hooks
|
||||
time: 2022-03-21T14:16:10.285506-05:00
|
||||
custom:
|
||||
Author: iknox-fa
|
||||
Issue: "3195"
|
||||
PR: "4697"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141707.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141707.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Add deps module README
|
||||
time: 2022-03-21T14:17:07.884314-05:00
|
||||
custom:
|
||||
Author: emmyoop
|
||||
Issue: "4904"
|
||||
PR: "4686"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-141747.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-141747.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Initial conversion of tests to pytest
|
||||
time: 2022-03-21T14:17:47.852378-05:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "4690"
|
||||
PR: "4691"
|
||||
7
.changes/1.1.0/Under the Hood-20220321-142055.yaml
Normal file
7
.changes/1.1.0/Under the Hood-20220321-142055.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Fix errors in Windows for tests/functions
|
||||
time: 2022-03-21T14:20:55.648765-05:00
|
||||
custom:
|
||||
Author: gshank
|
||||
Issue: "4782"
|
||||
PR: "4767"
|
||||
53
.changes/README.md
Normal file
53
.changes/README.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# CHANGELOG Automation
|
||||
|
||||
We use [changie](https://changie.dev/) to automate `CHANGELOG` generation. For installation and format/command specifics, see the documentation.
|
||||
|
||||
### Quick Tour
|
||||
|
||||
- All new change entries get generated under `/.changes/unreleased` as a yaml file
|
||||
- `header.tpl.md` contains the contents of the entire CHANGELOG file
|
||||
- `0.0.0.md` contains the contents of the footer for the entire CHANGELOG file. changie looks to be in the process of supporting a footer file the same as it supports a header file. Switch to that when available. For now, the 0.0.0 in the file name forces it to the bottom of the changelog no matter what version we are releasing.
|
||||
- `.changie.yaml` contains the fields in a change, the format of a single change, as well as the format of the Contributors section for each version.
|
||||
|
||||
### Workflow
|
||||
|
||||
#### Daily workflow
|
||||
Almost every code change we make associated with an issue will require a `CHANGELOG` entry. After you have created the PR in GitHub, run `changie new` and follow the command prompts to generate a yaml file with your change details. This only needs to be done once per PR.
|
||||
|
||||
The `changie new` command will ensure correct file format and file name. There is a one to one mapping of issues to changes. Multiple issues cannot be lumped into a single entry. If you make a mistake, the yaml file may be directly modified and saved as long as the format is preserved.
|
||||
|
||||
Note: If your PR has been cleared by the Core Team as not needing a changelog entry, the `Skip Changelog` label may be put on the PR to bypass the GitHub action that blacks PRs from being merged when they are missing a `CHANGELOG` entry.
|
||||
|
||||
#### Prerelease Workflow
|
||||
These commands batch up changes in `/.changes/unreleased` to be included in this prerelease and move those files to a directory named for the release version. The `--move-dir` will be created if it does not exist and is created in `/.changes`.
|
||||
|
||||
```
|
||||
changie batch <version> --move-dir '<version>' --prerelease 'rc1'
|
||||
changie merge
|
||||
```
|
||||
|
||||
Example
|
||||
```
|
||||
changie batch 1.0.5 --move-dir '1.0.5' --prerelease 'rc1'
|
||||
changie merge
|
||||
```
|
||||
|
||||
#### Final Release Workflow
|
||||
These commands batch up changes in `/.changes/unreleased` as well as `/.changes/<version>` to be included in this final release and delete all prereleases. This rolls all prereleases up into a single final release. All `yaml` files in `/unreleased` and `<version>` will be deleted at this point.
|
||||
|
||||
```
|
||||
changie batch <version> --include '<version>' --remove-prereleases
|
||||
changie merge
|
||||
```
|
||||
|
||||
Example
|
||||
```
|
||||
changie batch 1.0.5 --include '1.0.5' --remove-prereleases
|
||||
changie merge
|
||||
```
|
||||
|
||||
### A Note on Manual Edits & Gotchas
|
||||
- Changie generates markdown files in the `.changes` directory that are parsed together with the `changie merge` command. Every time `changie merge` is run, it regenerates the entire file. For this reason, any changes made directly to `CHANGELOG.md` will be overwritten on the next run of `changie merge`.
|
||||
- If changes need to be made to the `CHANGELOG.md`, make the changes to the relevant `<version>.md` file located in the `/.changes` directory. You will then run `changie merge` to regenerate the `CHANGELOG.MD`.
|
||||
- Do not run `changie batch` again on released versions. Our final release workflow deletes all of the yaml files associated with individual changes. If for some reason modifications to the `CHANGELOG.md` are required after we've generated the final release `CHANGELOG.md`, the modifications need to be done manually to the `<version>.md` file in the `/.changes` directory.
|
||||
- changie can modify, create and delete files depending on the command you run. This is expected. Be sure to commit everything that has been modified and deleted.
|
||||
6
.changes/header.tpl.md
Executable file
6
.changes/header.tpl.md
Executable file
@@ -0,0 +1,6 @@
|
||||
# dbt Core Changelog
|
||||
|
||||
- This file provides a full account of all changes to `dbt-core` and `dbt-postgres`
|
||||
- Changes are listed under the (pre)release in which they first appear. Subsequent releases include changes from previous releases.
|
||||
- "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version.
|
||||
- Do not edit this file directly. This file is auto-generated using [changie](https://github.com/miniscruff/changie). For details on how to document a change, see [the contributing guide](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md#adding-changelog-entry)
|
||||
0
test/integration/004_simple_archive_test/models/.gitkeep → .changes/unreleased/.gitkeep
Normal file → Executable file
0
test/integration/004_simple_archive_test/models/.gitkeep → .changes/unreleased/.gitkeep
Normal file → Executable file
7
.changes/unreleased/Fixes-20220314-200236.yaml
Normal file
7
.changes/unreleased/Fixes-20220314-200236.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Fixes
|
||||
body: Inconsistent timestamps between inserted/updated and deleted rows in snapshots
|
||||
time: 2022-03-14T20:02:36.119598832+01:00
|
||||
custom:
|
||||
Author: kadero
|
||||
Issue: "4347"
|
||||
PR: "4513"
|
||||
7
.changes/unreleased/Under the Hood-20220321-142854.yaml
Normal file
7
.changes/unreleased/Under the Hood-20220321-142854.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
kind: Under the Hood
|
||||
body: Add Graph Compilation and Adapter Cache tracking
|
||||
time: 2022-03-21T14:28:54.160087-04:00
|
||||
custom:
|
||||
Author: ChenyuLInx
|
||||
Issue: "4625"
|
||||
PR: "4912"
|
||||
50
.changie.yaml
Executable file
50
.changie.yaml
Executable file
@@ -0,0 +1,50 @@
|
||||
changesDir: .changes
|
||||
unreleasedDir: unreleased
|
||||
headerPath: header.tpl.md
|
||||
versionHeaderPath: ""
|
||||
changelogPath: CHANGELOG.md
|
||||
versionExt: md
|
||||
versionFormat: '## dbt-core {{.Version}} - {{.Time.Format "January 02, 2006"}}'
|
||||
kindFormat: '### {{.Kind}}'
|
||||
changeFormat: '- {{.Body}} ([#{{.Custom.Issue}}](https://github.com/dbt-labs/dbt-core/issues/{{.Custom.Issue}}), [#{{.Custom.PR}}](https://github.com/dbt-labs/dbt-core/pull/{{.Custom.PR}}))'
|
||||
kinds:
|
||||
- label: Breaking Changes
|
||||
- label: Features
|
||||
- label: Fixes
|
||||
- label: Docs
|
||||
- label: Under the Hood
|
||||
- label: Dependencies
|
||||
custom:
|
||||
- key: Author
|
||||
label: GitHub Name
|
||||
type: string
|
||||
minLength: 3
|
||||
- key: Issue
|
||||
label: GitHub Issue Number
|
||||
type: int
|
||||
minLength: 4
|
||||
- key: PR
|
||||
label: GitHub Pull Request Number
|
||||
type: int
|
||||
minLength: 4
|
||||
footerFormat: |
|
||||
### Contributors
|
||||
{{- $contributorDict := dict }}
|
||||
{{- $core_team := list "emmyoop" "nathaniel-may" "gshank" "leahwicz" "ChenyuLInx" "stu-k" "iknox-fa" "VersusFacit" "McKnight-42" "jtcohen6" }}
|
||||
{{- range $change := .Changes }}
|
||||
{{- $author := $change.Custom.Author }}
|
||||
{{- if not (has $author $core_team)}}
|
||||
{{- $pr := $change.Custom.PR }}
|
||||
{{- if hasKey $contributorDict $author }}
|
||||
{{- $prList := get $contributorDict $author }}
|
||||
{{- $prList = append $prList $pr }}
|
||||
{{- $contributorDict := set $contributorDict $author $prList }}
|
||||
{{- else }}
|
||||
{{- $prList := list $change.Custom.PR }}
|
||||
{{- $contributorDict := set $contributorDict $author $prList }}
|
||||
{{- end }}
|
||||
{{- end}}
|
||||
{{- end }}
|
||||
{{- range $k,$v := $contributorDict }}
|
||||
- [@{{$k}}](https://github.com/{{$k}}) ({{ range $index, $element := $v }}{{if $index}}, {{end}}[#{{$element}}](https://github.com/dbt-labs/dbt-core/pull/{{$element}}){{end}})
|
||||
{{- end }}
|
||||
@@ -1,3 +0,0 @@
|
||||
[report]
|
||||
include =
|
||||
dbt/*
|
||||
3
.dockerignore
Normal file
3
.dockerignore
Normal file
@@ -0,0 +1,3 @@
|
||||
*
|
||||
!docker/requirements/*.txt
|
||||
!dist
|
||||
12
.flake8
Normal file
12
.flake8
Normal file
@@ -0,0 +1,12 @@
|
||||
[flake8]
|
||||
select =
|
||||
E
|
||||
W
|
||||
F
|
||||
ignore =
|
||||
W503 # makes Flake8 work like black
|
||||
W504
|
||||
E203 # makes Flake8 work like black
|
||||
E741
|
||||
E501 # long line checking is done in black
|
||||
exclude = test
|
||||
43
.github/CODEOWNERS
vendored
Normal file
43
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
# This file contains the code owners for the dbt-core repo.
|
||||
# PRs will be automatically assigned for review to the associated
|
||||
# team(s) or person(s) that touches any files that are mapped to them.
|
||||
#
|
||||
# A statement takes precedence over the statements above it so more general
|
||||
# assignments are found at the top with specific assignments being lower in
|
||||
# the ordering (i.e. catch all assignment should be the first item)
|
||||
#
|
||||
# Consult GitHub documentation for formatting guidelines:
|
||||
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#example-of-a-codeowners-file
|
||||
|
||||
# As a default for areas with no assignment,
|
||||
# the core team as a whole will be assigned
|
||||
* @dbt-labs/core
|
||||
|
||||
# Changes to GitHub configurations including Actions
|
||||
/.github/ @leahwicz
|
||||
|
||||
# Language core modules
|
||||
/core/dbt/config/ @dbt-labs/core-language
|
||||
/core/dbt/context/ @dbt-labs/core-language
|
||||
/core/dbt/contracts/ @dbt-labs/core-language
|
||||
/core/dbt/deps/ @dbt-labs/core-language
|
||||
/core/dbt/parser/ @dbt-labs/core-language
|
||||
|
||||
# Execution core modules
|
||||
/core/dbt/events/ @dbt-labs/core-execution @dbt-labs/core-language # eventually remove language but they have knowledge here now
|
||||
/core/dbt/graph/ @dbt-labs/core-execution
|
||||
/core/dbt/task/ @dbt-labs/core-execution
|
||||
|
||||
# Adapter interface, scaffold, Postgres plugin
|
||||
/core/dbt/adapters @dbt-labs/core-adapters
|
||||
/core/scripts/create_adapter_plugin.py @dbt-labs/core-adapters
|
||||
/plugins/ @dbt-labs/core-adapters
|
||||
|
||||
# Global project: default macros, including generic tests + materializations
|
||||
/core/dbt/include/global_project @dbt-labs/core-execution @dbt-labs/core-adapters
|
||||
|
||||
# Perf regression testing framework
|
||||
# This excludes the test project files itself since those aren't specific
|
||||
# framework changes (excluded by not setting an owner next to it- no owner)
|
||||
/performance @nathaniel-may
|
||||
/performance/projects
|
||||
85
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
85
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
name: 🐞 Bug
|
||||
description: Report a bug or an issue you've found with dbt
|
||||
title: "[Bug] <title>"
|
||||
labels: ["bug", "triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report!
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
description: Please search to see if an issue already exists for the bug you encountered.
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Current Behavior
|
||||
description: A concise description of what you're experiencing.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: A concise description of what you expected to happen.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps To Reproduce
|
||||
description: Steps to reproduce the behavior.
|
||||
placeholder: |
|
||||
1. In this environment...
|
||||
2. With this config...
|
||||
3. Run '...'
|
||||
4. See error...
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
description: |
|
||||
If applicable, log output to help explain your problem.
|
||||
render: shell
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Environment
|
||||
description: |
|
||||
examples:
|
||||
- **OS**: Ubuntu 20.04
|
||||
- **Python**: 3.7.2 (`python --version`)
|
||||
- **dbt**: 0.21.0 (`dbt --version`)
|
||||
value: |
|
||||
- OS:
|
||||
- Python:
|
||||
- dbt:
|
||||
render: markdown
|
||||
validations:
|
||||
required: false
|
||||
- type: dropdown
|
||||
id: database
|
||||
attributes:
|
||||
label: What database are you using dbt with?
|
||||
multiple: true
|
||||
options:
|
||||
- postgres
|
||||
- redshift
|
||||
- snowflake
|
||||
- bigquery
|
||||
- other (mention it in "Additional Context")
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: |
|
||||
Links? References? Anything that will give us more context about the issue you are encountering!
|
||||
|
||||
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
|
||||
validations:
|
||||
required: false
|
||||
16
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
16
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
contact_links:
|
||||
- name: Create an issue for dbt-redshift
|
||||
url: https://github.com/dbt-labs/dbt-redshift/issues/new/choose
|
||||
about: Report a bug or request a feature for dbt-redshift
|
||||
- name: Create an issue for dbt-bigquery
|
||||
url: https://github.com/dbt-labs/dbt-bigquery/issues/new/choose
|
||||
about: Report a bug or request a feature for dbt-bigquery
|
||||
- name: Create an issue for dbt-snowflake
|
||||
url: https://github.com/dbt-labs/dbt-snowflake/issues/new/choose
|
||||
about: Report a bug or request a feature for dbt-snowflake
|
||||
- name: Ask a question or get support
|
||||
url: https://docs.getdbt.com/docs/guides/getting-help
|
||||
about: Ask a question or request support
|
||||
- name: Questions on Stack Overflow
|
||||
url: https://stackoverflow.com/questions/tagged/dbt
|
||||
about: Look at questions/answers at Stack Overflow
|
||||
49
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
49
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
name: ✨ Feature
|
||||
description: Suggest an idea for dbt
|
||||
title: "[Feature] <title>"
|
||||
labels: ["enhancement", "triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this feature requests!
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing feature request for this?
|
||||
description: Please search to see if an issue already exists for the feature you would like.
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the Feature
|
||||
description: A clear and concise description of what you want to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe alternatives you've considered
|
||||
description: |
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Who will this benefit?
|
||||
description: |
|
||||
What kind of use case will this feature be useful for? Please be specific and provide examples, this will help us prioritize properly.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
attributes:
|
||||
label: Are you interested in contributing this feature?
|
||||
description: Let us know if you want to write some code, and how we can help.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Anything else?
|
||||
description: |
|
||||
Links? References? Anything that will give us more context about the feature you are suggesting!
|
||||
validations:
|
||||
required: false
|
||||
14
.github/actions/latest-wrangler/Dockerfile
vendored
Normal file
14
.github/actions/latest-wrangler/Dockerfile
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
FROM python:3-slim AS builder
|
||||
ADD . /app
|
||||
WORKDIR /app
|
||||
|
||||
# We are installing a dependency here directly into our app source dir
|
||||
RUN pip install --target=/app requests packaging
|
||||
|
||||
# A distroless container image with Python and some basics like SSL certificates
|
||||
# https://github.com/GoogleContainerTools/distroless
|
||||
FROM gcr.io/distroless/python3-debian10
|
||||
COPY --from=builder /app /app
|
||||
WORKDIR /app
|
||||
ENV PYTHONPATH /app
|
||||
CMD ["/app/main.py"]
|
||||
50
.github/actions/latest-wrangler/README.md
vendored
Normal file
50
.github/actions/latest-wrangler/README.md
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
# Github package 'latest' tag wrangler for containers
|
||||
## Usage
|
||||
|
||||
Plug in the necessary inputs to determine if the container being built should be tagged 'latest; at the package level, for example `dbt-redshift:latest`.
|
||||
|
||||
## Inputs
|
||||
| Input | Description |
|
||||
| - | - |
|
||||
| `package` | Name of the GH package to check against |
|
||||
| `new_version` | Semver of new container |
|
||||
| `gh_token` | GH token with package read scope|
|
||||
| `halt_on_missing` | Return non-zero exit code if requested package does not exist. (defaults to false)|
|
||||
|
||||
|
||||
## Outputs
|
||||
| Output | Description |
|
||||
| - | - |
|
||||
| `latest` | Wether or not the new container should be tagged 'latest'|
|
||||
| `minor_latest` | Wether or not the new container should be tagged major.minor.latest |
|
||||
|
||||
## Example workflow
|
||||
```yaml
|
||||
name: Ship it!
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
package:
|
||||
description: The package to publish
|
||||
required: true
|
||||
version_number:
|
||||
description: The version number
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Wrangle latest tag
|
||||
id: is_latest
|
||||
uses: ./.github/actions/latest-wrangler
|
||||
with:
|
||||
package: ${{ github.event.inputs.package }}
|
||||
new_version: ${{ github.event.inputs.new_version }}
|
||||
gh_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Print the results
|
||||
run: |
|
||||
echo "Is it latest? Survey says: ${{ steps.is_latest.outputs.latest }} !"
|
||||
echo "Is it minor.latest? Survey says: ${{ steps.is_latest.outputs.minor_latest }} !"
|
||||
```
|
||||
20
.github/actions/latest-wrangler/action.yml
vendored
Normal file
20
.github/actions/latest-wrangler/action.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
name: "Github package 'latest' tag wrangler for containers"
|
||||
description: "Determines wether or not a given dbt container should be given a bare 'latest' tag (I.E. dbt-core:latest)"
|
||||
inputs:
|
||||
package_name:
|
||||
description: "Package to check (I.E. dbt-core, dbt-redshift, etc)"
|
||||
required: true
|
||||
new_version:
|
||||
description: "Semver of the container being built (I.E. 1.0.4)"
|
||||
required: true
|
||||
gh_token:
|
||||
description: "Auth token for github (must have view packages scope)"
|
||||
required: true
|
||||
outputs:
|
||||
latest:
|
||||
description: "Wether or not built container should be tagged latest (bool)"
|
||||
minor_latest:
|
||||
description: "Wether or not built container should be tagged minor.latest (bool)"
|
||||
runs:
|
||||
using: "docker"
|
||||
image: "Dockerfile"
|
||||
26
.github/actions/latest-wrangler/examples/example_workflow.yml
vendored
Normal file
26
.github/actions/latest-wrangler/examples/example_workflow.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: Ship it!
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
package:
|
||||
description: The package to publish
|
||||
required: true
|
||||
version_number:
|
||||
description: The version number
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Wrangle latest tag
|
||||
id: is_latest
|
||||
uses: ./.github/actions/latest-wrangler
|
||||
with:
|
||||
package: ${{ github.event.inputs.package }}
|
||||
new_version: ${{ github.event.inputs.new_version }}
|
||||
gh_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Print the results
|
||||
run: |
|
||||
echo "Is it latest? Survey says: ${{ steps.is_latest.outputs.latest }} !"
|
||||
6
.github/actions/latest-wrangler/examples/example_workflow_dispatch.json
vendored
Normal file
6
.github/actions/latest-wrangler/examples/example_workflow_dispatch.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"inputs": {
|
||||
"version_number": "1.0.1",
|
||||
"package": "dbt-redshift"
|
||||
}
|
||||
}
|
||||
95
.github/actions/latest-wrangler/main.py
vendored
Normal file
95
.github/actions/latest-wrangler/main.py
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
import os
|
||||
import sys
|
||||
import requests
|
||||
from distutils.util import strtobool
|
||||
from typing import Union
|
||||
from packaging.version import parse, Version
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
# get inputs
|
||||
package = os.environ["INPUT_PACKAGE"]
|
||||
new_version = parse(os.environ["INPUT_NEW_VERSION"])
|
||||
gh_token = os.environ["INPUT_GH_TOKEN"]
|
||||
halt_on_missing = strtobool(os.environ.get("INPUT_HALT_ON_MISSING", "False"))
|
||||
|
||||
# get package metadata from github
|
||||
package_request = requests.get(
|
||||
f"https://api.github.com/orgs/dbt-labs/packages/container/{package}/versions",
|
||||
auth=("", gh_token),
|
||||
)
|
||||
package_meta = package_request.json()
|
||||
|
||||
# Log info if we don't get a 200
|
||||
if package_request.status_code != 200:
|
||||
print(f"Call to GH API failed: {package_request.status_code} {package_meta['message']}")
|
||||
|
||||
# Make an early exit if there is no matching package in github
|
||||
if package_request.status_code == 404:
|
||||
if halt_on_missing:
|
||||
sys.exit(1)
|
||||
else:
|
||||
# everything is the latest if the package doesn't exist
|
||||
print(f"::set-output name=latest::{True}")
|
||||
print(f"::set-output name=minor_latest::{True}")
|
||||
sys.exit(0)
|
||||
|
||||
# TODO: verify package meta is "correct"
|
||||
# https://github.com/dbt-labs/dbt-core/issues/4640
|
||||
|
||||
# map versions and tags
|
||||
version_tag_map = {
|
||||
version["id"]: version["metadata"]["container"]["tags"] for version in package_meta
|
||||
}
|
||||
|
||||
# is pre-release
|
||||
pre_rel = True if any(x in str(new_version) for x in ["a", "b", "rc"]) else False
|
||||
|
||||
# semver of current latest
|
||||
for version, tags in version_tag_map.items():
|
||||
if "latest" in tags:
|
||||
# N.B. This seems counterintuitive, but we expect any version tagged
|
||||
# 'latest' to have exactly three associated tags:
|
||||
# latest, major.minor.latest, and major.minor.patch.
|
||||
# Subtracting everything that contains the string 'latest' gets us
|
||||
# the major.minor.patch which is what's needed for comparison.
|
||||
current_latest = parse([tag for tag in tags if "latest" not in tag][0])
|
||||
else:
|
||||
current_latest = False
|
||||
|
||||
# semver of current_minor_latest
|
||||
for version, tags in version_tag_map.items():
|
||||
if f"{new_version.major}.{new_version.minor}.latest" in tags:
|
||||
# Similar to above, only now we expect exactly two tags:
|
||||
# major.minor.patch and major.minor.latest
|
||||
current_minor_latest = parse([tag for tag in tags if "latest" not in tag][0])
|
||||
else:
|
||||
current_minor_latest = False
|
||||
|
||||
def is_latest(
|
||||
pre_rel: bool, new_version: Version, remote_latest: Union[bool, Version]
|
||||
) -> bool:
|
||||
"""Determine if a given contaier should be tagged 'latest' based on:
|
||||
- it's pre-release status
|
||||
- it's version
|
||||
- the version of a previously identified container tagged 'latest'
|
||||
|
||||
:param pre_rel: Wether or not the version of the new container is a pre-release
|
||||
:param new_version: The version of the new container
|
||||
:param remote_latest: The version of the previously identified container that's
|
||||
already tagged latest or False
|
||||
"""
|
||||
# is a pre-release = not latest
|
||||
if pre_rel:
|
||||
return False
|
||||
# + no latest tag found = is latest
|
||||
if not remote_latest:
|
||||
return True
|
||||
# + if remote version is lower than current = is latest, else not latest
|
||||
return True if remote_latest <= new_version else False
|
||||
|
||||
latest = is_latest(pre_rel, new_version, current_latest)
|
||||
minor_latest = is_latest(pre_rel, new_version, current_minor_latest)
|
||||
|
||||
print(f"::set-output name=latest::{latest}")
|
||||
print(f"::set-output name=minor_latest::{minor_latest}")
|
||||
10
.github/actions/setup-postgres-linux/action.yml
vendored
Normal file
10
.github/actions/setup-postgres-linux/action.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
name: "Set up postgres (linux)"
|
||||
description: "Set up postgres service on linux vm for dbt integration tests"
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- shell: bash
|
||||
run: |
|
||||
sudo systemctl start postgresql.service
|
||||
pg_isready
|
||||
sudo -u postgres bash ${{ github.action_path }}/setup_db.sh
|
||||
1
.github/actions/setup-postgres-linux/setup_db.sh
vendored
Symbolic link
1
.github/actions/setup-postgres-linux/setup_db.sh
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../test/setup_db.sh
|
||||
24
.github/actions/setup-postgres-macos/action.yml
vendored
Normal file
24
.github/actions/setup-postgres-macos/action.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
name: "Set up postgres (macos)"
|
||||
description: "Set up postgres service on macos vm for dbt integration tests"
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- shell: bash
|
||||
run: |
|
||||
brew services start postgresql
|
||||
echo "Check PostgreSQL service is running"
|
||||
i=10
|
||||
COMMAND='pg_isready'
|
||||
while [ $i -gt -1 ]; do
|
||||
if [ $i == 0 ]; then
|
||||
echo "PostgreSQL service not ready, all attempts exhausted"
|
||||
exit 1
|
||||
fi
|
||||
echo "Check PostgreSQL service status"
|
||||
eval $COMMAND && break
|
||||
echo "PostgreSQL service not ready, wait 10 more sec, attempts left: $i"
|
||||
sleep 10
|
||||
((i--))
|
||||
done
|
||||
createuser -s postgres
|
||||
bash ${{ github.action_path }}/setup_db.sh
|
||||
1
.github/actions/setup-postgres-macos/setup_db.sh
vendored
Symbolic link
1
.github/actions/setup-postgres-macos/setup_db.sh
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../test/setup_db.sh
|
||||
12
.github/actions/setup-postgres-windows/action.yml
vendored
Normal file
12
.github/actions/setup-postgres-windows/action.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
name: "Set up postgres (windows)"
|
||||
description: "Set up postgres service on windows vm for dbt integration tests"
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- shell: pwsh
|
||||
run: |
|
||||
$pgService = Get-Service -Name postgresql*
|
||||
Set-Service -InputObject $pgService -Status running -StartupType automatic
|
||||
Start-Process -FilePath "$env:PGBIN\pg_isready" -Wait -PassThru
|
||||
$env:Path += ";$env:PGBIN"
|
||||
bash ${{ github.action_path }}/setup_db.sh
|
||||
1
.github/actions/setup-postgres-windows/setup_db.sh
vendored
Symbolic link
1
.github/actions/setup-postgres-windows/setup_db.sh
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../test/setup_db.sh
|
||||
30
.github/dependabot.yml
vendored
Normal file
30
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
version: 2
|
||||
updates:
|
||||
# python dependencies
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
rebase-strategy: "disabled"
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/core"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
rebase-strategy: "disabled"
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/plugins/postgres"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
# docker dependencies
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
rebase-strategy: "disabled"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/docker"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
rebase-strategy: "disabled"
|
||||
21
.github/pull_request_template.md
vendored
Normal file
21
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
resolves #
|
||||
|
||||
<!---
|
||||
Include the number of the issue addressed by this PR above if applicable.
|
||||
PRs for code changes without an associated issue *will not be merged*.
|
||||
See CONTRIBUTING.md for more information.
|
||||
-->
|
||||
|
||||
### Description
|
||||
|
||||
<!---
|
||||
Describe the Pull Request here. Add any references and info to help reviewers
|
||||
understand your changes. Include any tradeoffs you considered.
|
||||
-->
|
||||
|
||||
### Checklist
|
||||
|
||||
- [ ] I have signed the [CLA](https://docs.getdbt.com/docs/contributor-license-agreements)
|
||||
- [ ] I have run this code in development and it appears to resolve the stated issue
|
||||
- [ ] This PR includes tests, or tests are not required/relevant for this PR
|
||||
- [ ] I have added information about my change to be included in the [CHANGELOG](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md#Adding-CHANGELOG-Entry).
|
||||
34
.github/workflows/backport.yml
vendored
Normal file
34
.github/workflows/backport.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
# **what?**
|
||||
# When a PR is merged, if it has the backport label, it will create
|
||||
# a new PR to backport those changes to the given branch. If it can't
|
||||
# cleanly do a backport, it will comment on the merged PR of the failure.
|
||||
#
|
||||
# Label naming convention: "backport <branch name to backport to>"
|
||||
# Example: backport 1.0.latest
|
||||
#
|
||||
# You MUST "Squash and merge" the original PR or this won't work.
|
||||
|
||||
# **why?**
|
||||
# Changes sometimes need to be backported to release branches.
|
||||
# This automates the backporting process
|
||||
|
||||
# **when?**
|
||||
# Once a PR is "Squash and merge"'d and it has been correctly labeled
|
||||
# according to the naming convention.
|
||||
|
||||
name: Backport
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- closed
|
||||
- labeled
|
||||
|
||||
jobs:
|
||||
backport:
|
||||
runs-on: ubuntu-18.04
|
||||
name: Backport
|
||||
steps:
|
||||
- name: Backport
|
||||
uses: dbt-labs/backport@v1.1.1
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
78
.github/workflows/changelog-check.yml
vendored
Normal file
78
.github/workflows/changelog-check.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
# **what?**
|
||||
# Checks that a file has been committed under the /.changes directory
|
||||
# as a new CHANGELOG entry. Cannot check for a specific filename as
|
||||
# it is dynamically generated by change type and timestamp.
|
||||
# This workflow should not require any secrets since it runs for PRs
|
||||
# from forked repos.
|
||||
# By default, secrets are not passed to workflows running from
|
||||
# a forked repo.
|
||||
|
||||
# **why?**
|
||||
# Ensure code change gets reflected in the CHANGELOG.
|
||||
|
||||
# **when?**
|
||||
# This will run for all PRs going into main and *.latest. It will
|
||||
# run when they are opened, reopened, when any label is added or removed
|
||||
# and when new code is pushed to the branch. The action will then get
|
||||
# skipped if the 'Skip Changelog' label is present is any of the labels.
|
||||
|
||||
name: Check Changelog Entry
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, reopened, labeled, unlabeled, synchronize]
|
||||
workflow_dispatch:
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
env:
|
||||
changelog_comment: 'Thank you for your pull request! We could not find a changelog entry for this change. For details on how to document a change, see [the contributing guide](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md#adding-changelog-entry).'
|
||||
|
||||
jobs:
|
||||
changelog:
|
||||
name: changelog
|
||||
if: "!contains(github.event.pull_request.labels.*.name, 'Skip Changelog')"
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check if changelog file was added
|
||||
# https://github.com/marketplace/actions/paths-changes-filter
|
||||
# For each filter, it sets output variable named by the filter to the text:
|
||||
# 'true' - if any of changed files matches any of filter rules
|
||||
# 'false' - if none of changed files matches any of filter rules
|
||||
# also, returns:
|
||||
# `changes` - JSON array with names of all filters matching any of the changed files
|
||||
uses: dorny/paths-filter@v2
|
||||
id: filter
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
filters: |
|
||||
changelog:
|
||||
- added: '.changes/unreleased/**.yaml'
|
||||
- name: Check if comment already exists
|
||||
uses: peter-evans/find-comment@v1
|
||||
id: changelog_comment
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
comment-author: 'github-actions[bot]'
|
||||
body-includes: ${{ env.changelog_comment }}
|
||||
- name: Create PR comment if changelog entry is missing, required, and does nto exist
|
||||
if: |
|
||||
steps.filter.outputs.changelog == 'false' &&
|
||||
steps.changelog_comment.outputs.comment-body == ''
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
with:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
body: ${{ env.changelog_comment }}
|
||||
- name: Fail job if changelog entry is missing and required
|
||||
if: steps.filter.outputs.changelog == 'false'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: core.setFailed('Changelog entry required to merge.')
|
||||
26
.github/workflows/jira-creation.yml
vendored
Normal file
26
.github/workflows/jira-creation.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# **what?**
|
||||
# Mirrors issues into Jira. Includes the information: title,
|
||||
# GitHub Issue ID and URL
|
||||
|
||||
# **why?**
|
||||
# Jira is our tool for tracking and we need to see these issues in there
|
||||
|
||||
# **when?**
|
||||
# On issue creation or when an issue is labeled `Jira`
|
||||
|
||||
name: Jira Issue Creation
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened, labeled]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
call-label-action:
|
||||
uses: dbt-labs/jira-actions/.github/workflows/jira-creation.yml@main
|
||||
secrets:
|
||||
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
|
||||
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
|
||||
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
|
||||
26
.github/workflows/jira-label.yml
vendored
Normal file
26
.github/workflows/jira-label.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# **what?**
|
||||
# Calls mirroring Jira label Action. Includes adding a new label
|
||||
# to an existing issue or removing a label as well
|
||||
|
||||
# **why?**
|
||||
# Jira is our tool for tracking and we need to see these labels in there
|
||||
|
||||
# **when?**
|
||||
# On labels being added or removed from issues
|
||||
|
||||
name: Jira Label Mirroring
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [labeled, unlabeled]
|
||||
|
||||
permissions:
|
||||
issues: read
|
||||
|
||||
jobs:
|
||||
call-label-action:
|
||||
uses: dbt-labs/jira-actions/.github/workflows/jira-label.yml@main
|
||||
secrets:
|
||||
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
|
||||
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
|
||||
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
|
||||
24
.github/workflows/jira-transition.yml
vendored
Normal file
24
.github/workflows/jira-transition.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# **what?**
|
||||
# Transition a Jira issue to a new state
|
||||
# Only supports these GitHub Issue transitions:
|
||||
# closed, deleted, reopened
|
||||
|
||||
# **why?**
|
||||
# Jira needs to be kept up-to-date
|
||||
|
||||
# **when?**
|
||||
# On issue closing, deletion, reopened
|
||||
|
||||
name: Jira Issue Transition
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [closed, deleted, reopened]
|
||||
|
||||
jobs:
|
||||
call-label-action:
|
||||
uses: dbt-labs/jira-actions/.github/workflows/jira-transition.yml@main
|
||||
secrets:
|
||||
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
|
||||
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
|
||||
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
|
||||
225
.github/workflows/main.yml
vendored
Normal file
225
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,225 @@
|
||||
# **what?**
|
||||
# Runs code quality checks, unit tests, integration tests and
|
||||
# verifies python build on all code commited to the repository. This workflow
|
||||
# should not require any secrets since it runs for PRs from forked repos. By
|
||||
# default, secrets are not passed to workflows running from a forked repos.
|
||||
|
||||
# **why?**
|
||||
# Ensure code for dbt meets a certain quality standard.
|
||||
|
||||
# **when?**
|
||||
# This will run for all PRs, when code is pushed to a release
|
||||
# branch, and when manually triggered.
|
||||
|
||||
name: Tests and Code Checks
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
- "*.latest"
|
||||
- "releases/*"
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: read-all
|
||||
|
||||
# will cancel previous workflows triggered by the same event and for the same ref for PRs or same SHA otherwise
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.ref || github.sha }}
|
||||
cancel-in-progress: true
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
code-quality:
|
||||
name: code-quality
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip --version
|
||||
pip install pre-commit
|
||||
pre-commit --version
|
||||
pip install mypy==0.782
|
||||
mypy --version
|
||||
pip install -r editable-requirements.txt
|
||||
dbt --version
|
||||
|
||||
- name: Run pre-commit hooks
|
||||
run: pre-commit run --all-files --show-diff-on-failure
|
||||
|
||||
unit:
|
||||
name: unit test / python ${{ matrix.python-version }}
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: [3.7, 3.8, 3.9]
|
||||
|
||||
env:
|
||||
TOXENV: "unit"
|
||||
PYTEST_ADDOPTS: "-v --color=yes --csv unit_results.csv"
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip --version
|
||||
pip install tox
|
||||
tox --version
|
||||
|
||||
- name: Run tox
|
||||
run: tox
|
||||
|
||||
- name: Get current date
|
||||
if: always()
|
||||
id: date
|
||||
run: echo "::set-output name=date::$(date +'%Y-%m-%dT%H_%M_%S')" #no colons allowed for artifacts
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: unit_results_${{ matrix.python-version }}-${{ steps.date.outputs.date }}.csv
|
||||
path: unit_results.csv
|
||||
|
||||
integration:
|
||||
name: integration test / python ${{ matrix.python-version }} / ${{ matrix.os }}
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: [3.7, 3.8, 3.9]
|
||||
os: [ubuntu-latest]
|
||||
include:
|
||||
- python-version: 3.8
|
||||
os: windows-latest
|
||||
- python-version: 3.8
|
||||
os: macos-latest
|
||||
|
||||
env:
|
||||
TOXENV: integration
|
||||
PYTEST_ADDOPTS: "-v --color=yes -n4 --csv integration_results.csv"
|
||||
DBT_INVOCATION_ENV: github-actions
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Set up postgres (linux)
|
||||
if: runner.os == 'Linux'
|
||||
uses: ./.github/actions/setup-postgres-linux
|
||||
|
||||
- name: Set up postgres (macos)
|
||||
if: runner.os == 'macOS'
|
||||
uses: ./.github/actions/setup-postgres-macos
|
||||
|
||||
- name: Set up postgres (windows)
|
||||
if: runner.os == 'Windows'
|
||||
uses: ./.github/actions/setup-postgres-windows
|
||||
|
||||
- name: Install python tools
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip --version
|
||||
pip install tox
|
||||
tox --version
|
||||
|
||||
- name: Run tests
|
||||
run: tox
|
||||
|
||||
- name: Get current date
|
||||
if: always()
|
||||
id: date
|
||||
run: echo "::set-output name=date::$(date +'%Y_%m_%dT%H_%M_%S')" #no colons allowed for artifacts
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: logs_${{ matrix.python-version }}_${{ matrix.os }}_${{ steps.date.outputs.date }}
|
||||
path: ./logs
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: integration_results_${{ matrix.python-version }}_${{ matrix.os }}_${{ steps.date.outputs.date }}.csv
|
||||
path: integration_results.csv
|
||||
|
||||
build:
|
||||
name: build packages
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip install --upgrade setuptools wheel twine check-wheel-contents
|
||||
pip --version
|
||||
|
||||
- name: Build distributions
|
||||
run: ./scripts/build-dist.sh
|
||||
|
||||
- name: Show distributions
|
||||
run: ls -lh dist/
|
||||
|
||||
- name: Check distribution descriptions
|
||||
run: |
|
||||
twine check dist/*
|
||||
|
||||
- name: Check wheel contents
|
||||
run: |
|
||||
check-wheel-contents dist/*.whl --ignore W007,W008
|
||||
|
||||
- name: Install wheel distributions
|
||||
run: |
|
||||
find ./dist/*.whl -maxdepth 1 -type f | xargs pip install --force-reinstall --find-links=dist/
|
||||
|
||||
- name: Check wheel distributions
|
||||
run: |
|
||||
dbt --version
|
||||
|
||||
- name: Install source distributions
|
||||
# ignore dbt-1.0.0, which intentionally raises an error when installed from source
|
||||
run: |
|
||||
find ./dist/dbt-[a-z]*.gz -maxdepth 1 -type f | xargs pip install --force-reinstall --find-links=dist/
|
||||
|
||||
- name: Check source distributions
|
||||
run: |
|
||||
dbt --version
|
||||
176
.github/workflows/performance.yml
vendored
Normal file
176
.github/workflows/performance.yml
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
name: Performance Regression Tests
|
||||
# Schedule triggers
|
||||
on:
|
||||
# runs twice a day at 10:05am and 10:05pm
|
||||
schedule:
|
||||
- cron: "5 10,22 * * *"
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
# checks fmt of runner code
|
||||
# purposefully not a dependency of any other job
|
||||
# will block merging, but not prevent developing
|
||||
fmt:
|
||||
name: Cargo fmt
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
- run: rustup component add rustfmt
|
||||
- uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: fmt
|
||||
args: --manifest-path performance/runner/Cargo.toml --all -- --check
|
||||
|
||||
# runs any tests associated with the runner
|
||||
# these tests make sure the runner logic is correct
|
||||
test-runner:
|
||||
name: Test Runner
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
# turns errors into warnings
|
||||
RUSTFLAGS: "-D warnings"
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
- uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: test
|
||||
args: --manifest-path performance/runner/Cargo.toml
|
||||
|
||||
# build an optimized binary to be used as the runner in later steps
|
||||
build-runner:
|
||||
needs: [test-runner]
|
||||
name: Build Runner
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
RUSTFLAGS: "-D warnings"
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
- uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: build
|
||||
args: --release --manifest-path performance/runner/Cargo.toml
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: runner
|
||||
path: performance/runner/target/release/runner
|
||||
|
||||
# run the performance measurements on the current or default branch
|
||||
measure-dev:
|
||||
needs: [build-runner]
|
||||
name: Measure Dev Branch
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: checkout dev
|
||||
uses: actions/checkout@v2
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v2.2.2
|
||||
with:
|
||||
python-version: "3.8"
|
||||
- name: install dbt
|
||||
run: pip install -r dev-requirements.txt -r editable-requirements.txt
|
||||
- name: install hyperfine
|
||||
run: wget https://github.com/sharkdp/hyperfine/releases/download/v1.11.0/hyperfine_1.11.0_amd64.deb && sudo dpkg -i hyperfine_1.11.0_amd64.deb
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: runner
|
||||
- name: change permissions
|
||||
run: chmod +x ./runner
|
||||
- name: run
|
||||
run: ./runner measure -b dev -p ${{ github.workspace }}/performance/projects/
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: dev-results
|
||||
path: performance/results/
|
||||
|
||||
# run the performance measurements on the release branch which we use
|
||||
# as a performance baseline. This part takes by far the longest, so
|
||||
# we do everything we can first so the job fails fast.
|
||||
# -----
|
||||
# we need to checkout dbt twice in this job: once for the baseline dbt
|
||||
# version, and once to get the latest regression testing projects,
|
||||
# metrics, and runner code from the develop or current branch so that
|
||||
# the calculations match for both versions of dbt we are comparing.
|
||||
measure-baseline:
|
||||
needs: [build-runner]
|
||||
name: Measure Baseline Branch
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: checkout latest
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: "0.20.latest"
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v2.2.2
|
||||
with:
|
||||
python-version: "3.8"
|
||||
- name: move repo up a level
|
||||
run: mkdir ${{ github.workspace }}/../baseline/ && cp -r ${{ github.workspace }} ${{ github.workspace }}/../baseline
|
||||
- name: "[debug] ls new dbt location"
|
||||
run: ls ${{ github.workspace }}/../baseline/dbt/
|
||||
# installation creates egg-links so we have to preserve source
|
||||
- name: install dbt from new location
|
||||
run: cd ${{ github.workspace }}/../baseline/dbt/ && pip install -r dev-requirements.txt -r editable-requirements.txt
|
||||
# checkout the current branch to get all the target projects
|
||||
# this deletes the old checked out code which is why we had to copy before
|
||||
- name: checkout dev
|
||||
uses: actions/checkout@v2
|
||||
- name: install hyperfine
|
||||
run: wget https://github.com/sharkdp/hyperfine/releases/download/v1.11.0/hyperfine_1.11.0_amd64.deb && sudo dpkg -i hyperfine_1.11.0_amd64.deb
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: runner
|
||||
- name: change permissions
|
||||
run: chmod +x ./runner
|
||||
- name: run runner
|
||||
run: ./runner measure -b baseline -p ${{ github.workspace }}/performance/projects/
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: baseline-results
|
||||
path: performance/results/
|
||||
|
||||
# detect regressions on the output generated from measuring
|
||||
# the two branches. Exits with non-zero code if a regression is detected.
|
||||
calculate-regressions:
|
||||
needs: [measure-dev, measure-baseline]
|
||||
name: Compare Results
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: dev-results
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: baseline-results
|
||||
- name: "[debug] ls result files"
|
||||
run: ls
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: runner
|
||||
- name: change permissions
|
||||
run: chmod +x ./runner
|
||||
- name: make results directory
|
||||
run: mkdir ./final-output/
|
||||
- name: run calculation
|
||||
run: ./runner calculate -r ./ -o ./final-output/
|
||||
# always attempt to upload the results even if there were regressions found
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: final-calculations
|
||||
path: ./final-output/*
|
||||
116
.github/workflows/release-docker.yml
vendored
Normal file
116
.github/workflows/release-docker.yml
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
# **what?**
|
||||
# This workflow will generate a series of docker images for dbt and push them to the github container registry
|
||||
|
||||
# **why?**
|
||||
# Docker images for dbt are used in a number of important places throughout the dbt ecosystem. This is how we keep those images up-to-date.
|
||||
|
||||
# **when?**
|
||||
# This is triggered manually
|
||||
|
||||
# **next steps**
|
||||
# - build this into the release workflow (or conversly, break out the different release methods into their own workflow files)
|
||||
|
||||
name: Docker release
|
||||
|
||||
permissions:
|
||||
packages: write
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
package:
|
||||
description: The package to release. _One_ of [dbt-core, dbt-redshift, dbt-bigquery, dbt-snowflake, dbt-spark, dbt-postgres]
|
||||
required: true
|
||||
version_number:
|
||||
description: The release version number (i.e. 1.0.0b1). Do not include `latest` tags or a leading `v`!
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
get_version_meta:
|
||||
name: Get version meta
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
major: ${{ steps.version.outputs.major }}
|
||||
minor: ${{ steps.version.outputs.minor }}
|
||||
patch: ${{ steps.version.outputs.patch }}
|
||||
latest: ${{ steps.latest.outputs.latest }}
|
||||
minor_latest: ${{ steps.latest.outputs.minor_latest }}
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Split version
|
||||
id: version
|
||||
run: |
|
||||
IFS="." read -r MAJOR MINOR PATCH <<< ${{ github.event.inputs.version_number }}
|
||||
echo "::set-output name=major::$MAJOR"
|
||||
echo "::set-output name=minor::$MINOR"
|
||||
echo "::set-output name=patch::$PATCH"
|
||||
|
||||
- name: Is pkg 'latest'
|
||||
id: latest
|
||||
uses: ./.github/actions/latest-wrangler
|
||||
with:
|
||||
package: ${{ github.event.inputs.package }}
|
||||
new_version: ${{ github.event.inputs.version_number }}
|
||||
gh_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
halt_on_missing: False
|
||||
|
||||
setup_image_builder:
|
||||
name: Set up docker image builder
|
||||
runs-on: ubuntu-latest
|
||||
needs: [get_version_meta]
|
||||
steps:
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
build_and_push:
|
||||
name: Build images and push to GHCR
|
||||
runs-on: ubuntu-latest
|
||||
needs: [setup_image_builder, get_version_meta]
|
||||
steps:
|
||||
- name: Get docker build arg
|
||||
id: build_arg
|
||||
run: |
|
||||
echo "::set-output name=build_arg_name::"$(echo ${{ github.event.inputs.package }} | sed 's/\-/_/g')
|
||||
echo "::set-output name=build_arg_value::"$(echo ${{ github.event.inputs.package }} | sed 's/postgres/core/g')
|
||||
|
||||
- name: Log in to the GHCR
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build and push MAJOR.MINOR.PATCH tag
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
file: docker/Dockerfile
|
||||
push: True
|
||||
target: ${{ github.event.inputs.package }}
|
||||
build-args: |
|
||||
${{ steps.build_arg.outputs.build_arg_name }}_ref=${{ steps.build_arg.outputs.build_arg_value }}@v${{ github.event.inputs.version_number }}
|
||||
tags: |
|
||||
ghcr.io/dbt-labs/${{ github.event.inputs.package }}:${{ github.event.inputs.version_number }}
|
||||
|
||||
- name: Build and push MINOR.latest tag
|
||||
uses: docker/build-push-action@v2
|
||||
if: ${{ needs.get_version_meta.outputs.minor_latest == 'True' }}
|
||||
with:
|
||||
file: docker/Dockerfile
|
||||
push: True
|
||||
target: ${{ github.event.inputs.package }}
|
||||
build-args: |
|
||||
${{ steps.build_arg.outputs.build_arg_name }}_ref=${{ steps.build_arg.outputs.build_arg_value }}@v${{ github.event.inputs.version_number }}
|
||||
tags: |
|
||||
ghcr.io/dbt-labs/${{ github.event.inputs.package }}:${{ needs.get_version_meta.outputs.major }}.${{ needs.get_version_meta.outputs.minor }}.latest
|
||||
|
||||
- name: Build and push latest tag
|
||||
uses: docker/build-push-action@v2
|
||||
if: ${{ needs.get_version_meta.outputs.latest == 'True' }}
|
||||
with:
|
||||
file: docker/Dockerfile
|
||||
push: True
|
||||
target: ${{ github.event.inputs.package }}
|
||||
build-args: |
|
||||
${{ steps.build_arg.outputs.build_arg_name }}_ref=${{ steps.build_arg.outputs.build_arg_value }}@v${{ github.event.inputs.version_number }}
|
||||
tags: |
|
||||
ghcr.io/dbt-labs/${{ github.event.inputs.package }}:latest
|
||||
199
.github/workflows/release.yml
vendored
Normal file
199
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,199 @@
|
||||
# **what?**
|
||||
# Take the given commit, run unit tests specifically on that sha, build and
|
||||
# package it, and then release to GitHub and PyPi with that specific build
|
||||
|
||||
# **why?**
|
||||
# Ensure an automated and tested release process
|
||||
|
||||
# **when?**
|
||||
# This will only run manually with a given sha and version
|
||||
|
||||
name: Release to GitHub and PyPi
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
sha:
|
||||
description: 'The last commit sha in the release'
|
||||
required: true
|
||||
version_number:
|
||||
description: 'The release version number (i.e. 1.0.0b1)'
|
||||
required: true
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
unit:
|
||||
name: Unit test
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
TOXENV: "unit"
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: ${{ github.event.inputs.sha }}
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip install tox
|
||||
pip --version
|
||||
tox --version
|
||||
|
||||
- name: Run tox
|
||||
run: tox
|
||||
|
||||
build:
|
||||
name: build packages
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: ${{ github.event.inputs.sha }}
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip install --upgrade setuptools wheel twine check-wheel-contents
|
||||
pip --version
|
||||
|
||||
- name: Build distributions
|
||||
run: ./scripts/build-dist.sh
|
||||
|
||||
- name: Show distributions
|
||||
run: ls -lh dist/
|
||||
|
||||
- name: Check distribution descriptions
|
||||
run: |
|
||||
twine check dist/*
|
||||
|
||||
- name: Check wheel contents
|
||||
run: |
|
||||
check-wheel-contents dist/*.whl --ignore W007,W008
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: dist
|
||||
path: |
|
||||
dist/
|
||||
!dist/dbt-${{github.event.inputs.version_number}}.tar.gz
|
||||
|
||||
test-build:
|
||||
name: verify packages
|
||||
|
||||
needs: [build, unit]
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip install --upgrade wheel
|
||||
pip --version
|
||||
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: dist
|
||||
path: dist/
|
||||
|
||||
- name: Show distributions
|
||||
run: ls -lh dist/
|
||||
|
||||
- name: Install wheel distributions
|
||||
run: |
|
||||
find ./dist/*.whl -maxdepth 1 -type f | xargs pip install --force-reinstall --find-links=dist/
|
||||
|
||||
- name: Check wheel distributions
|
||||
run: |
|
||||
dbt --version
|
||||
|
||||
- name: Install source distributions
|
||||
run: |
|
||||
find ./dist/*.gz -maxdepth 1 -type f | xargs pip install --force-reinstall --find-links=dist/
|
||||
|
||||
- name: Check source distributions
|
||||
run: |
|
||||
dbt --version
|
||||
|
||||
github-release:
|
||||
name: GitHub Release
|
||||
|
||||
needs: test-build
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: dist
|
||||
path: '.'
|
||||
|
||||
# Need to set an output variable because env variables can't be taken as input
|
||||
# This is needed for the next step with releasing to GitHub
|
||||
- name: Find release type
|
||||
id: release_type
|
||||
env:
|
||||
IS_PRERELEASE: ${{ contains(github.event.inputs.version_number, 'rc') || contains(github.event.inputs.version_number, 'b') }}
|
||||
run: |
|
||||
echo ::set-output name=isPrerelease::$IS_PRERELEASE
|
||||
|
||||
- name: Creating GitHub Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
name: dbt-core v${{github.event.inputs.version_number}}
|
||||
tag_name: v${{github.event.inputs.version_number}}
|
||||
prerelease: ${{ steps.release_type.outputs.isPrerelease }}
|
||||
target_commitish: ${{github.event.inputs.sha}}
|
||||
body: |
|
||||
[Release notes](https://github.com/dbt-labs/dbt-core/blob/main/CHANGELOG.md)
|
||||
files: |
|
||||
dbt_postgres-${{github.event.inputs.version_number}}-py3-none-any.whl
|
||||
dbt_core-${{github.event.inputs.version_number}}-py3-none-any.whl
|
||||
dbt-postgres-${{github.event.inputs.version_number}}.tar.gz
|
||||
dbt-core-${{github.event.inputs.version_number}}.tar.gz
|
||||
|
||||
pypi-release:
|
||||
name: Pypi release
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: github-release
|
||||
|
||||
environment: PypiProd
|
||||
steps:
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: dist
|
||||
path: 'dist'
|
||||
|
||||
- name: Publish distribution to PyPI
|
||||
uses: pypa/gh-action-pypi-publish@v1.4.2
|
||||
with:
|
||||
password: ${{ secrets.PYPI_API_TOKEN }}
|
||||
87
.github/workflows/schema-check.yml
vendored
Normal file
87
.github/workflows/schema-check.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
# **what?**
|
||||
# Compares the schema of the dbt version of the given ref vs
|
||||
# the latest official schema releases found in schemas.getdbt.com.
|
||||
# If there are differences, the workflow will fail and upload the
|
||||
# diff as an artifact. The metadata team should be alerted to the change.
|
||||
#
|
||||
# **why?**
|
||||
# Reaction work may need to be done if artifact schema changes
|
||||
# occur so we want to proactively alert to it.
|
||||
#
|
||||
# **when?**
|
||||
# On pushes to `develop` and release branches. Manual runs are also enabled.
|
||||
name: Artifact Schema Check
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request: #TODO: remove before merging
|
||||
push:
|
||||
branches:
|
||||
- "develop"
|
||||
- "*.latest"
|
||||
- "releases/*"
|
||||
|
||||
env:
|
||||
LATEST_SCHEMA_PATH: ${{ github.workspace }}/new_schemas
|
||||
SCHEMA_DIFF_ARTIFACT: ${{ github.workspace }}//schema_schanges.txt
|
||||
DBT_REPO_DIRECTORY: ${{ github.workspace }}/dbt
|
||||
SCHEMA_REPO_DIRECTORY: ${{ github.workspace }}/schemas.getdbt.com
|
||||
|
||||
jobs:
|
||||
checking-schemas:
|
||||
name: "Checking schemas"
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
|
||||
- name: Checkout dbt repo
|
||||
uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
path: ${{ env.DBT_REPO_DIRECTORY }}
|
||||
|
||||
- name: Checkout schemas.getdbt.com repo
|
||||
uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
repository: dbt-labs/schemas.getdbt.com
|
||||
ref: 'main'
|
||||
ssh-key: ${{ secrets.SCHEMA_SSH_PRIVATE_KEY }}
|
||||
path: ${{ env.SCHEMA_REPO_DIRECTORY }}
|
||||
|
||||
- name: Generate current schema
|
||||
run: |
|
||||
cd ${{ env.DBT_REPO_DIRECTORY }}
|
||||
python3 -m venv env
|
||||
source env/bin/activate
|
||||
pip install --upgrade pip
|
||||
pip install -r dev-requirements.txt -r editable-requirements.txt
|
||||
python scripts/collect-artifact-schema.py --path ${{ env.LATEST_SCHEMA_PATH }}
|
||||
|
||||
# Copy generated schema files into the schemas.getdbt.com repo
|
||||
# Do a git diff to find any changes
|
||||
# Ignore any date or version changes though
|
||||
- name: Compare schemas
|
||||
run: |
|
||||
cp -r ${{ env.LATEST_SCHEMA_PATH }}/dbt ${{ env.SCHEMA_REPO_DIRECTORY }}
|
||||
cd ${{ env.SCHEMA_REPO_DIRECTORY }}
|
||||
diff_results=$(git diff -I='*[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T' \
|
||||
-I='*[0-9]{1}.[0-9]{2}.[0-9]{1}(rc[0-9]|b[0-9]| )' --compact-summary)
|
||||
if [[ $(echo diff_results) ]]; then
|
||||
echo $diff_results
|
||||
echo "Schema changes detected!"
|
||||
git diff -I='*[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T' \
|
||||
-I='*[0-9]{1}.[0-9]{2}.[0-9]{1}(rc[0-9]|b[0-9]| )' > ${{ env.SCHEMA_DIFF_ARTIFACT }}
|
||||
exit 1
|
||||
else
|
||||
echo "No schema changes detected"
|
||||
fi
|
||||
|
||||
- name: Upload schema diff
|
||||
uses: actions/upload-artifact@v2.2.4
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
name: 'schema_schanges.txt'
|
||||
path: '${{ env.SCHEMA_DIFF_ARTIFACT }}'
|
||||
18
.github/workflows/stale.yml
vendored
Normal file
18
.github/workflows/stale.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
name: "Close stale issues and PRs"
|
||||
on:
|
||||
schedule:
|
||||
- cron: "30 1 * * *"
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# pinned at v4 (https://github.com/actions/stale/releases/tag/v4.0.0)
|
||||
- uses: actions/stale@cdf15f641adb27a71842045a94023bef6945e3aa
|
||||
with:
|
||||
stale-issue-message: "This issue has been marked as Stale because it has been open for 180 days with no activity. If you would like the issue to remain open, please remove the stale label or comment on the issue, or it will be closed in 7 days."
|
||||
stale-pr-message: "This PR has been marked as Stale because it has been open for 180 days with no activity. If you would like the PR to remain open, please remove the stale label or comment on the PR, or it will be closed in 7 days."
|
||||
# mark issues/PRs stale when they haven't seen activity in 180 days
|
||||
days-before-stale: 180
|
||||
# ignore checking issues with the following labels
|
||||
exempt-issue-labels: "epic,discussion"
|
||||
73
.github/workflows/structured-logging-schema-check.yml
vendored
Normal file
73
.github/workflows/structured-logging-schema-check.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
# This Action checks makes a dbt run to sample json structured logs
|
||||
# and checks that they conform to the currently documented schema.
|
||||
#
|
||||
# If this action fails it either means we have unintentionally deviated
|
||||
# from our documented structured logging schema, or we need to bump the
|
||||
# version of our structured logging and add new documentation to
|
||||
# communicate these changes.
|
||||
|
||||
name: Structured Logging Schema Check
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
- "*.latest"
|
||||
- "releases/*"
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
# run the performance measurements on the current or default branch
|
||||
test-schema:
|
||||
name: Test Log Schema
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
# turns warnings into errors
|
||||
RUSTFLAGS: "-D warnings"
|
||||
# points tests to the log file
|
||||
LOG_DIR: "/home/runner/work/dbt-core/dbt-core/logs"
|
||||
# tells integration tests to output into json format
|
||||
DBT_LOG_FORMAT: "json"
|
||||
steps:
|
||||
- name: checkout dev
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v2.2.2
|
||||
with:
|
||||
python-version: "3.8"
|
||||
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
profile: minimal
|
||||
toolchain: stable
|
||||
override: true
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
pip install --user --upgrade pip
|
||||
pip --version
|
||||
pip install tox
|
||||
tox --version
|
||||
|
||||
- name: Set up postgres
|
||||
uses: ./.github/actions/setup-postgres-linux
|
||||
|
||||
- name: ls
|
||||
run: ls
|
||||
|
||||
# integration tests generate a ton of logs in different files. the next step will find them all.
|
||||
# we actually care if these pass, because the normal test run doesn't usually include many json log outputs
|
||||
- name: Run integration tests
|
||||
run: tox -e integration -- -nauto
|
||||
|
||||
# apply our schema tests to every log event from the previous step
|
||||
# skips any output that isn't valid json
|
||||
- uses: actions-rs/cargo@v1
|
||||
with:
|
||||
command: run
|
||||
args: --manifest-path test/interop/log_parsing/Cargo.toml
|
||||
1
.github/workflows/test/.actrc
vendored
Normal file
1
.github/workflows/test/.actrc
vendored
Normal file
@@ -0,0 +1 @@
|
||||
-P ubuntu-latest=ghcr.io/catthehacker/ubuntu:act-latest
|
||||
1
.github/workflows/test/.gitignore
vendored
Normal file
1
.github/workflows/test/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.secrets
|
||||
1
.github/workflows/test/.secrets.EXAMPLE
vendored
Normal file
1
.github/workflows/test/.secrets.EXAMPLE
vendored
Normal file
@@ -0,0 +1 @@
|
||||
GITHUB_TOKEN=GH_PERSONAL_ACCESS_TOKEN_GOES_HERE
|
||||
6
.github/workflows/test/inputs/release_docker.json
vendored
Normal file
6
.github/workflows/test/inputs/release_docker.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"inputs": {
|
||||
"version_number": "1.0.1",
|
||||
"package": "dbt-postgres"
|
||||
}
|
||||
}
|
||||
109
.github/workflows/version-bump.yml
vendored
Normal file
109
.github/workflows/version-bump.yml
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
# **what?**
|
||||
# This workflow will take a version number and a dry run flag. With that
|
||||
# it will run versionbump to update the version number everywhere in the
|
||||
# code base and then generate an update Docker requirements file. If this
|
||||
# is a dry run, a draft PR will open with the changes. If this isn't a dry
|
||||
# run, the changes will be committed to the branch this is run on.
|
||||
|
||||
# **why?**
|
||||
# This is to aid in releasing dbt and making sure we have updated
|
||||
# the versions and Docker requirements in all places.
|
||||
|
||||
# **when?**
|
||||
# This is triggered either manually OR
|
||||
# from the repository_dispatch event "version-bump" which is sent from
|
||||
# the dbt-release repo Action
|
||||
|
||||
name: Version Bump
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version_number:
|
||||
description: 'The version number to bump to'
|
||||
required: true
|
||||
is_dry_run:
|
||||
description: 'Creates a draft PR to allow testing instead of committing to a branch'
|
||||
required: true
|
||||
default: 'true'
|
||||
repository_dispatch:
|
||||
types: [version-bump]
|
||||
|
||||
jobs:
|
||||
bump:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set version and dry run values
|
||||
id: variables
|
||||
env:
|
||||
VERSION_NUMBER: "${{ github.event.client_payload.version_number == '' && github.event.inputs.version_number || github.event.client_payload.version_number }}"
|
||||
IS_DRY_RUN: "${{ github.event.client_payload.is_dry_run == '' && github.event.inputs.is_dry_run || github.event.client_payload.is_dry_run }}"
|
||||
run: |
|
||||
echo Repository dispatch event version: ${{ github.event.client_payload.version_number }}
|
||||
echo Repository dispatch event dry run: ${{ github.event.client_payload.is_dry_run }}
|
||||
echo Workflow dispatch event version: ${{ github.event.inputs.version_number }}
|
||||
echo Workflow dispatch event dry run: ${{ github.event.inputs.is_dry_run }}
|
||||
echo ::set-output name=VERSION_NUMBER::$VERSION_NUMBER
|
||||
echo ::set-output name=IS_DRY_RUN::$IS_DRY_RUN
|
||||
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: "3.8"
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
python3 -m venv env
|
||||
source env/bin/activate
|
||||
pip install --upgrade pip
|
||||
|
||||
- name: Create PR branch
|
||||
if: ${{ steps.variables.outputs.IS_DRY_RUN == 'true' }}
|
||||
run: |
|
||||
git checkout -b bumping-version/${{steps.variables.outputs.VERSION_NUMBER}}_$GITHUB_RUN_ID
|
||||
git push origin bumping-version/${{steps.variables.outputs.VERSION_NUMBER}}_$GITHUB_RUN_ID
|
||||
git branch --set-upstream-to=origin/bumping-version/${{steps.variables.outputs.VERSION_NUMBER}}_$GITHUB_RUN_ID bumping-version/${{steps.variables.outputs.VERSION_NUMBER}}_$GITHUB_RUN_ID
|
||||
|
||||
# - name: Generate Docker requirements
|
||||
# run: |
|
||||
# source env/bin/activate
|
||||
# pip install -r requirements.txt
|
||||
# pip freeze -l > docker/requirements/requirements.txt
|
||||
# git status
|
||||
|
||||
- name: Bump version
|
||||
run: |
|
||||
source env/bin/activate
|
||||
pip install -r dev-requirements.txt
|
||||
env/bin/bumpversion --allow-dirty --new-version ${{steps.variables.outputs.VERSION_NUMBER}} major
|
||||
git status
|
||||
|
||||
- name: Commit version bump directly
|
||||
uses: EndBug/add-and-commit@v7
|
||||
if: ${{ steps.variables.outputs.IS_DRY_RUN == 'false' }}
|
||||
with:
|
||||
author_name: 'Github Build Bot'
|
||||
author_email: 'buildbot@fishtownanalytics.com'
|
||||
message: 'Bumping version to ${{steps.variables.outputs.VERSION_NUMBER}}'
|
||||
|
||||
- name: Commit version bump to branch
|
||||
uses: EndBug/add-and-commit@v7
|
||||
if: ${{ steps.variables.outputs.IS_DRY_RUN == 'true' }}
|
||||
with:
|
||||
author_name: 'Github Build Bot'
|
||||
author_email: 'buildbot@fishtownanalytics.com'
|
||||
message: 'Bumping version to ${{steps.variables.outputs.VERSION_NUMBER}}'
|
||||
branch: 'bumping-version/${{steps.variables.outputs.VERSION_NUMBER}}_${{GITHUB.RUN_ID}}'
|
||||
push: 'origin origin/bumping-version/${{steps.variables.outputs.VERSION_NUMBER}}_${{GITHUB.RUN_ID}}'
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
if: ${{ steps.variables.outputs.IS_DRY_RUN == 'true' }}
|
||||
with:
|
||||
author: 'Github Build Bot <buildbot@fishtownanalytics.com>'
|
||||
draft: true
|
||||
base: ${{github.ref}}
|
||||
title: 'Bumping version to ${{steps.variables.outputs.VERSION_NUMBER}}'
|
||||
branch: 'bumping-version/${{steps.variables.outputs.VERSION_NUMBER}}_${{GITHUB.RUN_ID}}'
|
||||
39
.gitignore
vendored
39
.gitignore
vendored
@@ -8,7 +8,8 @@ __pycache__/
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
env/
|
||||
env*/
|
||||
dbt_env/
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
@@ -23,6 +24,8 @@ var/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
*.mypy_cache/
|
||||
logs/
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
@@ -40,10 +43,14 @@ htmlcov/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
.env
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*,cover
|
||||
.hypothesis/
|
||||
test.env
|
||||
*.pytest_cache/
|
||||
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
@@ -58,5 +65,33 @@ docs/_build/
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
#Ipython Notebook
|
||||
# Ipython Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# Emacs
|
||||
*~
|
||||
|
||||
# Sublime Text
|
||||
*.sublime-*
|
||||
|
||||
# Vim
|
||||
*.sw*
|
||||
|
||||
# Pyenv
|
||||
.python-version
|
||||
|
||||
# Vim
|
||||
*.sw*
|
||||
|
||||
# pycharm
|
||||
.idea/
|
||||
venv/
|
||||
|
||||
# AWS credentials
|
||||
.aws/
|
||||
|
||||
# MacOS
|
||||
.DS_Store
|
||||
|
||||
# vscode
|
||||
.vscode/
|
||||
|
||||
68
.pre-commit-config.yaml
Normal file
68
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,68 @@
|
||||
# Configuration for pre-commit hooks (see https://pre-commit.com/).
|
||||
# Eventually the hooks described here will be run as tests before merging each PR.
|
||||
|
||||
# TODO: remove global exclusion of tests when testing overhaul is complete
|
||||
exclude: ^test/
|
||||
|
||||
# Force all unspecified python hooks to run python 3.8
|
||||
default_language_version:
|
||||
python: python3.8
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v3.2.0
|
||||
hooks:
|
||||
- id: check-yaml
|
||||
args: [--unsafe]
|
||||
- id: check-json
|
||||
- id: end-of-file-fixer
|
||||
- id: trailing-whitespace
|
||||
exclude_types:
|
||||
- "markdown"
|
||||
- id: check-case-conflict
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 21.12b0
|
||||
hooks:
|
||||
- id: black
|
||||
args:
|
||||
- "--line-length=99"
|
||||
- "--target-version=py38"
|
||||
- id: black
|
||||
alias: black-check
|
||||
stages: [manual]
|
||||
args:
|
||||
- "--line-length=99"
|
||||
- "--target-version=py38"
|
||||
- "--check"
|
||||
- "--diff"
|
||||
- repo: https://gitlab.com/pycqa/flake8
|
||||
rev: 4.0.1
|
||||
hooks:
|
||||
- id: flake8
|
||||
- id: flake8
|
||||
alias: flake8-check
|
||||
stages: [manual]
|
||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||
rev: v0.782
|
||||
hooks:
|
||||
- id: mypy
|
||||
# N.B.: Mypy is... a bit fragile.
|
||||
#
|
||||
# By using `language: system` we run this hook in the local
|
||||
# environment instead of a pre-commit isolated one. This is needed
|
||||
# to ensure mypy correctly parses the project.
|
||||
|
||||
# It may cause trouble
|
||||
# in that it adds environmental variables out of our control to the
|
||||
# mix. Unfortunately, there's nothing we can do about per pre-commit's
|
||||
# author.
|
||||
# See https://github.com/pre-commit/pre-commit/issues/730 for details.
|
||||
args: [--show-error-codes]
|
||||
files: ^core/dbt/
|
||||
language: system
|
||||
- id: mypy
|
||||
alias: mypy-check
|
||||
stages: [manual]
|
||||
args: [--show-error-codes, --pretty]
|
||||
files: ^core/dbt/
|
||||
language: system
|
||||
54
ARCHITECTURE.md
Normal file
54
ARCHITECTURE.md
Normal file
@@ -0,0 +1,54 @@
|
||||
The core function of dbt is SQL compilation and execution. Users create projects of dbt resources (models, tests, seeds, snapshots, ...), defined in SQL and YAML files, and they invoke dbt to create, update, or query associated views and tables. Today, dbt makes heavy use of Jinja2 to enable the templating of SQL, and to construct a DAG (Directed Acyclic Graph) from all of the resources in a project. Users can also extend their projects by installing resources (including Jinja macros) from other projects, called "packages."
|
||||
|
||||
## dbt-core
|
||||
|
||||
Most of the python code in the repository is within the `core/dbt` directory.
|
||||
- [`single python files`](core/dbt/README.md): A number of individual files, such as 'compilation.py' and 'exceptions.py'
|
||||
|
||||
The main subdirectories of core/dbt:
|
||||
- [`adapters`](core/dbt/adapters/README.md): Define base classes for behavior that is likely to differ across databases
|
||||
- [`clients`](core/dbt/clients/README.md): Interface with dependencies (agate, jinja) or across operating systems
|
||||
- [`config`](core/dbt/config/README.md): Reconcile user-supplied configuration from connection profiles, project files, and Jinja macros
|
||||
- [`context`](core/dbt/context/README.md): Build and expose dbt-specific Jinja functionality
|
||||
- [`contracts`](core/dbt/contracts/README.md): Define Python objects (dataclasses) that dbt expects to create and validate
|
||||
- [`deps`](core/dbt/deps/README.md): Package installation and dependency resolution
|
||||
- [`events`](core/dbt/events/README.md): Logging events
|
||||
- [`graph`](core/dbt/graph/README.md): Produce a `networkx` DAG of project resources, and selecting those resources given user-supplied criteria
|
||||
- [`include`](core/dbt/include/README.md): The dbt "global project," which defines default implementations of Jinja2 macros
|
||||
- [`parser`](core/dbt/parser/README.md): Read project files, validate, construct python objects
|
||||
- [`task`](core/dbt/task/README.md): Set forth the actions that dbt can perform when invoked
|
||||
|
||||
Legacy tests are found in the 'test' directory:
|
||||
- [`unit tests`](core/dbt/test/unit/README.md): Unit tests
|
||||
- [`integration tests`](core/dbt/test/integration/README.md): Integration tests
|
||||
|
||||
### Invoking dbt
|
||||
|
||||
The "tasks" map to top-level dbt commands. So `dbt run` => task.run.RunTask, etc. Some are more like abstract base classes (GraphRunnableTask, for example) but all the concrete types outside of task should map to tasks. Currently one executes at a time. The tasks kick off their “Runners” and those do execute in parallel. The parallelism is managed via a thread pool, in GraphRunnableTask.
|
||||
|
||||
core/dbt/include/index.html
|
||||
This is the docs website code. It comes from the dbt-docs repository, and is generated when a release is packaged.
|
||||
|
||||
## Adapters
|
||||
|
||||
dbt uses an adapter-plugin pattern to extend support to different databases, warehouses, query engines, etc. For testing and development purposes, the dbt-postgres plugin lives alongside the dbt-core codebase, in the [`plugins`](plugins) subdirectory. Like other adapter plugins, it is a self-contained codebase and package that builds on top of dbt-core.
|
||||
|
||||
Each adapter is a mix of python, Jinja2, and SQL. The adapter code also makes heavy use of Jinja2 to wrap modular chunks of SQL functionality, define default implementations, and allow plugins to override it.
|
||||
|
||||
Each adapter plugin is a standalone python package that includes:
|
||||
|
||||
- `dbt/include/[name]`: A "sub-global" dbt project, of YAML and SQL files, that reimplements Jinja macros to use the adapter's supported SQL syntax
|
||||
- `dbt/adapters/[name]`: Python modules that inherit, and optionally reimplement, the base adapter classes defined in dbt-core
|
||||
- `setup.py`
|
||||
|
||||
The Postgres adapter code is the most central, and many of its implementations are used as the default defined in the dbt-core global project. The greater the distance of a data technology from Postgres, the more its adapter plugin may need to reimplement.
|
||||
|
||||
## Testing dbt
|
||||
|
||||
The [`test/`](test/) subdirectory includes unit and integration tests that run as continuous integration checks against open pull requests. Unit tests check mock inputs and outputs of specific python functions. Integration tests perform end-to-end dbt invocations against real adapters (Postgres, Redshift, Snowflake, BigQuery) and assert that the results match expectations. See [the contributing guide](CONTRIBUTING.md) for a step-by-step walkthrough of setting up a local development and testing environment.
|
||||
|
||||
## Everything else
|
||||
|
||||
- [docker](docker/): All dbt versions are published as Docker images on DockerHub. This subfolder contains the `Dockerfile` (constant) and `requirements.txt` (one for each version).
|
||||
- [etc](etc/): Images for README
|
||||
- [scripts](scripts/): Helper scripts for testing, releasing, and producing JSON schemas. These are not included in distributions of dbt, nor are they rigorously tested—they're just handy tools for the dbt maintainers :)
|
||||
967
CHANGELOG.md
Normal file → Executable file
967
CHANGELOG.md
Normal file → Executable file
@@ -1,891 +1,76 @@
|
||||
## dbt release 0.6.0
|
||||
|
||||
### tl;dr
|
||||
- Macros
|
||||
- More control over how models are materialized
|
||||
- Minor improvements
|
||||
- Bugfixes
|
||||
- Connor McArthur
|
||||
|
||||
### Macros
|
||||
|
||||
Macros are snippets of SQL that can be called like functions in models. Macros make it possible to re-use SQL between models
|
||||
in keeping with the engineering principle of DRY (Dont Repeat Yourself). Moreover, packages can expose Macros that you can use in your own dbt project.
|
||||
|
||||
For detailed information on how to use Macros, check out the pull request [here](https://github.com/analyst-collective/dbt/pull/245)
|
||||
|
||||
|
||||
### Runtime Materialization Configs
|
||||
DBT Version 0.6.0 introduces two new ways to control the materialization of models:
|
||||
|
||||
#### Non-destructive dbt run [more info](https://github.com/analyst-collective/dbt/issues/137)
|
||||
|
||||
If you provide the `--non-destructive` argument to `dbt run`, dbt will minimize the amount of time during which your models are unavailable. Specfically, dbt
|
||||
will
|
||||
1. Ignore models materialized as `views`
|
||||
2. Truncate tables and re-insert data instead of dropping and re-creating
|
||||
|
||||
This flag is useful for recurring jobs which only need to update table models and incremental models.
|
||||
|
||||
```bash
|
||||
dbt run --non-destructive
|
||||
```
|
||||
|
||||
#### Incremental Model Full Refresh [more info](https://github.com/analyst-collective/dbt/issues/140)
|
||||
|
||||
If you provide the `--full-refresh` argument to `dbt run`, dbt will treat incremental models as table models. This is useful when
|
||||
|
||||
1. An incremental model schema changes and you need to recreate the table accordingly
|
||||
2. You want to reprocess the entirety of the incremental model because of new logic in the model code
|
||||
|
||||
```bash
|
||||
dbt run --full-refresh
|
||||
```
|
||||
|
||||
Note that `--full-refresh` and `--non-destructive` can be used together!
|
||||
|
||||
For more information, run
|
||||
```
|
||||
dbt run --help
|
||||
```
|
||||
|
||||
### Minor improvements [more info](https://github.com/analyst-collective/dbt/milestone/15?closed=1)
|
||||
|
||||
#### Add a `{{ target }}` variable to the dbt runtime [more info](https://github.com/analyst-collective/dbt/issues/149)
|
||||
Use `{{ target }}` to interpolate profile variables into your model definitions. For example:
|
||||
|
||||
```sql
|
||||
-- only use the last week of data in development
|
||||
select * from events
|
||||
|
||||
{% if target.name == 'dev' %}
|
||||
where created_at > getdate() - interval '1 week'
|
||||
{% endif %}
|
||||
```
|
||||
|
||||
#### User-specified `profiles.yml` dir [more info](https://github.com/analyst-collective/dbt/issues/213)
|
||||
DBT looks for a file called `profiles.yml` in the `~/.dbt/` directory. You can now overide this directory with
|
||||
```bash
|
||||
$ dbt run --profiles-dir /path/to/my/dir
|
||||
```
|
||||
#### Add timestamp to console output [more info](https://github.com/analyst-collective/dbt/issues/125)
|
||||
Informative _and_ pretty
|
||||
|
||||
#### Run dbt from subdirectory of project root [more info](https://github.com/analyst-collective/dbt/issues/129)
|
||||
A story in three parts:
|
||||
```bash
|
||||
cd models/snowplow/sessions
|
||||
vim sessions.sql
|
||||
dbt run # it works!
|
||||
```
|
||||
|
||||
#### Pre and post run hooks [more info](https://github.com/analyst-collective/dbt/issues/226)
|
||||
```yaml
|
||||
# dbt_project.yml
|
||||
name: ...
|
||||
version: ...
|
||||
|
||||
...
|
||||
|
||||
# supply either a string, or a list of strings
|
||||
on-run-start: "create table public.cool_table (id int)"
|
||||
on-run-end:
|
||||
- insert into public.cool_table (id) values (1), (2), (3)
|
||||
- insert into public.cool_table (id) values (4), (5), (6)
|
||||
```
|
||||
|
||||
### Bug fixes https://github.com/analyst-collective/dbt/milestone/11?closed=1
|
||||
|
||||
We fixed 10 bugs in this release! See the full list [here](https://github.com/analyst-collective/dbt/milestone/11?closed=1)
|
||||
|
||||
|
||||
### One more thing...
|
||||
|
||||
As always, feel free to reach out to us on [Slack](http://ac-slackin.herokuapp.com/) with any questions or comments!
|
||||
|
||||
---
|
||||
|
||||
## dbt release 0.5.4
|
||||
|
||||
### tl;dr
|
||||
- added support for custom SQL data tests
|
||||
- SQL returns 0 results --> pass
|
||||
- SQL returns > 0 results --> fail
|
||||
- dbt-core integration tests
|
||||
- running in Continuous Integration environments
|
||||
- windows ([appveyor](https://ci.appveyor.com/project/DrewBanin/dbt/branch/development))
|
||||
- linux ([circle](https://circleci.com/gh/analyst-collective/dbt/tree/master))
|
||||
- with [code coverage](https://circleci.com/api/v1/project/analyst-collective/dbt/latest/artifacts/0/$CIRCLE_ARTIFACTS/htmlcov/index.html?branch=development)
|
||||
|
||||
|
||||
### Custom SQL data tests
|
||||
|
||||
Schema tests have proven to be an essential part of a modern analytical workflow. These schema tests validate basic constraints about your data. Namely: not null, unique, accepted value, and foreign key relationship properties can be asserted using schema tests.
|
||||
|
||||
With dbt v0.5.4, you can now write your own custom "data tests". These data tests are SQL SELECT statements that return 0 rows on success, or > 0 rows on failure. A typical data test might look like:
|
||||
|
||||
```sql
|
||||
-- tests/assert_less_than_5_pct_event_cookie_ids_are_null.sql
|
||||
|
||||
-- If >= 5% of cookie_ids are null, then the test returns 1 row (failure).
|
||||
-- If < 5% of cookie_ids are null, then the test returns 0 rows (success)
|
||||
|
||||
with calc as (
|
||||
|
||||
select
|
||||
sum(case when cookie_id is null then 1 else 0 end)::float / count(*)::float as fraction
|
||||
from {{ ref('events') }}
|
||||
|
||||
)
|
||||
|
||||
select * from calc where fraction < 0.05
|
||||
```
|
||||
|
||||
To enable data tests, add the `test-paths` config to your `dbt_project.yml` file:
|
||||
|
||||
```yml
|
||||
name: 'Vandelay Industries`
|
||||
version: '1.0'
|
||||
|
||||
source-paths: ["models"]
|
||||
target-path: "target"
|
||||
test-paths: ["tests"] # look for *.sql files in the "tests" directory
|
||||
....
|
||||
```
|
||||
|
||||
Any `.sql` file found in the `test-paths` director(y|ies) will be evaluated as data tests. These tests can be run with:
|
||||
|
||||
```bash
|
||||
dbt test # run schema + data tests
|
||||
dbt test --schema # run only schema tests
|
||||
dbt test --data # run only data tests
|
||||
dbt test --data --schema # run schema + data tests
|
||||
|
||||
# For more information, try
|
||||
dbt test -h
|
||||
```
|
||||
|
||||
### DBT-core integration tests
|
||||
|
||||
With the dbt 0.5.4 release, dbt now features a robust integration test suite. These integration tests will help mitigate the risk of software regressions, and in so doing, will help us develop dbt more quickly. You can check out the tests [here](https://github.com/analyst-collective/dbt/tree/development/test/integration), and the test results [here (linux/osx)](https://circleci.com/gh/analyst-collective/dbt/tree/master) and [here (windows)](https://ci.appveyor.com/project/DrewBanin/dbt/branch/development).
|
||||
|
||||
|
||||
### The Future
|
||||
|
||||
You can check out the DBT roadmap [here](https://github.com/analyst-collective/dbt/milestones). In the next few weeks, we'll be working on [bugfixes](https://github.com/analyst-collective/dbt/milestone/11), [minor features](https://github.com/analyst-collective/dbt/milestone/15), [improved macro support](https://github.com/analyst-collective/dbt/milestone/14), and [expanded control over runtime materialization configs](https://github.com/analyst-collective/dbt/milestone/9).
|
||||
|
||||
As always, feel free to reach out to us on [Slack](http://ac-slackin.herokuapp.com/) with any questions or comments!
|
||||
|
||||
---
|
||||
|
||||
## dbt release 0.5.3
|
||||
|
||||
Bugfix release.
|
||||
|
||||
Fixes regressions introduced in 0.5.1 and 0.5.2.
|
||||
|
||||
### Fixed 0.5.1 regressions
|
||||
Incremental models were broken by the new column expansion feature. Column expansion is implemented as
|
||||
```sql
|
||||
alter table ... add column tmp_col varchar({new_size});
|
||||
update ... set tmp_col = existing_col
|
||||
alter table ... drop column existing_col
|
||||
alter table ... rename tmp_col to existing_col
|
||||
```
|
||||
|
||||
This has the side-effect of moving the `existing_col` to the "end" of the table. When an incremental model tries to
|
||||
```sql
|
||||
insert into {table} (
|
||||
select * from tmp_table
|
||||
)
|
||||
```
|
||||
suddenly the columns in `{table}` are incongruent with the columns in `tmp_table`. This insert subsequently fails.
|
||||
|
||||
The fix for this issue is twofold:
|
||||
|
||||
1. If the incremental model table DOES NOT already exist, avoid inserts altogether. Instead, run a `create table as (...)` statement
|
||||
2. If the incremental model table DOES already exist, query for the columns in the existing table and use those to build the insert statement, eg:
|
||||
|
||||
```sql
|
||||
insert into "dbt_dbanin"."sessions" ("session_end_tstamp", "session_start_tstamp", ...)
|
||||
(
|
||||
select "session_end_tstamp", "session_start_tstamp", ...
|
||||
from "sessions__dbt_incremental_tmp"
|
||||
);
|
||||
```
|
||||
|
||||
In this way, the source and destination columns are guaranteed to be in the same order!
|
||||
|
||||
### Fixed 0.5.2 regressions
|
||||
|
||||
We attempted to refactor the way profiles work in dbt. Previously, a default `user` profile was loaded, and the profiles specified in `dbt_project.yml` or on the command line (`with --profile`) would be applied on top of the `user` config. This implementation is [some of the earliest code](https://github.com/analyst-collective/dbt/commit/430d12ad781a48af6a754442693834efdf98ffb1) that was committed to dbt.
|
||||
|
||||
As `dbt` has grown, we found this implementation to be a little unwieldy and hard to maintain. The 0.5.2 release made it so that only one profile could be loaded at a time. This profile needed to be specified in either `dbt_project.yml` or on the command line with `--profile`. A bug was errantly introduced during this change which broke the handling of dependency projects.
|
||||
|
||||
### The future
|
||||
|
||||
The additions of automated testing and a more comprehensive manual testing process will go a long way to ensuring the future stability of dbt. We're going to get started on these tasks soon, and you can follow our progress here: https://github.com/analyst-collective/dbt/milestone/16 .
|
||||
|
||||
As always, feel free to [reach out to us on Slack](http://ac-slackin.herokuapp.com/) with any questions or concerns:
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
## dbt release 0.5.2
|
||||
|
||||
Patch release fixing a bug that arises when profiles are overridden on the command line with the `--profile` flag.
|
||||
|
||||
See https://github.com/analyst-collective/dbt/releases/tag/v0.5.1
|
||||
|
||||
---
|
||||
|
||||
## dbt release 0.5.1
|
||||
|
||||
### 0. tl;dr
|
||||
|
||||
1. Raiders of the Lost Archive -- version your raw data to make historical queries more accurate
|
||||
2. Column type resolution for incremental models (no more `Value too long for character type` errors)
|
||||
3. Postgres support
|
||||
4. Top-level configs applied to your project + all dependencies
|
||||
5. --threads CLI option + better multithreaded output
|
||||
|
||||
### 1. Source table archival https://github.com/analyst-collective/dbt/pull/183
|
||||
|
||||
Commonly, analysts need to "look back in time" at some previous state of data in their mutable tables. Imagine a `users` table which is synced to your data warehouse from a production database. This `users` table is a representation of what your users look like _now_. Consider what happens if you need to look at revenue by city for each of your users trended over time. Specifically, what happens if a user moved from, say, Philadelphia to New York? To do this correctly, you need to archive snapshots of the `users` table on a recurring basis. With this release, dbt now provides an easy mechanism to store such snapshots.
|
||||
|
||||
To use this new feature, declare the tables you want to archive in your `dbt_project.yml` file:
|
||||
|
||||
```yaml
|
||||
archive:
|
||||
- source_schema: synced_production_data # schema to look for tables in (declared below)
|
||||
target_schema: dbt_archive # where to archive the data to
|
||||
tables: # list of tables to archive
|
||||
- source_table: users # table to archive
|
||||
target_table: users_archived # table to insert archived data into
|
||||
updated_at: updated_at # used to determine when data has changed
|
||||
unique_key: id # used to generate archival query
|
||||
|
||||
- source_table: some_other_table
|
||||
target_table: some_other_table_archive
|
||||
updated_at: "updatedAt"
|
||||
unique_key: "expressions || work || LOWER(too)"
|
||||
|
||||
- source_schema: some_other_schema
|
||||
....
|
||||
```
|
||||
|
||||
The archived tables will mirror the schema of the source tables they're generated from. In addition, three fields are added to the archive table:
|
||||
|
||||
1. `valid_from`: The timestamp when this archived row was inserted (and first considered valid)
|
||||
1. `valid_to`: The timestamp when this archived row became invalidated. The first archived record for a given `unique_key` has `valid_to = NULL`. When newer data is archived for that `unique_key`, the `valid_to` field of the old record is set to the `valid_from` field of the new record!
|
||||
1. `scd_id`: A unique key generated for each archive record. Scd = [Slowly Changing Dimension](https://en.wikipedia.org/wiki/Slowly_changing_dimension#Type_2:_add_new_row).
|
||||
|
||||
dbt models can be built on top of these archived tables. The most recent record for a given `unique_key` is the one where `valid_to` is `null`.
|
||||
|
||||
To run this archive process, use the command `dbt archive`. After testing and confirming that the archival works, you should schedule this process through cron (or similar).
|
||||
|
||||
### 2. Incremental column expansion https://github.com/analyst-collective/dbt/issues/175
|
||||
|
||||
Incremental tables are a powerful dbt feature, but there was at least one edge case which makes working with them difficult. During the first run of an incremental model, Redshift will infer a type for every column in the table. Subsequent runs can insert new data which does not conform to the expected type. One example is a `varchar(16)` field which is inserted into a `varchar(8)` field.
|
||||
In practice, this error looks like:
|
||||
|
||||
```
|
||||
Value too long for character type
|
||||
DETAIL:
|
||||
-----------------------------------------------
|
||||
error: Value too long for character type
|
||||
code: 8001
|
||||
context: Value too long for type character varying(8)
|
||||
query: 3743263
|
||||
location: funcs_string.hpp:392
|
||||
process: query4_35 [pid=18194]
|
||||
-----------------------------------------------
|
||||
```
|
||||
|
||||
With this release, dbt will detect when column types are incongruent and will attempt to reconcile these different types if possible. Specifically, dbt will alter the incremental model table schema from `character varying(x)` to `character varying(y)` for some `y > x`. This should drastically reduce the occurrence of this class of error.
|
||||
|
||||
### 3. First-class Postgres support https://github.com/analyst-collective/dbt/pull/183
|
||||
|
||||
With this release, Postgres became a first-class dbt target. You can configure a postgres database target in your `~/.dbt/profiles.yml` file:
|
||||
|
||||
```yaml
|
||||
warehouse:
|
||||
outputs:
|
||||
dev:
|
||||
type: postgres # configure a target for Postgres
|
||||
host: localhost
|
||||
user: Drew
|
||||
....
|
||||
run-target: dev
|
||||
```
|
||||
|
||||
While Redshift is built on top of Postgres, the two are subtly different. For instance, Redshift supports sort and dist keys, while Postgres does not! dbt will use the database target `type` parameter to generate the appropriate SQL for the target database.
|
||||
|
||||
### 4. Root-level configs https://github.com/analyst-collective/dbt/issues/161
|
||||
|
||||
Configurations in `dbt_project.yml` can now be declared at the `models:` level. These configurations will apply to the primary project, as well as any dependency projects. This feature is particularly useful for setting pre- or post- hooks that run for *every* model. In practice, this looks like:
|
||||
|
||||
```yaml
|
||||
name: 'My DBT Project'
|
||||
|
||||
models:
|
||||
post-hook:
|
||||
- "grant select on {{this}} to looker_user" # Applied to 'My DBT Project' and 'Snowplow' dependency
|
||||
'My DBT Project':
|
||||
enabled: true
|
||||
'Snowplow':
|
||||
enabled: true
|
||||
```
|
||||
|
||||
### 5. --threads CLI option https://github.com/analyst-collective/dbt/issues/143
|
||||
|
||||
The number of threads that DBT uses can now be overridden with a CLI argument. The number of threads used must be between 1 and 8.
|
||||
|
||||
```bash
|
||||
dbt run --threads 1 # fine
|
||||
# or
|
||||
dbt run --threads 4 # great
|
||||
# or
|
||||
dbt run --threads 42 # too many!
|
||||
```
|
||||
|
||||
In addition to this new CLI argument, the output from multi-threaded dbt runs should be a little more orderly now. Models won't show as `START`ed until they're actually queued to run. Previously, the output here was a little confusing. Happy threading!
|
||||
|
||||
### Upgrading
|
||||
|
||||
To upgrade to version 0.5.1 of dbt, run:
|
||||
|
||||
``` bash
|
||||
pip install --upgrade dbt
|
||||
```
|
||||
|
||||
### And another thing
|
||||
|
||||
- Join us on [slack](http://ac-slackin.herokuapp.com/) with questions or comments
|
||||
|
||||
Made with ♥️ by 🐟🏙 📈
|
||||
|
||||
---
|
||||
|
||||
### 0. tl;dr
|
||||
|
||||
- use a temp table when executing incremental models
|
||||
- arbitrary configuration (using config variables)
|
||||
- specify branches for dependencies
|
||||
- more & better docs
|
||||
|
||||
### 1. new incremental model generation https://github.com/analyst-collective/dbt/issues/138
|
||||
|
||||
In previous versions of dbt, an edge case existed which caused the `sql_where` query to select different rows in the `delete` and `insert` steps. As a result, it was possible to construct incremental models which would insert duplicate records into the specified table. With this release, DBT uses a temp table which will 1) circumvent this issue and 2) improve query performance. For more information, check out the GitHub issue: https://github.com/analyst-collective/dbt/issues/138
|
||||
|
||||
### 2. Arbitrary configuration https://github.com/analyst-collective/dbt/issues/146
|
||||
|
||||
Configuration in dbt is incredibly powerful: it is what allows models to change their behavior without changing their code. Previously, all configuration was done using built-in parameters, but that actually limits the user in the power of configuration.
|
||||
|
||||
With this release, you can inject variables from `dbt_project.yml` into your top-level and dependency models. In practice, variables work like this:
|
||||
|
||||
```yml
|
||||
# dbt_project.yml
|
||||
|
||||
models:
|
||||
my_project:
|
||||
vars:
|
||||
exclude_ip: '192.168.1.1'
|
||||
```
|
||||
|
||||
```sql
|
||||
-- filtered_events.sql
|
||||
|
||||
-- source code
|
||||
select * from public.events where ip_address != '{{ var("exclude_ip") }}'
|
||||
|
||||
-- compiles to
|
||||
select * from public.events where ip_address != '192.168.1.1'
|
||||
```
|
||||
|
||||
The `vars` parameter in `dbt_project.yml` is compiled, so you can use jinja templating there as well! The primary use case for this is specifying "input" models to a dependency.
|
||||
|
||||
Previously, dependencies used `ref(...)` to select from a project's base models. That interface was brittle, and the idea that dependency code had unbridled access to all of your top-level models made us a little uneasy. As of this release, we're deprecating the ability for dependencies to `ref(...)` top-level models. Instead, the recommended way for this to work is with vars! An example:
|
||||
|
||||
```sql
|
||||
-- dbt_modules/snowplow/models/events.sql
|
||||
|
||||
select * from {{ var('snowplow_events_table') }}
|
||||
```
|
||||
|
||||
and
|
||||
|
||||
```yml
|
||||
models:
|
||||
Snowplow:
|
||||
vars:
|
||||
snowplow_events_table: "{{ ref('base_events') }}"
|
||||
```
|
||||
|
||||
This effectively mirrors the previous behavior, but it much more explicit about what's happening under the hood!
|
||||
|
||||
### 3. specify a dependency branch https://github.com/analyst-collective/dbt/pull/165
|
||||
|
||||
With this release, you can point DBT to a specific branch of a dependency repo. The syntax looks like this:
|
||||
|
||||
```
|
||||
repositories:
|
||||
- https://github.com/analyst-collective/dbt-audit.git@development # use the "development" branch
|
||||
```
|
||||
|
||||
### 4. More & Better Docs!
|
||||
|
||||
Check em out! And let us know if there's anything you think we can improve upon!
|
||||
|
||||
|
||||
### Upgrading
|
||||
|
||||
To upgrade to version 0.5.0 of dbt, run:
|
||||
|
||||
``` bash
|
||||
pip install --upgrade dbt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 0. tl;dr
|
||||
|
||||
- `--version` command
|
||||
- pre- and post- run hooks
|
||||
- windows support
|
||||
- event tracking
|
||||
|
||||
|
||||
### 1. --version https://github.com/analyst-collective/dbt/issues/135
|
||||
|
||||
The `--version` command was added to help aid debugging. Further, organizations can use it to ensure that everyone in their org is up-to-date with dbt.
|
||||
|
||||
```bash
|
||||
$ dbt --version
|
||||
installed version: 0.4.7
|
||||
latest version: 0.4.7
|
||||
Up to date!
|
||||
```
|
||||
|
||||
### 2. pre-and-post-hooks https://github.com/analyst-collective/dbt/pull/147
|
||||
|
||||
With this release, you can now specify `pre-` and `post-` hooks that are run before and after a model is run, respectively. Hooks are useful for running `grant` statements, inserting a log of runs into an audit table, and more! Here's an example of a grant statement implemented using a post-hook:
|
||||
|
||||
```yml
|
||||
models:
|
||||
my_project:
|
||||
post-hook: "grant select on table {{this}} to looker_user"
|
||||
my_model:
|
||||
materialized: view
|
||||
some_model:
|
||||
materialized: table
|
||||
post-hook: "insert into my_audit_table (model_name, run_at) values ({{this.name}}, getdate())"
|
||||
```
|
||||
|
||||
Hooks are recursively appended, so the `my_model` model will only receive the `grant select...` hook, whereas the `some_model` model will receive _both_ the `grant select...` and `insert into...` hooks.
|
||||
|
||||
Finally, note that the `grant` statement uses the (hopefully familiar) `{{this}}` syntax whereas the `insert` statement uses the `{{this.name}}` syntax. When DBT creates a model:
|
||||
- A temp table is created
|
||||
- The original model is dropped
|
||||
- The temp table is renamed to the final model name
|
||||
|
||||
DBT will intelligently uses the right table/view name when you invoke `{{this}}`, but you have a couple of more specific options available if you need them:
|
||||
|
||||
```
|
||||
{{this}} : "schema"."table__dbt_tmp"
|
||||
{{this.schema}}: "schema"
|
||||
{{this.table}}: "table__dbt_tmp"
|
||||
{{this.name}}: "table"
|
||||
```
|
||||
|
||||
### 3. Event tracking https://github.com/analyst-collective/dbt/issues/89
|
||||
|
||||
We want to build the best version of DBT possible, and a crucial part of that is understanding how users work with DBT. To this end, we've added some really simple event tracking to DBT (using Snowplow). We do not track credentials, model contents or model names (we consider these private, and frankly none of our business). This release includes basic event tracking that reports 1) when dbt is invoked 2) when models are run, and 3) basic platform information (OS + python version). The schemas for these events can be seen [here](https://github.com/analyst-collective/dbt/tree/development/events/schemas/com.fishtownanalytics)
|
||||
|
||||
You can opt out of event tracking at any time by adding the following to the top of you `~/.dbt/profiles.yml` file:
|
||||
|
||||
```yaml
|
||||
config:
|
||||
send_anonymous_usage_stats: False
|
||||
```
|
||||
|
||||
### 4. Windows support https://github.com/analyst-collective/dbt/pull/154
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
dbt v0.4.1 provides improvements to incremental models, performance improvements, and ssh support for db connections.
|
||||
|
||||
### 0. tl;dr
|
||||
|
||||
- slightly modified dbt command structure
|
||||
- `unique_key` setting for incremental models
|
||||
- connect to your db over ssh
|
||||
- no more model-defaults
|
||||
- multithreaded schema tests
|
||||
|
||||
If you encounter an SSL/cryptography error while upgrading to this version of dbt, check that your version of pip is up-to-date
|
||||
|
||||
```bash
|
||||
pip install -U pip
|
||||
pip install -U dbt
|
||||
```
|
||||
|
||||
### 1. new dbt command structure https://github.com/analyst-collective/dbt/issues/109
|
||||
```bash
|
||||
# To run models
|
||||
dbt run # same as before
|
||||
|
||||
# to dry-run models
|
||||
dbt run --dry # previously dbt test
|
||||
|
||||
# to run schema tests
|
||||
dbt test # previously dbt test --validate
|
||||
```
|
||||
|
||||
### 2. Incremental model improvements https://github.com/analyst-collective/dbt/issues/101
|
||||
|
||||
Previously, dbt calculated "new" incremental records to insert by querying for rows which matched some `sql_where` condition defined in the model configuration. This works really well for atomic datasets like a clickstream event log -- once inserted, these records will never change. Other datasets, like a sessions table comprised of many pageviews for many users, can change over time. Consider the following scenario:
|
||||
|
||||
User 1 Session 1 Event 1 @ 12:00
|
||||
User 1 Session 1 Event 2 @ 12:01
|
||||
-- dbt run --
|
||||
User 1 Session 1 Event 3 @ 12:02
|
||||
|
||||
In this scenario, there are two possible outcomes depending on the `sql_where` chosen: 1) Event 3 does not get included in the Session 1 record for User 1 (bad), or 2) Session 1 is duplicated in the sessions table (bad). Both of these outcomes are inadequate!
|
||||
|
||||
With this release, you can now add a `unique_key` expression to an incremental model config. Records matching the `unique_key` will be `delete`d from the incremental table, then `insert`ed as usual. This makes it possible to maintain data accuracy without recalculating the entire table on every run.
|
||||
|
||||
The `unique_key` can be any expression which uniquely defines the row, eg:
|
||||
```yml
|
||||
sessions:
|
||||
materialized: incremental
|
||||
sql_where: "session_end_tstamp > (select max(session_end_tstamp) from {{this}})"
|
||||
unique_key: user_id || session_index
|
||||
```
|
||||
|
||||
### 3. Run schema validations concurrently https://github.com/analyst-collective/dbt/issues/100
|
||||
|
||||
The `threads` run-target config now applies to schema validations too. Try it with `dbt test`
|
||||
|
||||
### 4. Connect to database over ssh https://github.com/analyst-collective/dbt/issues/93
|
||||
|
||||
Add an `ssh-host` parameter to a run-target to connect to a database over ssh. The `ssh-host` parameter should be the name of a `Host` in your `~/.ssh/config` file [more info](http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/)
|
||||
|
||||
```yml
|
||||
warehouse:
|
||||
outputs:
|
||||
dev:
|
||||
type: redshift
|
||||
host: my-redshift.amazonaws.com
|
||||
port: 5439
|
||||
user: my-user
|
||||
pass: my-pass
|
||||
dbname: my-db
|
||||
schema: dbt_dbanin
|
||||
threads: 8
|
||||
ssh-host: ssh-host-name # <------ Add this line
|
||||
run-target: dev
|
||||
```
|
||||
|
||||
### Remove the model-defaults config https://github.com/analyst-collective/dbt/issues/111
|
||||
|
||||
The `model-defaults` config doesn't make sense in a dbt world with dependencies. To apply default configs to your package, add the configs immediately under the package definition:
|
||||
|
||||
```yml
|
||||
models:
|
||||
My_Package:
|
||||
enabled: true
|
||||
materialized: table
|
||||
snowplow:
|
||||
...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## dbt v0.4.0
|
||||
|
||||
dbt v0.4.0 provides new ways to materialize models in your database.
|
||||
|
||||
### 0. tl;dr
|
||||
- new types of materializations: `incremental` and `ephemeral`
|
||||
- if upgrading, change `materialized: true|false` to `materialized: table|view|incremental|ephemeral`
|
||||
- optionally specify model configs within the SQL file
|
||||
|
||||
### 1. Feature: `{{this}}` template variable https://github.com/analyst-collective/dbt/issues/81
|
||||
The `{{this}}` template variable expands to the name of the model being compiled. For example:
|
||||
|
||||
```sql
|
||||
-- my_model.sql
|
||||
select 'the fully qualified name of this model is {{ this }}'
|
||||
-- compiles to
|
||||
select 'the fully qualified name of this model is "the_schema"."my_model"'
|
||||
```
|
||||
|
||||
### 2. Feature: `materialized: incremental` https://github.com/analyst-collective/dbt/pull/90
|
||||
|
||||
After initially creating a table, incremental models will `insert` new records into the table on subsequent runs. This drastically speeds up execution time for large, append-only datasets.
|
||||
|
||||
Each execution of dbt run will:
|
||||
- create the model table if it doesn't exist
|
||||
- insert new records into the table
|
||||
|
||||
New records are identified by a `sql_where` model configuration option. In practice, this looks like:
|
||||
|
||||
```yml
|
||||
|
||||
sessions:
|
||||
materialized: incremental
|
||||
sql_where: "session_start_time > (select max(session_start_time) from {{this}})"
|
||||
```
|
||||
|
||||
There are a couple of new things here. Previously, `materialized` could either be set to `true` or `false`. Now, the valid options include `view`, `table,` `incremental`, and `ephemeral` (more on this last one below). Also note that incremental models generally require use of the {{this}} template variable to identify new records.
|
||||
|
||||
The `sql_where` field is supplied as a `where` condition on a subquery containing the model definition. This resultset is then inserted into the target model. This looks something like:
|
||||
|
||||
```sql
|
||||
insert into schema.model (
|
||||
select * from (
|
||||
-- compiled model definition
|
||||
) where {{sql_where}}
|
||||
)
|
||||
```
|
||||
|
||||
### 3. Feature: `materialized: ephemeral` https://github.com/analyst-collective/dbt/issues/78
|
||||
|
||||
Ephemeral models are injected as CTEs (`with` statements) into any model that `ref`erences them. Ephemeral models are part of the dependency graph and generally function like any other model, except ephemeral models are not compiled to their own files or directly created in the database. This is useful for intermediary models which are shared by other downstream models, but shouldn't be queried directly from outside of dbt.
|
||||
|
||||
To make a model ephemeral:
|
||||
|
||||
```yml
|
||||
employees:
|
||||
materialized: ephemeral
|
||||
```
|
||||
|
||||
Suppose you wanted to exclude `employees` from your `users` table, but you don't want to clutter your analytics schema with an `employees` table.
|
||||
|
||||
```sql
|
||||
-- employees.sql
|
||||
select * from public.employees where is_deleted = false
|
||||
|
||||
-- users.sql
|
||||
select *
|
||||
from {{ref('users')}}
|
||||
where email not in (select email from {{ref('employees')}})
|
||||
```
|
||||
|
||||
The compiled SQL would look something like:
|
||||
```sql
|
||||
with __dbt__CTE__employees as (
|
||||
select * from public.employees where is_deleted = false
|
||||
)
|
||||
select *
|
||||
from users
|
||||
where email not in (select email from __dbt__CTE__employees)
|
||||
```
|
||||
|
||||
Ephemeral models play nice with other ephemeral models, incremental models, and regular table/view models. Feel free to mix and match different materialization options to optimize for performance and simplicity.
|
||||
|
||||
|
||||
### 4. Feature: In-model configs https://github.com/analyst-collective/dbt/issues/88
|
||||
|
||||
Configurations can now be specified directly inside of models. These in-model configs work exactly the same as configs inside of the dbt_project.yml file.
|
||||
|
||||
An in-model-config looks like this:
|
||||
|
||||
```sql
|
||||
-- users.sql
|
||||
|
||||
-- python function syntax
|
||||
{{ config(materialized="incremental", sql_where="id > (select max(id) from {{this}})") }}
|
||||
-- OR json syntax
|
||||
{{
|
||||
config({"materialized:" "incremental", "sql_where" : "id > (select max(id) from {{this}})"})
|
||||
}}
|
||||
|
||||
select * from public.users
|
||||
```
|
||||
|
||||
The config resolution order is:
|
||||
1. dbt_project.yml `model-defaults`
|
||||
2. in-model config
|
||||
3. dbt_project.yml `models` config
|
||||
|
||||
### 5. Fix: dbt seed null values https://github.com/analyst-collective/dbt/issues/102
|
||||
|
||||
Previously, `dbt seed` would insert empty CSV cells as `"None"`, whereas they should have been `NULL`. Not anymore!
|
||||
|
||||
|
||||
---
|
||||
|
||||
## dbt v0.3.0
|
||||
|
||||
Version 0.3.0 comes with the following updates:
|
||||
|
||||
#### 1. Parallel model creation https://github.com/analyst-collective/dbt/pull/83
|
||||
dbt will analyze the model dependency graph and can create models in parallel if possible. In practice, this can significantly speed up the amount of time it takes to complete `dbt run`. The number of threads dbt uses must be between 1 and 8. To configure the number of threads dbt uses, add the `threads` key to your dbt target in `~/.dbt/profiles.yml`, eg:
|
||||
|
||||
```yml
|
||||
user:
|
||||
outputs:
|
||||
my-redshift:
|
||||
type: redshift
|
||||
threads: 4 # execute up to 4 models concurrently
|
||||
host: localhost
|
||||
...
|
||||
run-target: my-redshift
|
||||
```
|
||||
|
||||
For a complete example, check out [a sample profiles.yml file](https://github.com/analyst-collective/dbt/blob/master/sample.profiles.yml)
|
||||
|
||||
#### 2. Fail only within a single dependency chain https://github.com/analyst-collective/dbt/issues/63
|
||||
If a model cannot be created, it won't crash the entire `dbt run` process. The errant model will fail and all of its descendants will be "skipped". Other models which do not depend on the failing model (or its descendants) will still be created.
|
||||
|
||||
#### 3. Logging https://github.com/analyst-collective/dbt/issues/64, https://github.com/analyst-collective/dbt/issues/65
|
||||
dbt will log output from the `dbt run` and `dbt test` commands to a configurable logging directory. By default, this directory is called `logs/`. The log filename is `dbt.log` and it is rotated on a daily basic. Logs are kept for 7 days.
|
||||
|
||||
To change the name of the logging directory, add the following line to your `dbt_project.yml` file:
|
||||
```yml
|
||||
log-path: "my-logging-directory" # will write logs to my-logging-directory/dbt.log
|
||||
```
|
||||
|
||||
#### 4. Minimize time models are unavailable in the database https://github.com/analyst-collective/dbt/issues/68
|
||||
Previously, dbt would create models by:
|
||||
1. dropping the existing model
|
||||
2. creating the new model
|
||||
|
||||
This resulted in a significant amount of time in which the model was inaccessible to the outside world. Now, dbt creates models by:
|
||||
1. creating a temporary model `{model-name}__dbt_tmp`
|
||||
2. dropping the existing model
|
||||
3. renaming the tmp model name to the actual model name
|
||||
|
||||
#### 5. Arbitrarily deep nesting https://github.com/analyst-collective/dbt/issues/50
|
||||
Previously, all models had to be located in a directory matching `models/{model group}/{model_name}.sql`. Now, these models can be nested arbitrarily deeply within a given dbt project. For instance, `models/snowplow/sessions/transformed/transformed_sessions.sql` is a totally valid model location with this release.
|
||||
|
||||
To configure these deeply-nested models, just nest the config options within the `dbt_project.yml` file. The only caveat is that you need to specify the dbt project name as the first key under the `models` object, ie:
|
||||
|
||||
```yml
|
||||
models:
|
||||
'Your Project Name':
|
||||
snowplow:
|
||||
sessions:
|
||||
transformed:
|
||||
transformed_sessions:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
More information is available on the [issue](https://github.com/analyst-collective/dbt/issues/50) and in the [sample dbt_project.yml file](https://github.com/analyst-collective/dbt/blob/master/sample.dbt_project.yml)
|
||||
|
||||
#### 6. don't try to create a schema if it already exists https://github.com/analyst-collective/dbt/issues/66
|
||||
dbt run would execute `create schema if not exists {schema}`. This would fail if the dbt user didn't have sufficient permissions to create the schema, even if the schema already existed! Now, dbt checks for the schema existence and only attempts to create the schema if it doesn't already exist.
|
||||
|
||||
#### 7. Semantic Versioning
|
||||
The previous release of dbt was v0.2.3.0 which isn't a semantic version. This and all future dbt releases will conform to semantic version in the format `{major}.{minor}.{patch}`.
|
||||
---
|
||||
|
||||
## dbt v0.2.3.0
|
||||
Version 0.2.3.0 of dbt comes with the following updates:
|
||||
|
||||
#### 1. Fix: Flip referential integrity arguments (breaking)
|
||||
Referential integrity validations in a `schema.yml` file were previously defined relative to the *parent* table:
|
||||
```yaml
|
||||
account:
|
||||
constraints:
|
||||
relationships:
|
||||
- {from: id, to: people, field: account_id}
|
||||
```
|
||||
|
||||
Now, these validations are specified relative to the *child* table
|
||||
```yaml
|
||||
people:
|
||||
constraints:
|
||||
relationships:
|
||||
- {from: account_id, to: accounts, field: id}
|
||||
```
|
||||
|
||||
For more information, run `dbt test -h`
|
||||
|
||||
#### 2. Feature: seed tables from a CSV
|
||||
Previously, auxiliary data needed to be shoehorned into a view comprised of union statements, eg.
|
||||
```sql
|
||||
select 22 as "type", 'Chat Transcript' as type_name, 'chatted via olark' as event_name union all
|
||||
select 21, 'Custom Redirect', 'clicked a custom redirect' union all
|
||||
select 6, 'Email', 'email sent' union all
|
||||
...
|
||||
```
|
||||
|
||||
That's not a scalable solution. Now you can load CSV files into your data warehouse:
|
||||
1. Add a CSV file (with a header) to the `data/` directory
|
||||
2. Run `dbt seed` to create a table from the CSV file!
|
||||
3. The table name with be the filename (sans `.csv`) and it will be placed in your `run-target`'s schema
|
||||
|
||||
Subsequent calls to `dbt seed` will truncate the seeded tables (if they exist) and re-insert the data. If the table schema changes, you can run `dbt seed --drop-existing` to drop the table and recreate it.
|
||||
|
||||
For more information, run `dbt seed -h`
|
||||
|
||||
#### 3. Feature: compile analytical queries
|
||||
|
||||
Versioning your SQL models with dbt is a great practice, but did you know that you can also version your analyses? Any SQL files in the `analysis/` dir will be compiled (ie. table names will be interpolated) and placed in the `target/build-analysis/` directory. These analytical queries will _not_ be run against your data warehouse with `dbt run` -- you should copy/paste them into the data analysis tool of your choice.
|
||||
|
||||
#### 4. Feature: accepted values validation
|
||||
|
||||
In your `schema.yml` file, you can now add `accepted-values` validations:
|
||||
```yaml
|
||||
accounts:
|
||||
constraints:
|
||||
accepted-values:
|
||||
- {field: type, values: ['paid', 'free']}
|
||||
```
|
||||
|
||||
This test will determine how many records in the `accounts` model have a `type` other than `paid` or `free`.
|
||||
|
||||
#### 5. Feature: switch profiles and targets on the command line
|
||||
|
||||
Switch between profiles with `--profile [profile-name]` and switch between run-targets with `--target [target-name]`.
|
||||
|
||||
Targets should be something like "prod" or "dev" and profiles should be something like "my-org" or "my-side-project"
|
||||
|
||||
```yaml
|
||||
side-project:
|
||||
outputs:
|
||||
prod:
|
||||
type: redshift
|
||||
host: localhost
|
||||
port: 5439
|
||||
user: Drew
|
||||
pass:
|
||||
dbname: data_generator
|
||||
schema: ac_drew
|
||||
dev:
|
||||
type: redshift
|
||||
host: localhost
|
||||
port: 5439
|
||||
user: Drew
|
||||
pass:
|
||||
dbname: data_generator
|
||||
schema: ac_drew_dev
|
||||
run-target: dev
|
||||
```
|
||||
|
||||
To compile models using the `dev` environment of my `side-project` profile:
|
||||
`$ dbt compile --profile side-project --target dev`
|
||||
or for `prod`:
|
||||
`$ dbt compile --profile side-project --target prod`
|
||||
|
||||
You can also add a "profile' config to the `dbt_config.yml` file to fix a dbt project to a specific profile:
|
||||
|
||||
```yaml
|
||||
...
|
||||
test-paths: ["test"]
|
||||
data-paths: ["data"]
|
||||
|
||||
# Fix this project to the "side-project" profile
|
||||
# You can still use --target to switch between environments!
|
||||
profile: "side-project"
|
||||
|
||||
model-defaults:
|
||||
....
|
||||
```
|
||||
# dbt Core Changelog
|
||||
|
||||
- This file provides a full account of all changes to `dbt-core` and `dbt-postgres`
|
||||
- Changes are listed under the (pre)release in which they first appear. Subsequent releases include changes from previous releases.
|
||||
- "Breaking changes" listed under a version may require action from end users or external maintainers when upgrading to that version.
|
||||
- Do not edit this file directly. This file is auto-generated using [changie](https://github.com/miniscruff/changie). For details on how to document a change, see [the contributing guide](https://github.com/dbt-labs/dbt-core/blob/main/CONTRIBUTING.md#adding-changelog-entry)
|
||||
|
||||
|
||||
## dbt-core 1.1.0-b1 - March 22, 2022
|
||||
### Breaking Changes
|
||||
- **Relevant to maintainers of adapter plugins _only_:** The abstractmethods `get_response` and `execute` now only return a `connection.AdapterReponse` in type hints. (Previously, they could return a string.) We encourage you to update your methods to return an object of class `AdapterResponse`, or implement a subclass specific to your adapter ([#4499](https://github.com/dbt-labs/dbt-core/issues/4499), [#4869](https://github.com/dbt-labs/dbt-core/pull/4869))
|
||||
### Features
|
||||
- Change behaviour of `non_null` test so that it only `select`s all columns if `--store-failures` is enabled. ([#4769](https://github.com/dbt-labs/dbt-core/issues/4769), [#4777](https://github.com/dbt-labs/dbt-core/pull/4777))
|
||||
- Testing framework for dbt adapter testing ([#4730](https://github.com/dbt-labs/dbt-core/issues/4730), [#4846](https://github.com/dbt-labs/dbt-core/pull/4846))
|
||||
- Allow unique key to take a list implementation for postgres/redshift ([#4738](https://github.com/dbt-labs/dbt-core/issues/4738), [#4858](https://github.com/dbt-labs/dbt-core/pull/4858))
|
||||
- Added Support for Semantic Versioning ([#4453](https://github.com/dbt-labs/dbt-core/issues/4453), [#4644](https://github.com/dbt-labs/dbt-core/pull/4644))
|
||||
- New Dockerfile to support specific db adapters and platforms. See docker/README.md for details ([#4495](https://github.com/dbt-labs/dbt-core/issues/4495), [#4487](https://github.com/dbt-labs/dbt-core/pull/4487))
|
||||
- Allow unique_key to take a list ([#2479](https://github.com/dbt-labs/dbt-core/issues/2479), [#4618](https://github.com/dbt-labs/dbt-core/pull/4618))
|
||||
- Add `--quiet` global flag and `print` Jinja function ([#3451](https://github.com/dbt-labs/dbt-core/issues/3451), [#4701](https://github.com/dbt-labs/dbt-core/pull/4701))
|
||||
- Add space before justification periods ([#4737](https://github.com/dbt-labs/dbt-core/issues/4737), [#4744](https://github.com/dbt-labs/dbt-core/pull/4744))
|
||||
### Fixes
|
||||
- Fix bug causing empty node level meta, snapshot config errors ([#4459](https://github.com/dbt-labs/dbt-core/issues/4459), [#4726](https://github.com/dbt-labs/dbt-core/pull/4726))
|
||||
- Catch all Requests Exceptions on deps install to attempt retries. Also log the exceptions hit. ([#4849](https://github.com/dbt-labs/dbt-core/issues/4849), [#4865](https://github.com/dbt-labs/dbt-core/pull/4865))
|
||||
- Use cli_vars instead of context to create package and selector renderers ([#4876](https://github.com/dbt-labs/dbt-core/issues/4876), [#4878](https://github.com/dbt-labs/dbt-core/pull/4878))
|
||||
- depend on new dbt-extractor version with fixed github links ([#4891](https://github.com/dbt-labs/dbt-core/issues/4891), [#4890](https://github.com/dbt-labs/dbt-core/pull/4890))
|
||||
- Update bumpervsion config to stop looking for missing setup.py ([#-1](https://github.com/dbt-labs/dbt-core/issues/-1), [#4896](https://github.com/dbt-labs/dbt-core/pull/4896))
|
||||
- Corrected permissions settings for docker release workflow ([#4902](https://github.com/dbt-labs/dbt-core/issues/4902), [#4903](https://github.com/dbt-labs/dbt-core/pull/4903))
|
||||
- User wasn't asked for permission to overwite a profile entry when running init inside an existing project ([#4375](https://github.com/dbt-labs/dbt-core/issues/4375), [#4447](https://github.com/dbt-labs/dbt-core/pull/4447))
|
||||
- Add project name validation to `dbt init` ([#4490](https://github.com/dbt-labs/dbt-core/issues/4490), [#4536](https://github.com/dbt-labs/dbt-core/pull/4536))
|
||||
- Allow override of string and numeric types for adapters. ([#4603](https://github.com/dbt-labs/dbt-core/issues/4603), [#4604](https://github.com/dbt-labs/dbt-core/pull/4604))
|
||||
- A change in secret environment variables won't trigger a full reparse ([#4650](https://github.com/dbt-labs/dbt-core/issues/4650), [#4665](https://github.com/dbt-labs/dbt-core/pull/4665))
|
||||
- Fix misspellings and typos in docstrings ([#4904](https://github.com/dbt-labs/dbt-core/issues/4904), [#4545](https://github.com/dbt-labs/dbt-core/pull/4545))
|
||||
### Under the Hood
|
||||
- Automate changelog generation with changie ([#4652](https://github.com/dbt-labs/dbt-core/issues/4652), [#4743](https://github.com/dbt-labs/dbt-core/pull/4743))
|
||||
- Fix broken links for changelog generation and tweak GHA to only post a comment once when changelog entry is missing. ([#4848](https://github.com/dbt-labs/dbt-core/issues/4848), [#4857](https://github.com/dbt-labs/dbt-core/pull/4857))
|
||||
- Add support for Python 3.10 ([#4562](https://github.com/dbt-labs/dbt-core/issues/4562), [#4866](https://github.com/dbt-labs/dbt-core/pull/4866))
|
||||
- Enable more dialects to snapshot sources with added columns, even those that don't support boolean datatypes ([#4488](https://github.com/dbt-labs/dbt-core/issues/4488), [#4871](https://github.com/dbt-labs/dbt-core/pull/4871))
|
||||
- Testing cleanup ([#3648](https://github.com/dbt-labs/dbt-core/issues/3648), [#4509](https://github.com/dbt-labs/dbt-core/pull/4509))
|
||||
- Clean up test deprecation warnings ([#3988](https://github.com/dbt-labs/dbt-core/issues/3988), [#4556](https://github.com/dbt-labs/dbt-core/pull/4556))
|
||||
- Use mashumaro for serialization in event logging ([#4504](https://github.com/dbt-labs/dbt-core/issues/4504), [#4505](https://github.com/dbt-labs/dbt-core/pull/4505))
|
||||
- Drop support for Python 3.7.0 + 3.7.1 ([#4584](https://github.com/dbt-labs/dbt-core/issues/4584), [#4585](https://github.com/dbt-labs/dbt-core/pull/4585))
|
||||
- Drop support for Python <3.7.2 ([#4584](https://github.com/dbt-labs/dbt-core/issues/4584), [#4643](https://github.com/dbt-labs/dbt-core/pull/4643))
|
||||
- Re-format codebase (except tests) using pre-commit hooks ([#3195](https://github.com/dbt-labs/dbt-core/issues/3195), [#4697](https://github.com/dbt-labs/dbt-core/pull/4697))
|
||||
- Add deps module README ([#4904](https://github.com/dbt-labs/dbt-core/issues/4904), [#4686](https://github.com/dbt-labs/dbt-core/pull/4686))
|
||||
- Initial conversion of tests to pytest ([#4690](https://github.com/dbt-labs/dbt-core/issues/4690), [#4691](https://github.com/dbt-labs/dbt-core/pull/4691))
|
||||
- Fix errors in Windows for tests/functions ([#4782](https://github.com/dbt-labs/dbt-core/issues/4782), [#4767](https://github.com/dbt-labs/dbt-core/pull/4767))
|
||||
### Docs
|
||||
- Resolve errors related to operations preventing DAG from generating in the docs. Also patch a spark issue to allow search to filter accurately past the missing columns. ([#4578](https://github.com/dbt-labs/dbt-core/issues/4578), [#4763](https://github.com/dbt-labs/dbt-core/pull/4763))
|
||||
### Contributors
|
||||
- [@NiallRees](https://github.com/NiallRees) ([#4447](https://github.com/dbt-labs/dbt-core/pull/4447))
|
||||
- [@alswang18](https://github.com/alswang18) ([#4644](https://github.com/dbt-labs/dbt-core/pull/4644))
|
||||
- [@amirkdv](https://github.com/amirkdv) ([#4536](https://github.com/dbt-labs/dbt-core/pull/4536))
|
||||
- [@ehmartens](https://github.com/ehmartens) ([#4701](https://github.com/dbt-labs/dbt-core/pull/4701))
|
||||
- [@joellabes](https://github.com/joellabes) ([#4744](https://github.com/dbt-labs/dbt-core/pull/4744))
|
||||
- [@kazanzhy](https://github.com/kazanzhy) ([#4545](https://github.com/dbt-labs/dbt-core/pull/4545))
|
||||
- [@mdesmet](https://github.com/mdesmet) ([#4604](https://github.com/dbt-labs/dbt-core/pull/4604))
|
||||
- [@versusfacit](https://github.com/versusfacit) ([#4869](https://github.com/dbt-labs/dbt-core/pull/4869))
|
||||
- [@willbowditch](https://github.com/willbowditch) ([#4777](https://github.com/dbt-labs/dbt-core/pull/4777))
|
||||
|
||||
|
||||
## Previous Releases
|
||||
|
||||
For information on prior major and minor releases, see their changelogs:
|
||||
|
||||
* [1.0](https://github.com/dbt-labs/dbt-core/blob/1.0.latest/CHANGELOG.md)
|
||||
* [0.21](https://github.com/dbt-labs/dbt-core/blob/0.21.latest/CHANGELOG.md)
|
||||
* [0.20](https://github.com/dbt-labs/dbt-core/blob/0.20.latest/CHANGELOG.md)
|
||||
* [0.19](https://github.com/dbt-labs/dbt-core/blob/0.19.latest/CHANGELOG.md)
|
||||
* [0.18](https://github.com/dbt-labs/dbt-core/blob/0.18.latest/CHANGELOG.md)
|
||||
* [0.17](https://github.com/dbt-labs/dbt-core/blob/0.17.latest/CHANGELOG.md)
|
||||
* [0.16](https://github.com/dbt-labs/dbt-core/blob/0.16.latest/CHANGELOG.md)
|
||||
* [0.15](https://github.com/dbt-labs/dbt-core/blob/0.15.latest/CHANGELOG.md)
|
||||
* [0.14](https://github.com/dbt-labs/dbt-core/blob/0.14.latest/CHANGELOG.md)
|
||||
* [0.13](https://github.com/dbt-labs/dbt-core/blob/0.13.latest/CHANGELOG.md)
|
||||
* [0.12](https://github.com/dbt-labs/dbt-core/blob/0.12.latest/CHANGELOG.md)
|
||||
* [0.11 and earlier](https://github.com/dbt-labs/dbt-core/blob/0.11.latest/CHANGELOG.md)
|
||||
|
||||
239
CONTRIBUTING.md
Normal file
239
CONTRIBUTING.md
Normal file
@@ -0,0 +1,239 @@
|
||||
# Contributing to `dbt`
|
||||
|
||||
1. [About this document](#about-this-document)
|
||||
2. [Proposing a change](#proposing-a-change)
|
||||
3. [Getting the code](#getting-the-code)
|
||||
4. [Setting up an environment](#setting-up-an-environment)
|
||||
5. [Running `dbt` in development](#running-dbt-in-development)
|
||||
6. [Testing](#testing)
|
||||
7. [Submitting a Pull Request](#submitting-a-pull-request)
|
||||
|
||||
## About this document
|
||||
|
||||
This document is a guide intended for folks interested in contributing to `dbt-core`. Below, we document the process by which members of the community should create issues and submit pull requests (PRs) in this repository. It is not intended as a guide for using `dbt-core`, and it assumes a certain level of familiarity with Python concepts such as virtualenvs, `pip`, python modules, filesystems, and so on. This guide assumes you are using macOS or Linux and are comfortable with the command line.
|
||||
|
||||
If you're new to python development or contributing to open-source software, we encourage you to read this document from start to finish. If you get stuck, drop us a line in the `#dbt-core-development` channel on [slack](https://community.getdbt.com).
|
||||
|
||||
#### Adapters
|
||||
|
||||
If you have an issue or code change suggestion related to a specific database [adapter](https://docs.getdbt.com/docs/available-adapters); please refer to that supported databases seperate repo for those contributions.
|
||||
|
||||
### Signing the CLA
|
||||
|
||||
Please note that all contributors to `dbt-core` must sign the [Contributor License Agreement](https://docs.getdbt.com/docs/contributor-license-agreements) to have their Pull Request merged into the `dbt-core` codebase. If you are unable to sign the CLA, then the `dbt-core` maintainers will unfortunately be unable to merge your Pull Request. You are, however, welcome to open issues and comment on existing ones.
|
||||
|
||||
## Proposing a change
|
||||
|
||||
`dbt-core` is Apache 2.0-licensed open source software. `dbt-core` is what it is today because community members like you have opened issues, provided feedback, and contributed to the knowledge loop for the entire communtiy. Whether you are a seasoned open source contributor or a first-time committer, we welcome and encourage you to contribute code, documentation, ideas, or problem statements to this project.
|
||||
|
||||
### Defining the problem
|
||||
|
||||
If you have an idea for a new feature or if you've discovered a bug in `dbt-core`, the first step is to open an issue. Please check the list of [open issues](https://github.com/dbt-labs/dbt-core/issues) before creating a new one. If you find a relevant issue, please add a comment to the open issue instead of creating a new one. There are hundreds of open issues in this repository and it can be hard to know where to look for a relevant open issue. **The `dbt-core` maintainers are always happy to point contributors in the right direction**, so please err on the side of documenting your idea in a new issue if you are unsure where a problem statement belongs.
|
||||
|
||||
> **Note:** All community-contributed Pull Requests _must_ be associated with an open issue. If you submit a Pull Request that does not pertain to an open issue, you will be asked to create an issue describing the problem before the Pull Request can be reviewed.
|
||||
|
||||
### Discussing the idea
|
||||
|
||||
After you open an issue, a `dbt-core` maintainer will follow up by commenting on your issue (usually within 1-3 days) to explore your idea further and advise on how to implement the suggested changes. In many cases, community members will chime in with their own thoughts on the problem statement. If you as the issue creator are interested in submitting a Pull Request to address the issue, you should indicate this in the body of the issue. The `dbt-core` maintainers are _always_ happy to help contributors with the implementation of fixes and features, so please also indicate if there's anything you're unsure about or could use guidance around in the issue.
|
||||
|
||||
### Submitting a change
|
||||
|
||||
If an issue is appropriately well scoped and describes a beneficial change to the `dbt-core` codebase, then anyone may submit a Pull Request to implement the functionality described in the issue. See the sections below on how to do this.
|
||||
|
||||
The `dbt-core` maintainers will add a `good first issue` label if an issue is suitable for a first-time contributor. This label often means that the required code change is small, limited to one database adapter, or a net-new addition that does not impact existing functionality. You can see the list of currently open issues on the [Contribute](https://github.com/dbt-labs/dbt-core/contribute) page.
|
||||
|
||||
Here's a good workflow:
|
||||
- Comment on the open issue, expressing your interest in contributing the required code change
|
||||
- Outline your planned implementation. If you want help getting started, ask!
|
||||
- Follow the steps outlined below to develop locally. Once you have opened a PR, one of the `dbt-core` maintainers will work with you to review your code.
|
||||
- Add a test! Tests are crucial for both fixes and new features alike. We want to make sure that code works as intended, and that it avoids any bugs previously encountered. Currently, the best resource for understanding `dbt-core`'s [unit](test/unit) and [integration](test/integration) tests is the tests themselves. One of the maintainers can help by pointing out relevant examples.
|
||||
- Check your formatting and linting with [Flake8](https://flake8.pycqa.org/en/latest/#), [Black](https://github.com/psf/black), and the rest of the hooks we have in our [pre-commit](https://pre-commit.com/) [config](https://github.com/dbt-labs/dbt-core/blob/75201be9db1cb2c6c01fa7e71a314f5e5beb060a/.pre-commit-config.yaml).
|
||||
|
||||
In some cases, the right resolution to an open issue might be tangential to the `dbt-core` codebase. The right path forward might be a documentation update or a change that can be made in user-space. In other cases, the issue might describe functionality that the `dbt-core` maintainers are unwilling or unable to incorporate into the `dbt-core` codebase. When it is determined that an open issue describes functionality that will not translate to a code change in the `dbt-core` repository, the issue will be tagged with the `wontfix` label (see below) and closed.
|
||||
|
||||
### Using issue labels
|
||||
|
||||
The `dbt-core` maintainers use labels to categorize open issues. Most labels describe the domain in the `dbt-core` codebase germane to the discussion.
|
||||
|
||||
| tag | description |
|
||||
| --- | ----------- |
|
||||
| [triage](https://github.com/dbt-labs/dbt-core/labels/triage) | This is a new issue which has not yet been reviewed by a `dbt-core` maintainer. This label is removed when a maintainer reviews and responds to the issue. |
|
||||
| [bug](https://github.com/dbt-labs/dbt-core/labels/bug) | This issue represents a defect or regression in `dbt-core` |
|
||||
| [enhancement](https://github.com/dbt-labs/dbt-core/labels/enhancement) | This issue represents net-new functionality in `dbt-core` |
|
||||
| [good first issue](https://github.com/dbt-labs/dbt-core/labels/good%20first%20issue) | This issue does not require deep knowledge of the `dbt-core` codebase to implement. This issue is appropriate for a first-time contributor. |
|
||||
| [help wanted](https://github.com/dbt-labs/dbt-core/labels/help%20wanted) / [discussion](https://github.com/dbt-labs/dbt-core/labels/discussion) | Conversation around this issue in ongoing, and there isn't yet a clear path forward. Input from community members is most welcome. |
|
||||
| [duplicate](https://github.com/dbt-labs/dbt-core/issues/duplicate) | This issue is functionally identical to another open issue. The `dbt-core` maintainers will close this issue and encourage community members to focus conversation on the other one. |
|
||||
| [snoozed](https://github.com/dbt-labs/dbt-core/labels/snoozed) | This issue describes a good idea, but one which will probably not be addressed in a six-month time horizon. The `dbt-core` maintainers will revist these issues periodically and re-prioritize them accordingly. |
|
||||
| [stale](https://github.com/dbt-labs/dbt-core/labels/stale) | This is an old issue which has not recently been updated. Stale issues will periodically be closed by `dbt-core` maintainers, but they can be re-opened if the discussion is restarted. |
|
||||
| [wontfix](https://github.com/dbt-labs/dbt-core/labels/wontfix) | This issue does not require a code change in the `dbt-core` repository, or the maintainers are unwilling/unable to merge a Pull Request which implements the behavior described in the issue. |
|
||||
|
||||
#### Branching Strategy
|
||||
|
||||
`dbt-core` has three types of branches:
|
||||
|
||||
- **Trunks** are where active development of the next release takes place. There is one trunk named `main` at the time of writing this, and will be the default branch of the repository.
|
||||
- **Release Branches** track a specific, not yet complete release of `dbt-core`. Each minor version release has a corresponding release branch. For example, the `0.11.x` series of releases has a branch called `0.11.latest`. This allows us to release new patch versions under `0.11` without necessarily needing to pull them into the latest version of `dbt-core`.
|
||||
- **Feature Branches** track individual features and fixes. On completion they should be merged into the trunk branch or a specific release branch.
|
||||
|
||||
## Getting the code
|
||||
|
||||
### Installing git
|
||||
|
||||
You will need `git` in order to download and modify the `dbt-core` source code. On macOS, the best way to download git is to just install [Xcode](https://developer.apple.com/support/xcode/).
|
||||
|
||||
### External contributors
|
||||
|
||||
If you are not a member of the `dbt-labs` GitHub organization, you can contribute to `dbt-core` by forking the `dbt-core` repository. For a detailed overview on forking, check out the [GitHub docs on forking](https://help.github.com/en/articles/fork-a-repo). In short, you will need to:
|
||||
|
||||
1. fork the `dbt-core` repository
|
||||
2. clone your fork locally
|
||||
3. check out a new branch for your proposed changes
|
||||
4. push changes to your fork
|
||||
5. open a pull request against `dbt-labs/dbt` from your forked repository
|
||||
|
||||
### dbt Labs contributors
|
||||
|
||||
If you are a member of the `dbt-labs` GitHub organization, you will have push access to the `dbt-core` repo. Rather than forking `dbt-core` to make your changes, just clone the repository, check out a new branch, and push directly to that branch.
|
||||
|
||||
## Setting up an environment
|
||||
|
||||
There are some tools that will be helpful to you in developing locally. While this is the list relevant for `dbt-core` development, many of these tools are used commonly across open-source python projects.
|
||||
|
||||
### Tools
|
||||
|
||||
A short list of tools used in `dbt-core` testing that will be helpful to your understanding:
|
||||
|
||||
- [`tox`](https://tox.readthedocs.io/en/latest/) to manage virtualenvs across python versions. We currently target the latest patch releases for Python 3.7, Python 3.8, and Python 3.9
|
||||
- [`pytest`](https://docs.pytest.org/en/latest/) to discover/run tests
|
||||
- [`make`](https://users.cs.duke.edu/~ola/courses/programming/Makefiles/Makefiles.html) - but don't worry too much, nobody _really_ understands how make works and our Makefile is super simple
|
||||
- [`flake8`](https://flake8.pycqa.org/en/latest/) for code linting
|
||||
- [`black`](https://github.com/psf/black) for code formatting
|
||||
- [`mypy`](https://mypy.readthedocs.io/en/stable/) for static type checking
|
||||
- [Github Actions](https://github.com/features/actions)
|
||||
|
||||
A deep understanding of these tools in not required to effectively contribute to `dbt-core`, but we recommend checking out the attached documentation if you're interested in learning more about them.
|
||||
|
||||
#### virtual environments
|
||||
|
||||
We strongly recommend using virtual environments when developing code in `dbt-core`. We recommend creating this virtualenv
|
||||
in the root of the `dbt-core` repository. To create a new virtualenv, run:
|
||||
```sh
|
||||
python3 -m venv env
|
||||
source env/bin/activate
|
||||
```
|
||||
|
||||
This will create and activate a new Python virtual environment.
|
||||
|
||||
#### docker and docker-compose
|
||||
|
||||
Docker and docker-compose are both used in testing. Specific instructions for you OS can be found [here](https://docs.docker.com/get-docker/).
|
||||
|
||||
|
||||
#### postgres (optional)
|
||||
|
||||
For testing, and later in the examples in this document, you may want to have `psql` available so you can poke around in the database and see what happened. We recommend that you use [homebrew](https://brew.sh/) for that on macOS, and your package manager on Linux. You can install any version of the postgres client that you'd like. On macOS, with homebrew setup, you can run:
|
||||
|
||||
```sh
|
||||
brew install postgresql
|
||||
```
|
||||
|
||||
## Running `dbt-core` in development
|
||||
|
||||
### Installation
|
||||
|
||||
First make sure that you set up your `virtualenv` as described in [Setting up an environment](#setting-up-an-environment). Also ensure you have the latest version of pip installed with `pip install --upgrade pip`. Next, install `dbt-core` (and its dependencies) with:
|
||||
|
||||
```sh
|
||||
make dev
|
||||
# or
|
||||
pip install -r dev-requirements.txt -r editable-requirements.txt
|
||||
```
|
||||
|
||||
When `dbt-core` is installed this way, any changes you make to the `dbt-core` source code will be reflected immediately in your next `dbt-core` run.
|
||||
|
||||
|
||||
### Running `dbt-core`
|
||||
|
||||
With your virtualenv activated, the `dbt-core` script should point back to the source code you've cloned on your machine. You can verify this by running `which dbt`. This command should show you a path to an executable in your virtualenv.
|
||||
|
||||
Configure your [profile](https://docs.getdbt.com/docs/configure-your-profile) as necessary to connect to your target databases. It may be a good idea to add a new profile pointing to a local postgres instance, or a specific test sandbox within your data warehouse if appropriate.
|
||||
|
||||
## Testing
|
||||
|
||||
Getting the `dbt-core` integration tests set up in your local environment will be very helpful as you start to make changes to your local version of `dbt-core`. The section that follows outlines some helpful tips for setting up the test environment.
|
||||
|
||||
Although `dbt-core` works with a number of different databases, you won't need to supply credentials for every one of these databases in your test environment. Instead you can test all dbt-core code changes with Python and Postgres.
|
||||
|
||||
### Initial setup
|
||||
|
||||
We recommend starting with `dbt-core`'s Postgres tests. These tests cover most of the functionality in `dbt-core`, are the fastest to run, and are the easiest to set up. To run the Postgres integration tests, you'll have to do one extra step of setting up the test database:
|
||||
|
||||
```sh
|
||||
make setup-db
|
||||
```
|
||||
or, alternatively:
|
||||
```sh
|
||||
docker-compose up -d database
|
||||
PGHOST=localhost PGUSER=root PGPASSWORD=password PGDATABASE=postgres bash test/setup_db.sh
|
||||
```
|
||||
|
||||
### Test commands
|
||||
|
||||
There are a few methods for running tests locally.
|
||||
|
||||
#### Makefile
|
||||
|
||||
There are multiple targets in the Makefile to run common test suites and code
|
||||
checks, most notably:
|
||||
|
||||
```sh
|
||||
# Runs unit tests with py38 and code checks in parallel.
|
||||
make test
|
||||
# Runs postgres integration tests with py38 in "fail fast" mode.
|
||||
make integration
|
||||
```
|
||||
> These make targets assume you have a local install of a recent version of [`tox`](https://tox.readthedocs.io/en/latest/) for unit/integration testing and pre-commit for code quality checks,
|
||||
> unless you use choose a Docker container to run tests. Run `make help` for more info.
|
||||
|
||||
Check out the other targets in the Makefile to see other commonly used test
|
||||
suites.
|
||||
|
||||
#### `pre-commit`
|
||||
[`pre-commit`](https.pre-commit.com) takes care of running all code-checks for formatting and linting. Run `make dev` to install `pre-commit` in your local environment. Once this is done you can use any of the linter-based make targets as well as a git pre-commit hook that will ensure proper formatting and linting.
|
||||
|
||||
#### `tox`
|
||||
|
||||
[`tox`](https://tox.readthedocs.io/en/latest/) takes care of managing virtualenvs and install dependencies in order to run tests. You can also run tests in parallel, for example, you can run unit tests for Python 3.7, Python 3.8, and Python 3.9 checks in parallel with `tox -p`. Also, you can run unit tests for specific python versions with `tox -e py37`. The configuration for these tests in located in `tox.ini`.
|
||||
|
||||
#### `pytest`
|
||||
|
||||
Finally, you can also run a specific test or group of tests using [`pytest`](https://docs.pytest.org/en/latest/) directly. With a virtualenv
|
||||
active and dev dependencies installed you can do things like:
|
||||
```sh
|
||||
# run specific postgres integration tests
|
||||
python -m pytest -m profile_postgres test/integration/001_simple_copy_test
|
||||
# run all unit tests in a file
|
||||
python -m pytest test/unit/test_graph.py
|
||||
# run a specific unit test
|
||||
python -m pytest test/unit/test_graph.py::GraphTest::test__dependency_list
|
||||
```
|
||||
> [Here](https://docs.pytest.org/en/reorganize-docs/new-docs/user/commandlineuseful.html)
|
||||
> is a list of useful command-line options for `pytest` to use while developing.
|
||||
|
||||
## Adding CHANGELOG Entry
|
||||
|
||||
We use [changie](https://changie.dev) to generate `CHANGELOG` entries. Do not edit the `CHANGELOG.md` directly. Your modifications will be lost.
|
||||
|
||||
Follow the steps to [install `changie`](https://changie.dev/guide/installation/) for your system.
|
||||
|
||||
Once changie is installed and your PR is created, simply run `changie new` and changie will walk you through the process of creating a changelog entry. Commit the file that's created and your changelog entry is complete!
|
||||
|
||||
## Submitting a Pull Request
|
||||
|
||||
dbt Labs provides a CI environment to test changes to specific adapters, and periodic maintenance checks of `dbt-core` through Github Actions. For example, if you submit a pull request to the `dbt-redshift` repo, GitHub will trigger automated code checks and tests against Redshift.
|
||||
|
||||
A `dbt-core` maintainer will review your PR. They may suggest code revision for style or clarity, or request that you add unit or integration test(s). These are good things! We believe that, with a little bit of help, anyone can contribute high-quality code.
|
||||
- First time contributors should note code checks + unit tests require a maintainer to approve.
|
||||
|
||||
|
||||
Once all tests are passing and your PR has been approved, a `dbt-core` maintainer will merge your changes into the active development branch. And that's it! Happy developing :tada:
|
||||
18
Dockerfile
18
Dockerfile
@@ -1,18 +0,0 @@
|
||||
FROM python
|
||||
|
||||
RUN apt-get update
|
||||
|
||||
RUN apt-get install -y python-pip netcat
|
||||
RUN apt-get install -y python-dev python3-dev
|
||||
|
||||
RUN pip install pip --upgrade
|
||||
RUN pip install virtualenv
|
||||
RUN pip install virtualenvwrapper
|
||||
|
||||
COPY . /usr/src/app
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
RUN cd /usr/src/app
|
||||
RUN ./test/setup.sh
|
||||
|
||||
|
||||
80
Dockerfile.test
Normal file
80
Dockerfile.test
Normal file
@@ -0,0 +1,80 @@
|
||||
##
|
||||
# This dockerfile is used for local development and adapter testing only.
|
||||
# See `/docker` for a generic and production-ready docker file
|
||||
##
|
||||
|
||||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
software-properties-common \
|
||||
&& add-apt-repository ppa:git-core/ppa -y \
|
||||
&& apt-get dist-upgrade -y \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
netcat \
|
||||
postgresql \
|
||||
curl \
|
||||
git \
|
||||
ssh \
|
||||
software-properties-common \
|
||||
make \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
libpq-dev \
|
||||
libsasl2-dev \
|
||||
libsasl2-2 \
|
||||
libsasl2-modules-gssapi-mit \
|
||||
libyaml-dev \
|
||||
unixodbc-dev \
|
||||
&& add-apt-repository ppa:deadsnakes/ppa \
|
||||
&& apt-get install -y \
|
||||
python \
|
||||
python-dev \
|
||||
python3-pip \
|
||||
python3.6 \
|
||||
python3.6-dev \
|
||||
python3-pip \
|
||||
python3.6-venv \
|
||||
python3.7 \
|
||||
python3.7-dev \
|
||||
python3.7-venv \
|
||||
python3.8 \
|
||||
python3.8-dev \
|
||||
python3.8-venv \
|
||||
python3.9 \
|
||||
python3.9-dev \
|
||||
python3.9-venv \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
ARG DOCKERIZE_VERSION=v0.6.1
|
||||
RUN curl -LO https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
|
||||
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
|
||||
|
||||
RUN pip3 install -U tox wheel six setuptools
|
||||
|
||||
# These args are passed in via docker-compose, which reads then from the .env file.
|
||||
# On Linux, run `make .env` to create the .env file for the current user.
|
||||
# On MacOS and Windows, these can stay unset.
|
||||
ARG USER_ID
|
||||
ARG GROUP_ID
|
||||
|
||||
RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
|
||||
groupadd -g ${GROUP_ID} dbt_test_user && \
|
||||
useradd -m -l -u ${USER_ID} -g ${GROUP_ID} dbt_test_user; \
|
||||
else \
|
||||
useradd -mU -l dbt_test_user; \
|
||||
fi
|
||||
RUN mkdir /usr/app && chown dbt_test_user /usr/app
|
||||
RUN mkdir /home/tox && chown dbt_test_user /home/tox
|
||||
|
||||
WORKDIR /usr/app
|
||||
VOLUME /usr/app
|
||||
|
||||
USER dbt_test_user
|
||||
|
||||
ENV PYTHONIOENCODING=utf-8
|
||||
ENV LANG C.UTF-8
|
||||
@@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
Copyright 2021 dbt Labs, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
108
Makefile
108
Makefile
@@ -1,13 +1,103 @@
|
||||
.DEFAULT_GOAL:=help
|
||||
|
||||
# Optional flag to run target in a docker container.
|
||||
# (example `make test USE_DOCKER=true`)
|
||||
ifeq ($(USE_DOCKER),true)
|
||||
DOCKER_CMD := docker-compose run --rm test
|
||||
endif
|
||||
|
||||
.PHONY: dev
|
||||
dev: ## Installs dbt-* packages in develop mode along with development dependencies.
|
||||
@\
|
||||
pip install -r dev-requirements.txt -r editable-requirements.txt && \
|
||||
pre-commit install
|
||||
|
||||
.PHONY: mypy
|
||||
mypy: .env ## Runs mypy against staged changes for static type checking.
|
||||
@\
|
||||
$(DOCKER_CMD) pre-commit run --hook-stage manual mypy-check | grep -v "INFO"
|
||||
|
||||
.PHONY: flake8
|
||||
flake8: .env ## Runs flake8 against staged changes to enforce style guide.
|
||||
@\
|
||||
$(DOCKER_CMD) pre-commit run --hook-stage manual flake8-check | grep -v "INFO"
|
||||
|
||||
.PHONY: black
|
||||
black: .env ## Runs black against staged changes to enforce style guide.
|
||||
@\
|
||||
$(DOCKER_CMD) pre-commit run --hook-stage manual black-check -v | grep -v "INFO"
|
||||
|
||||
.PHONY: lint
|
||||
lint: .env ## Runs flake8 and mypy code checks against staged changes.
|
||||
@\
|
||||
$(DOCKER_CMD) pre-commit run flake8-check --hook-stage manual | grep -v "INFO"; \
|
||||
$(DOCKER_CMD) pre-commit run mypy-check --hook-stage manual | grep -v "INFO"
|
||||
|
||||
.PHONY: unit
|
||||
unit: .env ## Runs unit tests with py38.
|
||||
@\
|
||||
$(DOCKER_CMD) tox -e py38
|
||||
|
||||
.PHONY: test
|
||||
test: .env ## Runs unit tests with py38 and code checks against staged changes.
|
||||
@\
|
||||
$(DOCKER_CMD) tox -e py38; \
|
||||
$(DOCKER_CMD) pre-commit run black-check --hook-stage manual | grep -v "INFO"; \
|
||||
$(DOCKER_CMD) pre-commit run flake8-check --hook-stage manual | grep -v "INFO"; \
|
||||
$(DOCKER_CMD) pre-commit run mypy-check --hook-stage manual | grep -v "INFO"
|
||||
|
||||
changed_tests := `git status --porcelain | grep '^\(M\| M\|A\| A\)' | awk '{ print $$2 }' | grep '\/test_[a-zA-Z_\-\.]\+.py'`
|
||||
.PHONY: integration
|
||||
integration: .env ## Runs postgres integration tests with py38.
|
||||
@\
|
||||
$(DOCKER_CMD) tox -e py38-integration -- -nauto
|
||||
|
||||
test:
|
||||
@echo "Test run starting..."
|
||||
@docker-compose run test /usr/src/app/test/runner.sh
|
||||
.PHONY: integration-fail-fast
|
||||
integration-fail-fast: .env ## Runs postgres integration tests with py38 in "fail fast" mode.
|
||||
@\
|
||||
$(DOCKER_CMD) tox -e py38-integration -- -x -nauto
|
||||
|
||||
test-new:
|
||||
@echo "Test run starting..."
|
||||
@echo "Changed test files:"
|
||||
@echo "${changed_tests}"
|
||||
@docker-compose run test /usr/src/app/test/runner.sh ${changed_tests}
|
||||
.PHONY: setup-db
|
||||
setup-db: ## Setup Postgres database with docker-compose for system testing.
|
||||
@\
|
||||
docker-compose up -d database && \
|
||||
PGHOST=localhost PGUSER=root PGPASSWORD=password PGDATABASE=postgres bash test/setup_db.sh
|
||||
|
||||
# This rule creates a file named .env that is used by docker-compose for passing
|
||||
# the USER_ID and GROUP_ID arguments to the Docker image.
|
||||
.env: ## Setup step for using using docker-compose with make target.
|
||||
@touch .env
|
||||
ifneq ($(OS),Windows_NT)
|
||||
ifneq ($(shell uname -s), Darwin)
|
||||
@echo USER_ID=$(shell id -u) > .env
|
||||
@echo GROUP_ID=$(shell id -g) >> .env
|
||||
endif
|
||||
endif
|
||||
|
||||
.PHONY: clean
|
||||
clean: ## Resets development environment.
|
||||
@echo 'cleaning repo...'
|
||||
@rm -f .coverage
|
||||
@rm -rf .eggs/
|
||||
@rm -f .env
|
||||
@rm -rf .tox/
|
||||
@rm -rf build/
|
||||
@rm -rf dbt.egg-info/
|
||||
@rm -f dbt_project.yml
|
||||
@rm -rf dist/
|
||||
@rm -f htmlcov/*.{css,html,js,json,png}
|
||||
@rm -rf logs/
|
||||
@rm -rf target/
|
||||
@find . -type f -name '*.pyc' -delete
|
||||
@find . -type d -name '__pycache__' -depth -delete
|
||||
@echo 'done.'
|
||||
|
||||
|
||||
.PHONY: help
|
||||
help: ## Show this help message.
|
||||
@echo 'usage: make [target] [USE_DOCKER=true]'
|
||||
@echo
|
||||
@echo 'targets:'
|
||||
@grep -E '^[8+a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||
@echo
|
||||
@echo 'options:'
|
||||
@echo 'use USE_DOCKER=true to run target in a docker container'
|
||||
|
||||
52
README.md
52
README.md
@@ -1,31 +1,39 @@
|
||||
# dbt
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/dbt-labs/dbt-core/fa1ea14ddfb1d5ae319d5141844910dd53ab2834/etc/dbt-core.svg" alt="dbt logo" width="750"/>
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/dbt-labs/dbt-core/actions/workflows/main.yml">
|
||||
<img src="https://github.com/dbt-labs/dbt-core/actions/workflows/main.yml/badge.svg?event=push" alt="CI Badge"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
dbt (data build tool) helps analysts write reliable, modular code using a workflow that closely mirrors software development.
|
||||
**[dbt](https://www.getdbt.com/)** enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.
|
||||
|
||||
---
|
||||

|
||||
|
||||
- [What is dbt]?
|
||||
- Read the [dbt viewpoint]
|
||||
- [Installation]
|
||||
- Join the [chat][slack-url] on Slack for live questions and support.
|
||||
## Understanding dbt
|
||||
|
||||
### Testing
|
||||
Analysts using dbt can transform their data by simply writing select statements, while dbt handles turning these statements into tables and views in a data warehouse.
|
||||
|
||||
| service | development | master |
|
||||
| --- | --- | --- |
|
||||
| CircleCI| [](https://circleci.com/gh/analyst-collective/dbt/tree/development) | [](https://circleci.com/gh/analyst-collective/dbt/tree/master) |
|
||||
| AppVeyor | [](https://ci.appveyor.com/project/DrewBanin/dbt/branch/development) | [](https://ci.appveyor.com/project/DrewBanin/dbt/branch/master) |
|
||||
These select statements, or "models", form a dbt project. Models frequently build on top of one another – dbt makes it easy to [manage relationships](https://docs.getdbt.com/docs/ref) between models, and [visualize these relationships](https://docs.getdbt.com/docs/documentation), as well as assure the quality of your transformations through [testing](https://docs.getdbt.com/docs/testing).
|
||||
|
||||
[Coverage](https://circleci.com/api/v1/project/analyst-collective/dbt/latest/artifacts/0/$CIRCLE_ARTIFACTS/htmlcov/index.html?branch=development)
|
||||

|
||||
|
||||
## Getting started
|
||||
|
||||
- [Install dbt](https://docs.getdbt.com/docs/installation)
|
||||
- Read the [introduction](https://docs.getdbt.com/docs/introduction/) and [viewpoint](https://docs.getdbt.com/docs/about/viewpoint/)
|
||||
|
||||
## Join the dbt Community
|
||||
|
||||
- Be part of the conversation in the [dbt Community Slack](http://community.getdbt.com/)
|
||||
- Read more on the [dbt Community Discourse](https://discourse.getdbt.com)
|
||||
|
||||
## Reporting bugs and contributing code
|
||||
|
||||
- Want to report a bug or request a feature? Let us know on [Slack](http://community.getdbt.com/), or open [an issue](https://github.com/dbt-labs/dbt-core/issues/new)
|
||||
- Want to help us build dbt? Check out the [Contributing Guide](https://github.com/dbt-labs/dbt-core/blob/HEAD/CONTRIBUTING.md)
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Everyone interacting in the dbt project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [PyPA Code of Conduct].
|
||||
|
||||
|
||||
|
||||
[PyPA Code of Conduct]: https://www.pypa.io/en/latest/code-of-conduct/
|
||||
[slack-url]: http://ac-slackin.herokuapp.com/
|
||||
[Installation]: http://dbt.readthedocs.io/en/master/guide/setup/
|
||||
[What is dbt]: http://dbt.readthedocs.io/en/master/about/overview/
|
||||
[dbt viewpoint]: http://dbt.readthedocs.io/en/master/about/viewpoint/
|
||||
Everyone interacting in the dbt project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [dbt Code of Conduct](https://community.getdbt.com/code-of-conduct).
|
||||
|
||||
62
appveyor.yml
62
appveyor.yml
@@ -1,62 +0,0 @@
|
||||
version: 1.0.{build}-{branch}
|
||||
|
||||
environment:
|
||||
# SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
|
||||
# /E:ON and /V:ON options are not enabled in the batch script intepreter
|
||||
# See: http://stackoverflow.com/a/13751649/163740
|
||||
CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_env.cmd"
|
||||
TOX_ENV: "pywin"
|
||||
|
||||
matrix:
|
||||
- PYTHON: "C:\\Python27"
|
||||
PYTHON_VERSION: "2.7.8"
|
||||
PYTHON_ARCH: "32"
|
||||
|
||||
#- PYTHON: "C:\\Python35"
|
||||
# PYTHON_VERSION: "3.5.2"
|
||||
# PYTHON_ARCH: "32"
|
||||
|
||||
PGUSER: postgres
|
||||
PGPASSWORD: Password12!
|
||||
|
||||
services:
|
||||
- postgresql94
|
||||
|
||||
hosts:
|
||||
database: 127.0.0.1
|
||||
|
||||
init:
|
||||
- PATH=C:\Program Files\PostgreSQL\9.4\bin\;%PATH%
|
||||
- ps: Set-Content "c:\program files\postgresql\9.4\data\pg_hba.conf" "host all all ::1/128 trust"
|
||||
- ps: Add-Content "c:\program files\postgresql\9.4\data\pg_hba.conf" "host all all 127.0.0.1/32 trust"
|
||||
|
||||
install:
|
||||
# Download setup scripts and unzip
|
||||
- ps: "wget https://github.com/cloudify-cosmo/appveyor-utils/archive/master.zip -OutFile ./master.zip"
|
||||
- "7z e master.zip */appveyor/* -oappveyor"
|
||||
|
||||
# Install Python (from the official .msi of http://python.org) and pip when
|
||||
# not already installed.
|
||||
- "powershell ./appveyor/install.ps1"
|
||||
|
||||
# Prepend newly installed Python to the PATH of this build (this cannot be
|
||||
# done from inside the powershell script as it would require to restart
|
||||
# the parent CMD process).
|
||||
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
|
||||
|
||||
# Check that we have the expected version and architecture for Python
|
||||
- "python --version"
|
||||
- "python -c \"import struct; print(struct.calcsize('P') * 8)\""
|
||||
|
||||
build: false # Not a C# project, build stuff at the test step instead.
|
||||
|
||||
before_test:
|
||||
- "%CMD_IN_ENV% pip install tox"
|
||||
|
||||
test_script:
|
||||
- "bash test/setup_db.sh"
|
||||
|
||||
# this is generally a bad idea TODO
|
||||
- git config --system http.sslverify false
|
||||
|
||||
- "%CMD_IN_ENV% tox -e %TOX_ENV%"
|
||||
23
circle.yml
23
circle.yml
@@ -1,23 +0,0 @@
|
||||
machine:
|
||||
post:
|
||||
- pyenv global 2.7.9 3.5.0
|
||||
hosts:
|
||||
database: 127.0.0.1
|
||||
|
||||
database:
|
||||
override:
|
||||
- bash test/setup_db.sh
|
||||
|
||||
dependencies:
|
||||
pre:
|
||||
- pip install --upgrade pip setuptools || true
|
||||
- pip install --upgrade tox tox-pyenv
|
||||
override:
|
||||
- pyenv local 2.7.9 3.5.0
|
||||
|
||||
test:
|
||||
override:
|
||||
- sudo chown -R ubuntu:ubuntu /root/
|
||||
- /bin/bash -c 'cd /home/ubuntu/dbt && tox'
|
||||
post:
|
||||
- mv htmlcov $CIRCLE_ARTIFACTS/
|
||||
1
core/MANIFEST.in
Normal file
1
core/MANIFEST.in
Normal file
@@ -0,0 +1 @@
|
||||
recursive-include dbt/include *.py *.sql *.yml *.html *.md .gitkeep .gitignore
|
||||
39
core/README.md
Normal file
39
core/README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/dbt-labs/dbt-core/fa1ea14ddfb1d5ae319d5141844910dd53ab2834/etc/dbt-core.svg" alt="dbt logo" width="750"/>
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/dbt-labs/dbt-core/actions/workflows/main.yml">
|
||||
<img src="https://github.com/dbt-labs/dbt-core/actions/workflows/main.yml/badge.svg?event=push" alt="CI Badge"/>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
**[dbt](https://www.getdbt.com/)** enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.
|
||||
|
||||

|
||||
|
||||
## Understanding dbt
|
||||
|
||||
Analysts using dbt can transform their data by simply writing select statements, while dbt handles turning these statements into tables and views in a data warehouse.
|
||||
|
||||
These select statements, or "models", form a dbt project. Models frequently build on top of one another – dbt makes it easy to [manage relationships](https://docs.getdbt.com/docs/ref) between models, and [visualize these relationships](https://docs.getdbt.com/docs/documentation), as well as assure the quality of your transformations through [testing](https://docs.getdbt.com/docs/testing).
|
||||
|
||||

|
||||
|
||||
## Getting started
|
||||
|
||||
- [Install dbt](https://docs.getdbt.com/docs/installation)
|
||||
- Read the [introduction](https://docs.getdbt.com/docs/introduction/) and [viewpoint](https://docs.getdbt.com/docs/about/viewpoint/)
|
||||
|
||||
## Join the dbt Community
|
||||
|
||||
- Be part of the conversation in the [dbt Community Slack](http://community.getdbt.com/)
|
||||
- Read more on the [dbt Community Discourse](https://discourse.getdbt.com)
|
||||
|
||||
## Reporting bugs and contributing code
|
||||
|
||||
- Want to report a bug or request a feature? Let us know on [Slack](http://community.getdbt.com/), or open [an issue](https://github.com/dbt-labs/dbt-core/issues/new)
|
||||
- Want to help us build dbt? Check out the [Contributing Guide](https://github.com/dbt-labs/dbt-core/blob/HEAD/CONTRIBUTING.md)
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Everyone interacting in the dbt project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [dbt Code of Conduct](https://community.getdbt.com/code-of-conduct).
|
||||
51
core/dbt/README.md
Normal file
51
core/dbt/README.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# core/dbt directory README
|
||||
|
||||
## The following are individual files in this directory.
|
||||
|
||||
### deprecations.py
|
||||
|
||||
### flags.py
|
||||
|
||||
### main.py
|
||||
|
||||
### tracking.py
|
||||
|
||||
### version.py
|
||||
|
||||
### lib.py
|
||||
|
||||
### node_types.py
|
||||
|
||||
### helper_types.py
|
||||
|
||||
### links.py
|
||||
|
||||
### semver.py
|
||||
|
||||
### ui.py
|
||||
|
||||
### compilation.py
|
||||
|
||||
### dataclass_schema.py
|
||||
|
||||
### exceptions.py
|
||||
|
||||
### hooks.py
|
||||
|
||||
### logger.py
|
||||
|
||||
### profiler.py
|
||||
|
||||
### utils.py
|
||||
|
||||
|
||||
## The subdirectories will be documented in a README in the subdirectory
|
||||
* config
|
||||
* include
|
||||
* adapters
|
||||
* context
|
||||
* deps
|
||||
* graph
|
||||
* task
|
||||
* clients
|
||||
* events
|
||||
1
core/dbt/adapters/README.md
Normal file
1
core/dbt/adapters/README.md
Normal file
@@ -0,0 +1 @@
|
||||
# Adapters README
|
||||
14
core/dbt/adapters/base/__init__.py
Normal file
14
core/dbt/adapters/base/__init__.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# these are all just exports, #noqa them so flake8 will be happy
|
||||
|
||||
# TODO: Should we still include this in the `adapters` namespace?
|
||||
from dbt.contracts.connection import Credentials # noqa
|
||||
from dbt.adapters.base.meta import available # noqa
|
||||
from dbt.adapters.base.connections import BaseConnectionManager # noqa
|
||||
from dbt.adapters.base.relation import ( # noqa
|
||||
BaseRelation,
|
||||
RelationType,
|
||||
SchemaSearchMap,
|
||||
)
|
||||
from dbt.adapters.base.column import Column # noqa
|
||||
from dbt.adapters.base.impl import AdapterConfig, BaseAdapter # noqa
|
||||
from dbt.adapters.base.plugin import AdapterPlugin # noqa
|
||||
159
core/dbt/adapters/base/column.py
Normal file
159
core/dbt/adapters/base/column.py
Normal file
@@ -0,0 +1,159 @@
|
||||
from dataclasses import dataclass
|
||||
import re
|
||||
from typing import Dict, ClassVar, Any, Optional
|
||||
|
||||
from dbt.exceptions import RuntimeException
|
||||
|
||||
|
||||
@dataclass
|
||||
class Column:
|
||||
TYPE_LABELS: ClassVar[Dict[str, str]] = {
|
||||
"STRING": "TEXT",
|
||||
"TIMESTAMP": "TIMESTAMP",
|
||||
"FLOAT": "FLOAT",
|
||||
"INTEGER": "INT",
|
||||
}
|
||||
column: str
|
||||
dtype: str
|
||||
char_size: Optional[int] = None
|
||||
numeric_precision: Optional[Any] = None
|
||||
numeric_scale: Optional[Any] = None
|
||||
|
||||
@classmethod
|
||||
def translate_type(cls, dtype: str) -> str:
|
||||
return cls.TYPE_LABELS.get(dtype.upper(), dtype)
|
||||
|
||||
@classmethod
|
||||
def create(cls, name, label_or_dtype: str) -> "Column":
|
||||
column_type = cls.translate_type(label_or_dtype)
|
||||
return cls(name, column_type)
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return self.column
|
||||
|
||||
@property
|
||||
def quoted(self) -> str:
|
||||
return '"{}"'.format(self.column)
|
||||
|
||||
@property
|
||||
def data_type(self) -> str:
|
||||
if self.is_string():
|
||||
return self.string_type(self.string_size())
|
||||
elif self.is_numeric():
|
||||
return self.numeric_type(self.dtype, self.numeric_precision, self.numeric_scale)
|
||||
else:
|
||||
return self.dtype
|
||||
|
||||
def is_string(self) -> bool:
|
||||
return self.dtype.lower() in ["text", "character varying", "character", "varchar"]
|
||||
|
||||
def is_number(self):
|
||||
return any([self.is_integer(), self.is_numeric(), self.is_float()])
|
||||
|
||||
def is_float(self):
|
||||
return self.dtype.lower() in [
|
||||
# floats
|
||||
"real",
|
||||
"float4",
|
||||
"float",
|
||||
"double precision",
|
||||
"float8",
|
||||
]
|
||||
|
||||
def is_integer(self) -> bool:
|
||||
return self.dtype.lower() in [
|
||||
# real types
|
||||
"smallint",
|
||||
"integer",
|
||||
"bigint",
|
||||
"smallserial",
|
||||
"serial",
|
||||
"bigserial",
|
||||
# aliases
|
||||
"int2",
|
||||
"int4",
|
||||
"int8",
|
||||
"serial2",
|
||||
"serial4",
|
||||
"serial8",
|
||||
]
|
||||
|
||||
def is_numeric(self) -> bool:
|
||||
return self.dtype.lower() in ["numeric", "decimal"]
|
||||
|
||||
def string_size(self) -> int:
|
||||
if not self.is_string():
|
||||
raise RuntimeException("Called string_size() on non-string field!")
|
||||
|
||||
if self.dtype == "text" or self.char_size is None:
|
||||
# char_size should never be None. Handle it reasonably just in case
|
||||
return 256
|
||||
else:
|
||||
return int(self.char_size)
|
||||
|
||||
def can_expand_to(self, other_column: "Column") -> bool:
|
||||
"""returns True if this column can be expanded to the size of the
|
||||
other column"""
|
||||
if not self.is_string() or not other_column.is_string():
|
||||
return False
|
||||
|
||||
return other_column.string_size() > self.string_size()
|
||||
|
||||
def literal(self, value: Any) -> str:
|
||||
return "{}::{}".format(value, self.data_type)
|
||||
|
||||
@classmethod
|
||||
def string_type(cls, size: int) -> str:
|
||||
return "character varying({})".format(size)
|
||||
|
||||
@classmethod
|
||||
def numeric_type(cls, dtype: str, precision: Any, scale: Any) -> str:
|
||||
# This could be decimal(...), numeric(...), number(...)
|
||||
# Just use whatever was fed in here -- don't try to get too clever
|
||||
if precision is None or scale is None:
|
||||
return dtype
|
||||
else:
|
||||
return "{}({},{})".format(dtype, precision, scale)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "<Column {} ({})>".format(self.name, self.data_type)
|
||||
|
||||
@classmethod
|
||||
def from_description(cls, name: str, raw_data_type: str) -> "Column":
|
||||
match = re.match(r"([^(]+)(\([^)]+\))?", raw_data_type)
|
||||
if match is None:
|
||||
raise RuntimeException(f'Could not interpret data type "{raw_data_type}"')
|
||||
data_type, size_info = match.groups()
|
||||
char_size = None
|
||||
numeric_precision = None
|
||||
numeric_scale = None
|
||||
if size_info is not None:
|
||||
# strip out the parentheses
|
||||
size_info = size_info[1:-1]
|
||||
parts = size_info.split(",")
|
||||
if len(parts) == 1:
|
||||
try:
|
||||
char_size = int(parts[0])
|
||||
except ValueError:
|
||||
raise RuntimeException(
|
||||
f'Could not interpret data_type "{raw_data_type}": '
|
||||
f'could not convert "{parts[0]}" to an integer'
|
||||
)
|
||||
elif len(parts) == 2:
|
||||
try:
|
||||
numeric_precision = int(parts[0])
|
||||
except ValueError:
|
||||
raise RuntimeException(
|
||||
f'Could not interpret data_type "{raw_data_type}": '
|
||||
f'could not convert "{parts[0]}" to an integer'
|
||||
)
|
||||
try:
|
||||
numeric_scale = int(parts[1])
|
||||
except ValueError:
|
||||
raise RuntimeException(
|
||||
f'Could not interpret data_type "{raw_data_type}": '
|
||||
f'could not convert "{parts[1]}" to an integer'
|
||||
)
|
||||
|
||||
return cls(name, data_type, char_size, numeric_precision, numeric_scale)
|
||||
296
core/dbt/adapters/base/connections.py
Normal file
296
core/dbt/adapters/base/connections.py
Normal file
@@ -0,0 +1,296 @@
|
||||
import abc
|
||||
import os
|
||||
|
||||
# multiprocessing.RLock is a function returning this type
|
||||
from multiprocessing.synchronize import RLock
|
||||
from threading import get_ident
|
||||
from typing import Dict, Tuple, Hashable, Optional, ContextManager, List
|
||||
|
||||
import agate
|
||||
|
||||
import dbt.exceptions
|
||||
from dbt.contracts.connection import (
|
||||
Connection,
|
||||
Identifier,
|
||||
ConnectionState,
|
||||
AdapterRequiredConfig,
|
||||
LazyHandle,
|
||||
AdapterResponse,
|
||||
)
|
||||
from dbt.contracts.graph.manifest import Manifest
|
||||
from dbt.adapters.base.query_headers import (
|
||||
MacroQueryStringSetter,
|
||||
)
|
||||
from dbt.events.functions import fire_event
|
||||
from dbt.events.types import (
|
||||
NewConnection,
|
||||
ConnectionReused,
|
||||
ConnectionLeftOpen,
|
||||
ConnectionLeftOpen2,
|
||||
ConnectionClosed,
|
||||
ConnectionClosed2,
|
||||
Rollback,
|
||||
RollbackFailed,
|
||||
)
|
||||
from dbt import flags
|
||||
|
||||
|
||||
class BaseConnectionManager(metaclass=abc.ABCMeta):
|
||||
"""Methods to implement:
|
||||
- exception_handler
|
||||
- cancel_open
|
||||
- open
|
||||
- begin
|
||||
- commit
|
||||
- clear_transaction
|
||||
- execute
|
||||
|
||||
You must also set the 'TYPE' class attribute with a class-unique constant
|
||||
string.
|
||||
"""
|
||||
|
||||
TYPE: str = NotImplemented
|
||||
|
||||
def __init__(self, profile: AdapterRequiredConfig):
|
||||
self.profile = profile
|
||||
self.thread_connections: Dict[Hashable, Connection] = {}
|
||||
self.lock: RLock = flags.MP_CONTEXT.RLock()
|
||||
self.query_header: Optional[MacroQueryStringSetter] = None
|
||||
|
||||
def set_query_header(self, manifest: Manifest) -> None:
|
||||
self.query_header = MacroQueryStringSetter(self.profile, manifest)
|
||||
|
||||
@staticmethod
|
||||
def get_thread_identifier() -> Hashable:
|
||||
# note that get_ident() may be re-used, but we should never experience
|
||||
# that within a single process
|
||||
return (os.getpid(), get_ident())
|
||||
|
||||
def get_thread_connection(self) -> Connection:
|
||||
key = self.get_thread_identifier()
|
||||
with self.lock:
|
||||
if key not in self.thread_connections:
|
||||
raise dbt.exceptions.InvalidConnectionException(key, list(self.thread_connections))
|
||||
return self.thread_connections[key]
|
||||
|
||||
def set_thread_connection(self, conn: Connection) -> None:
|
||||
key = self.get_thread_identifier()
|
||||
if key in self.thread_connections:
|
||||
raise dbt.exceptions.InternalException(
|
||||
"In set_thread_connection, existing connection exists for {}"
|
||||
)
|
||||
self.thread_connections[key] = conn
|
||||
|
||||
def get_if_exists(self) -> Optional[Connection]:
|
||||
key = self.get_thread_identifier()
|
||||
with self.lock:
|
||||
return self.thread_connections.get(key)
|
||||
|
||||
def clear_thread_connection(self) -> None:
|
||||
key = self.get_thread_identifier()
|
||||
with self.lock:
|
||||
if key in self.thread_connections:
|
||||
del self.thread_connections[key]
|
||||
|
||||
def clear_transaction(self) -> None:
|
||||
"""Clear any existing transactions."""
|
||||
conn = self.get_thread_connection()
|
||||
if conn is not None:
|
||||
if conn.transaction_open:
|
||||
self._rollback(conn)
|
||||
self.begin()
|
||||
self.commit()
|
||||
|
||||
def rollback_if_open(self) -> None:
|
||||
conn = self.get_if_exists()
|
||||
if conn is not None and conn.handle and conn.transaction_open:
|
||||
self._rollback(conn)
|
||||
|
||||
@abc.abstractmethod
|
||||
def exception_handler(self, sql: str) -> ContextManager:
|
||||
"""Create a context manager that handles exceptions caused by database
|
||||
interactions.
|
||||
|
||||
:param str sql: The SQL string that the block inside the context
|
||||
manager is executing.
|
||||
:return: A context manager that handles exceptions raised by the
|
||||
underlying database.
|
||||
"""
|
||||
raise dbt.exceptions.NotImplementedException(
|
||||
"`exception_handler` is not implemented for this adapter!"
|
||||
)
|
||||
|
||||
def set_connection_name(self, name: Optional[str] = None) -> Connection:
|
||||
conn_name: str
|
||||
if name is None:
|
||||
# if a name isn't specified, we'll re-use a single handle
|
||||
# named 'master'
|
||||
conn_name = "master"
|
||||
else:
|
||||
if not isinstance(name, str):
|
||||
raise dbt.exceptions.CompilerException(
|
||||
f"For connection name, got {name} - not a string!"
|
||||
)
|
||||
assert isinstance(name, str)
|
||||
conn_name = name
|
||||
|
||||
conn = self.get_if_exists()
|
||||
if conn is None:
|
||||
conn = Connection(
|
||||
type=Identifier(self.TYPE),
|
||||
name=None,
|
||||
state=ConnectionState.INIT,
|
||||
transaction_open=False,
|
||||
handle=None,
|
||||
credentials=self.profile.credentials,
|
||||
)
|
||||
self.set_thread_connection(conn)
|
||||
|
||||
if conn.name == conn_name and conn.state == "open":
|
||||
return conn
|
||||
|
||||
fire_event(NewConnection(conn_name=conn_name, conn_type=self.TYPE))
|
||||
|
||||
if conn.state == "open":
|
||||
fire_event(ConnectionReused(conn_name=conn_name))
|
||||
else:
|
||||
conn.handle = LazyHandle(self.open)
|
||||
|
||||
conn.name = conn_name
|
||||
return conn
|
||||
|
||||
@abc.abstractmethod
|
||||
def cancel_open(self) -> Optional[List[str]]:
|
||||
"""Cancel all open connections on the adapter. (passable)"""
|
||||
raise dbt.exceptions.NotImplementedException(
|
||||
"`cancel_open` is not implemented for this adapter!"
|
||||
)
|
||||
|
||||
@abc.abstractclassmethod
|
||||
def open(cls, connection: Connection) -> Connection:
|
||||
"""Open the given connection on the adapter and return it.
|
||||
|
||||
This may mutate the given connection (in particular, its state and its
|
||||
handle).
|
||||
|
||||
This should be thread-safe, or hold the lock if necessary. The given
|
||||
connection should not be in either in_use or available.
|
||||
"""
|
||||
raise dbt.exceptions.NotImplementedException("`open` is not implemented for this adapter!")
|
||||
|
||||
def release(self) -> None:
|
||||
with self.lock:
|
||||
conn = self.get_if_exists()
|
||||
if conn is None:
|
||||
return
|
||||
|
||||
try:
|
||||
# always close the connection. close() calls _rollback() if there
|
||||
# is an open transaction
|
||||
self.close(conn)
|
||||
except Exception:
|
||||
# if rollback or close failed, remove our busted connection
|
||||
self.clear_thread_connection()
|
||||
raise
|
||||
|
||||
def cleanup_all(self) -> None:
|
||||
with self.lock:
|
||||
for connection in self.thread_connections.values():
|
||||
if connection.state not in {"closed", "init"}:
|
||||
fire_event(ConnectionLeftOpen(conn_name=connection.name))
|
||||
else:
|
||||
fire_event(ConnectionClosed(conn_name=connection.name))
|
||||
self.close(connection)
|
||||
|
||||
# garbage collect these connections
|
||||
self.thread_connections.clear()
|
||||
|
||||
@abc.abstractmethod
|
||||
def begin(self) -> None:
|
||||
"""Begin a transaction. (passable)"""
|
||||
raise dbt.exceptions.NotImplementedException(
|
||||
"`begin` is not implemented for this adapter!"
|
||||
)
|
||||
|
||||
@abc.abstractmethod
|
||||
def commit(self) -> None:
|
||||
"""Commit a transaction. (passable)"""
|
||||
raise dbt.exceptions.NotImplementedException(
|
||||
"`commit` is not implemented for this adapter!"
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def _rollback_handle(cls, connection: Connection) -> None:
|
||||
"""Perform the actual rollback operation."""
|
||||
try:
|
||||
connection.handle.rollback()
|
||||
except Exception:
|
||||
fire_event(RollbackFailed(conn_name=connection.name))
|
||||
|
||||
@classmethod
|
||||
def _close_handle(cls, connection: Connection) -> None:
|
||||
"""Perform the actual close operation."""
|
||||
# On windows, sometimes connection handles don't have a close() attr.
|
||||
if hasattr(connection.handle, "close"):
|
||||
fire_event(ConnectionClosed2(conn_name=connection.name))
|
||||
connection.handle.close()
|
||||
else:
|
||||
fire_event(ConnectionLeftOpen2(conn_name=connection.name))
|
||||
|
||||
@classmethod
|
||||
def _rollback(cls, connection: Connection) -> None:
|
||||
"""Roll back the given connection."""
|
||||
if connection.transaction_open is False:
|
||||
raise dbt.exceptions.InternalException(
|
||||
f"Tried to rollback transaction on connection "
|
||||
f'"{connection.name}", but it does not have one open!'
|
||||
)
|
||||
|
||||
fire_event(Rollback(conn_name=connection.name))
|
||||
cls._rollback_handle(connection)
|
||||
|
||||
connection.transaction_open = False
|
||||
|
||||
@classmethod
|
||||
def close(cls, connection: Connection) -> Connection:
|
||||
# if the connection is in closed or init, there's nothing to do
|
||||
if connection.state in {ConnectionState.CLOSED, ConnectionState.INIT}:
|
||||
return connection
|
||||
|
||||
if connection.transaction_open and connection.handle:
|
||||
fire_event(Rollback(conn_name=connection.name))
|
||||
cls._rollback_handle(connection)
|
||||
connection.transaction_open = False
|
||||
|
||||
cls._close_handle(connection)
|
||||
connection.state = ConnectionState.CLOSED
|
||||
|
||||
return connection
|
||||
|
||||
def commit_if_has_connection(self) -> None:
|
||||
"""If the named connection exists, commit the current transaction."""
|
||||
connection = self.get_if_exists()
|
||||
if connection:
|
||||
self.commit()
|
||||
|
||||
def _add_query_comment(self, sql: str) -> str:
|
||||
if self.query_header is None:
|
||||
return sql
|
||||
return self.query_header.add(sql)
|
||||
|
||||
@abc.abstractmethod
|
||||
def execute(
|
||||
self, sql: str, auto_begin: bool = False, fetch: bool = False
|
||||
) -> Tuple[AdapterResponse, agate.Table]:
|
||||
"""Execute the given SQL.
|
||||
|
||||
:param str sql: The sql to execute.
|
||||
:param bool auto_begin: If set, and dbt is not currently inside a
|
||||
transaction, automatically begin one.
|
||||
:param bool fetch: If set, fetch results.
|
||||
:return: A tuple of the query status and results (empty if fetch=False).
|
||||
:rtype: Tuple[AdapterResponse, agate.Table]
|
||||
"""
|
||||
raise dbt.exceptions.NotImplementedException(
|
||||
"`execute` is not implemented for this adapter!"
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user