update
This commit is contained in:
@@ -207,7 +207,6 @@ Supports much of the *markdown* __syntax__!
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
console = Console(
|
||||
file=io.StringIO(),
|
||||
force_terminal=True,
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,6 +4,7 @@ CELL_WIDTHS = [
|
||||
(0, 0, 0),
|
||||
(1, 31, -1),
|
||||
(127, 159, -1),
|
||||
(173, 173, 0),
|
||||
(768, 879, 0),
|
||||
(1155, 1161, 0),
|
||||
(1425, 1469, 0),
|
||||
@@ -11,13 +12,16 @@ CELL_WIDTHS = [
|
||||
(1473, 1474, 0),
|
||||
(1476, 1477, 0),
|
||||
(1479, 1479, 0),
|
||||
(1536, 1541, 0),
|
||||
(1552, 1562, 0),
|
||||
(1564, 1564, 0),
|
||||
(1611, 1631, 0),
|
||||
(1648, 1648, 0),
|
||||
(1750, 1756, 0),
|
||||
(1750, 1757, 0),
|
||||
(1759, 1764, 0),
|
||||
(1767, 1768, 0),
|
||||
(1770, 1773, 0),
|
||||
(1807, 1807, 0),
|
||||
(1809, 1809, 0),
|
||||
(1840, 1866, 0),
|
||||
(1958, 1968, 0),
|
||||
@@ -28,149 +32,137 @@ CELL_WIDTHS = [
|
||||
(2085, 2087, 0),
|
||||
(2089, 2093, 0),
|
||||
(2137, 2139, 0),
|
||||
(2259, 2273, 0),
|
||||
(2275, 2306, 0),
|
||||
(2362, 2362, 0),
|
||||
(2364, 2364, 0),
|
||||
(2369, 2376, 0),
|
||||
(2381, 2381, 0),
|
||||
(2192, 2193, 0),
|
||||
(2200, 2207, 0),
|
||||
(2250, 2307, 0),
|
||||
(2362, 2364, 0),
|
||||
(2366, 2383, 0),
|
||||
(2385, 2391, 0),
|
||||
(2402, 2403, 0),
|
||||
(2433, 2433, 0),
|
||||
(2433, 2435, 0),
|
||||
(2492, 2492, 0),
|
||||
(2497, 2500, 0),
|
||||
(2509, 2509, 0),
|
||||
(2494, 2500, 0),
|
||||
(2503, 2504, 0),
|
||||
(2507, 2509, 0),
|
||||
(2519, 2519, 0),
|
||||
(2530, 2531, 0),
|
||||
(2558, 2558, 0),
|
||||
(2561, 2562, 0),
|
||||
(2561, 2563, 0),
|
||||
(2620, 2620, 0),
|
||||
(2625, 2626, 0),
|
||||
(2622, 2626, 0),
|
||||
(2631, 2632, 0),
|
||||
(2635, 2637, 0),
|
||||
(2641, 2641, 0),
|
||||
(2672, 2673, 0),
|
||||
(2677, 2677, 0),
|
||||
(2689, 2690, 0),
|
||||
(2689, 2691, 0),
|
||||
(2748, 2748, 0),
|
||||
(2753, 2757, 0),
|
||||
(2759, 2760, 0),
|
||||
(2765, 2765, 0),
|
||||
(2750, 2757, 0),
|
||||
(2759, 2761, 0),
|
||||
(2763, 2765, 0),
|
||||
(2786, 2787, 0),
|
||||
(2810, 2815, 0),
|
||||
(2817, 2817, 0),
|
||||
(2817, 2819, 0),
|
||||
(2876, 2876, 0),
|
||||
(2879, 2879, 0),
|
||||
(2881, 2884, 0),
|
||||
(2893, 2893, 0),
|
||||
(2901, 2902, 0),
|
||||
(2878, 2884, 0),
|
||||
(2887, 2888, 0),
|
||||
(2891, 2893, 0),
|
||||
(2901, 2903, 0),
|
||||
(2914, 2915, 0),
|
||||
(2946, 2946, 0),
|
||||
(3008, 3008, 0),
|
||||
(3021, 3021, 0),
|
||||
(3072, 3072, 0),
|
||||
(3076, 3076, 0),
|
||||
(3134, 3136, 0),
|
||||
(3006, 3010, 0),
|
||||
(3014, 3016, 0),
|
||||
(3018, 3021, 0),
|
||||
(3031, 3031, 0),
|
||||
(3072, 3076, 0),
|
||||
(3132, 3132, 0),
|
||||
(3134, 3140, 0),
|
||||
(3142, 3144, 0),
|
||||
(3146, 3149, 0),
|
||||
(3157, 3158, 0),
|
||||
(3170, 3171, 0),
|
||||
(3201, 3201, 0),
|
||||
(3201, 3203, 0),
|
||||
(3260, 3260, 0),
|
||||
(3263, 3263, 0),
|
||||
(3270, 3270, 0),
|
||||
(3276, 3277, 0),
|
||||
(3262, 3268, 0),
|
||||
(3270, 3272, 0),
|
||||
(3274, 3277, 0),
|
||||
(3285, 3286, 0),
|
||||
(3298, 3299, 0),
|
||||
(3328, 3329, 0),
|
||||
(3315, 3315, 0),
|
||||
(3328, 3331, 0),
|
||||
(3387, 3388, 0),
|
||||
(3393, 3396, 0),
|
||||
(3405, 3405, 0),
|
||||
(3390, 3396, 0),
|
||||
(3398, 3400, 0),
|
||||
(3402, 3405, 0),
|
||||
(3415, 3415, 0),
|
||||
(3426, 3427, 0),
|
||||
(3457, 3457, 0),
|
||||
(3457, 3459, 0),
|
||||
(3530, 3530, 0),
|
||||
(3538, 3540, 0),
|
||||
(3535, 3540, 0),
|
||||
(3542, 3542, 0),
|
||||
(3544, 3551, 0),
|
||||
(3570, 3571, 0),
|
||||
(3633, 3633, 0),
|
||||
(3636, 3642, 0),
|
||||
(3655, 3662, 0),
|
||||
(3761, 3761, 0),
|
||||
(3764, 3772, 0),
|
||||
(3784, 3789, 0),
|
||||
(3784, 3790, 0),
|
||||
(3864, 3865, 0),
|
||||
(3893, 3893, 0),
|
||||
(3895, 3895, 0),
|
||||
(3897, 3897, 0),
|
||||
(3953, 3966, 0),
|
||||
(3968, 3972, 0),
|
||||
(3902, 3903, 0),
|
||||
(3953, 3972, 0),
|
||||
(3974, 3975, 0),
|
||||
(3981, 3991, 0),
|
||||
(3993, 4028, 0),
|
||||
(4038, 4038, 0),
|
||||
(4141, 4144, 0),
|
||||
(4146, 4151, 0),
|
||||
(4153, 4154, 0),
|
||||
(4157, 4158, 0),
|
||||
(4184, 4185, 0),
|
||||
(4139, 4158, 0),
|
||||
(4182, 4185, 0),
|
||||
(4190, 4192, 0),
|
||||
(4194, 4196, 0),
|
||||
(4199, 4205, 0),
|
||||
(4209, 4212, 0),
|
||||
(4226, 4226, 0),
|
||||
(4229, 4230, 0),
|
||||
(4237, 4237, 0),
|
||||
(4253, 4253, 0),
|
||||
(4226, 4237, 0),
|
||||
(4239, 4239, 0),
|
||||
(4250, 4253, 0),
|
||||
(4352, 4447, 2),
|
||||
(4448, 4607, 0),
|
||||
(4957, 4959, 0),
|
||||
(5906, 5908, 0),
|
||||
(5906, 5909, 0),
|
||||
(5938, 5940, 0),
|
||||
(5970, 5971, 0),
|
||||
(6002, 6003, 0),
|
||||
(6068, 6069, 0),
|
||||
(6071, 6077, 0),
|
||||
(6086, 6086, 0),
|
||||
(6089, 6099, 0),
|
||||
(6068, 6099, 0),
|
||||
(6109, 6109, 0),
|
||||
(6155, 6157, 0),
|
||||
(6155, 6159, 0),
|
||||
(6277, 6278, 0),
|
||||
(6313, 6313, 0),
|
||||
(6432, 6434, 0),
|
||||
(6439, 6440, 0),
|
||||
(6450, 6450, 0),
|
||||
(6457, 6459, 0),
|
||||
(6679, 6680, 0),
|
||||
(6683, 6683, 0),
|
||||
(6742, 6742, 0),
|
||||
(6744, 6750, 0),
|
||||
(6752, 6752, 0),
|
||||
(6754, 6754, 0),
|
||||
(6757, 6764, 0),
|
||||
(6771, 6780, 0),
|
||||
(6432, 6443, 0),
|
||||
(6448, 6459, 0),
|
||||
(6679, 6683, 0),
|
||||
(6741, 6750, 0),
|
||||
(6752, 6780, 0),
|
||||
(6783, 6783, 0),
|
||||
(6832, 6848, 0),
|
||||
(6912, 6915, 0),
|
||||
(6964, 6964, 0),
|
||||
(6966, 6970, 0),
|
||||
(6972, 6972, 0),
|
||||
(6978, 6978, 0),
|
||||
(6832, 6862, 0),
|
||||
(6912, 6916, 0),
|
||||
(6964, 6980, 0),
|
||||
(7019, 7027, 0),
|
||||
(7040, 7041, 0),
|
||||
(7074, 7077, 0),
|
||||
(7080, 7081, 0),
|
||||
(7083, 7085, 0),
|
||||
(7142, 7142, 0),
|
||||
(7144, 7145, 0),
|
||||
(7149, 7149, 0),
|
||||
(7151, 7153, 0),
|
||||
(7212, 7219, 0),
|
||||
(7222, 7223, 0),
|
||||
(7040, 7042, 0),
|
||||
(7073, 7085, 0),
|
||||
(7142, 7155, 0),
|
||||
(7204, 7223, 0),
|
||||
(7376, 7378, 0),
|
||||
(7380, 7392, 0),
|
||||
(7394, 7400, 0),
|
||||
(7380, 7400, 0),
|
||||
(7405, 7405, 0),
|
||||
(7412, 7412, 0),
|
||||
(7416, 7417, 0),
|
||||
(7616, 7673, 0),
|
||||
(7675, 7679, 0),
|
||||
(7415, 7417, 0),
|
||||
(7616, 7679, 0),
|
||||
(8203, 8207, 0),
|
||||
(8232, 8238, 0),
|
||||
(8288, 8291, 0),
|
||||
(8288, 8292, 0),
|
||||
(8294, 8303, 0),
|
||||
(8400, 8432, 0),
|
||||
(8986, 8987, 2),
|
||||
(9001, 9002, 2),
|
||||
@@ -212,17 +204,16 @@ CELL_WIDTHS = [
|
||||
(11904, 11929, 2),
|
||||
(11931, 12019, 2),
|
||||
(12032, 12245, 2),
|
||||
(12272, 12283, 2),
|
||||
(12288, 12329, 2),
|
||||
(12330, 12333, 0),
|
||||
(12334, 12350, 2),
|
||||
(12272, 12329, 2),
|
||||
(12330, 12335, 0),
|
||||
(12336, 12350, 2),
|
||||
(12353, 12438, 2),
|
||||
(12441, 12442, 0),
|
||||
(12443, 12543, 2),
|
||||
(12549, 12591, 2),
|
||||
(12593, 12686, 2),
|
||||
(12688, 12771, 2),
|
||||
(12784, 12830, 2),
|
||||
(12783, 12830, 2),
|
||||
(12832, 12871, 2),
|
||||
(12880, 19903, 2),
|
||||
(19968, 42124, 2),
|
||||
@@ -234,36 +225,33 @@ CELL_WIDTHS = [
|
||||
(43010, 43010, 0),
|
||||
(43014, 43014, 0),
|
||||
(43019, 43019, 0),
|
||||
(43045, 43046, 0),
|
||||
(43043, 43047, 0),
|
||||
(43052, 43052, 0),
|
||||
(43204, 43205, 0),
|
||||
(43136, 43137, 0),
|
||||
(43188, 43205, 0),
|
||||
(43232, 43249, 0),
|
||||
(43263, 43263, 0),
|
||||
(43302, 43309, 0),
|
||||
(43335, 43345, 0),
|
||||
(43335, 43347, 0),
|
||||
(43360, 43388, 2),
|
||||
(43392, 43394, 0),
|
||||
(43443, 43443, 0),
|
||||
(43446, 43449, 0),
|
||||
(43452, 43453, 0),
|
||||
(43392, 43395, 0),
|
||||
(43443, 43456, 0),
|
||||
(43493, 43493, 0),
|
||||
(43561, 43566, 0),
|
||||
(43569, 43570, 0),
|
||||
(43573, 43574, 0),
|
||||
(43561, 43574, 0),
|
||||
(43587, 43587, 0),
|
||||
(43596, 43596, 0),
|
||||
(43644, 43644, 0),
|
||||
(43596, 43597, 0),
|
||||
(43643, 43645, 0),
|
||||
(43696, 43696, 0),
|
||||
(43698, 43700, 0),
|
||||
(43703, 43704, 0),
|
||||
(43710, 43711, 0),
|
||||
(43713, 43713, 0),
|
||||
(43756, 43757, 0),
|
||||
(43766, 43766, 0),
|
||||
(44005, 44005, 0),
|
||||
(44008, 44008, 0),
|
||||
(44013, 44013, 0),
|
||||
(43755, 43759, 0),
|
||||
(43765, 43766, 0),
|
||||
(44003, 44010, 0),
|
||||
(44012, 44013, 0),
|
||||
(44032, 55203, 2),
|
||||
(55216, 55295, 0),
|
||||
(63744, 64255, 2),
|
||||
(64286, 64286, 0),
|
||||
(65024, 65039, 0),
|
||||
@@ -272,8 +260,10 @@ CELL_WIDTHS = [
|
||||
(65072, 65106, 2),
|
||||
(65108, 65126, 2),
|
||||
(65128, 65131, 2),
|
||||
(65279, 65279, 0),
|
||||
(65281, 65376, 2),
|
||||
(65504, 65510, 2),
|
||||
(65529, 65531, 0),
|
||||
(66045, 66045, 0),
|
||||
(66272, 66272, 0),
|
||||
(66422, 66426, 0),
|
||||
@@ -285,102 +275,108 @@ CELL_WIDTHS = [
|
||||
(68325, 68326, 0),
|
||||
(68900, 68903, 0),
|
||||
(69291, 69292, 0),
|
||||
(69373, 69375, 0),
|
||||
(69446, 69456, 0),
|
||||
(69633, 69633, 0),
|
||||
(69506, 69509, 0),
|
||||
(69632, 69634, 0),
|
||||
(69688, 69702, 0),
|
||||
(69759, 69761, 0),
|
||||
(69811, 69814, 0),
|
||||
(69817, 69818, 0),
|
||||
(69744, 69744, 0),
|
||||
(69747, 69748, 0),
|
||||
(69759, 69762, 0),
|
||||
(69808, 69818, 0),
|
||||
(69821, 69821, 0),
|
||||
(69826, 69826, 0),
|
||||
(69837, 69837, 0),
|
||||
(69888, 69890, 0),
|
||||
(69927, 69931, 0),
|
||||
(69933, 69940, 0),
|
||||
(69927, 69940, 0),
|
||||
(69957, 69958, 0),
|
||||
(70003, 70003, 0),
|
||||
(70016, 70017, 0),
|
||||
(70070, 70078, 0),
|
||||
(70016, 70018, 0),
|
||||
(70067, 70080, 0),
|
||||
(70089, 70092, 0),
|
||||
(70095, 70095, 0),
|
||||
(70191, 70193, 0),
|
||||
(70196, 70196, 0),
|
||||
(70198, 70199, 0),
|
||||
(70094, 70095, 0),
|
||||
(70188, 70199, 0),
|
||||
(70206, 70206, 0),
|
||||
(70367, 70367, 0),
|
||||
(70371, 70378, 0),
|
||||
(70400, 70401, 0),
|
||||
(70209, 70209, 0),
|
||||
(70367, 70378, 0),
|
||||
(70400, 70403, 0),
|
||||
(70459, 70460, 0),
|
||||
(70464, 70464, 0),
|
||||
(70462, 70468, 0),
|
||||
(70471, 70472, 0),
|
||||
(70475, 70477, 0),
|
||||
(70487, 70487, 0),
|
||||
(70498, 70499, 0),
|
||||
(70502, 70508, 0),
|
||||
(70512, 70516, 0),
|
||||
(70712, 70719, 0),
|
||||
(70722, 70724, 0),
|
||||
(70726, 70726, 0),
|
||||
(70709, 70726, 0),
|
||||
(70750, 70750, 0),
|
||||
(70835, 70840, 0),
|
||||
(70842, 70842, 0),
|
||||
(70847, 70848, 0),
|
||||
(70850, 70851, 0),
|
||||
(71090, 71093, 0),
|
||||
(71100, 71101, 0),
|
||||
(71103, 71104, 0),
|
||||
(70832, 70851, 0),
|
||||
(71087, 71093, 0),
|
||||
(71096, 71104, 0),
|
||||
(71132, 71133, 0),
|
||||
(71219, 71226, 0),
|
||||
(71229, 71229, 0),
|
||||
(71231, 71232, 0),
|
||||
(71339, 71339, 0),
|
||||
(71341, 71341, 0),
|
||||
(71344, 71349, 0),
|
||||
(71351, 71351, 0),
|
||||
(71453, 71455, 0),
|
||||
(71458, 71461, 0),
|
||||
(71463, 71467, 0),
|
||||
(71727, 71735, 0),
|
||||
(71737, 71738, 0),
|
||||
(71995, 71996, 0),
|
||||
(71998, 71998, 0),
|
||||
(72003, 72003, 0),
|
||||
(72148, 72151, 0),
|
||||
(72154, 72155, 0),
|
||||
(72160, 72160, 0),
|
||||
(71216, 71232, 0),
|
||||
(71339, 71351, 0),
|
||||
(71453, 71467, 0),
|
||||
(71724, 71738, 0),
|
||||
(71984, 71989, 0),
|
||||
(71991, 71992, 0),
|
||||
(71995, 71998, 0),
|
||||
(72000, 72000, 0),
|
||||
(72002, 72003, 0),
|
||||
(72145, 72151, 0),
|
||||
(72154, 72160, 0),
|
||||
(72164, 72164, 0),
|
||||
(72193, 72202, 0),
|
||||
(72243, 72248, 0),
|
||||
(72243, 72249, 0),
|
||||
(72251, 72254, 0),
|
||||
(72263, 72263, 0),
|
||||
(72273, 72278, 0),
|
||||
(72281, 72283, 0),
|
||||
(72330, 72342, 0),
|
||||
(72344, 72345, 0),
|
||||
(72752, 72758, 0),
|
||||
(72760, 72765, 0),
|
||||
(72767, 72767, 0),
|
||||
(72273, 72283, 0),
|
||||
(72330, 72345, 0),
|
||||
(72751, 72758, 0),
|
||||
(72760, 72767, 0),
|
||||
(72850, 72871, 0),
|
||||
(72874, 72880, 0),
|
||||
(72882, 72883, 0),
|
||||
(72885, 72886, 0),
|
||||
(72873, 72886, 0),
|
||||
(73009, 73014, 0),
|
||||
(73018, 73018, 0),
|
||||
(73020, 73021, 0),
|
||||
(73023, 73029, 0),
|
||||
(73031, 73031, 0),
|
||||
(73098, 73102, 0),
|
||||
(73104, 73105, 0),
|
||||
(73109, 73109, 0),
|
||||
(73111, 73111, 0),
|
||||
(73459, 73460, 0),
|
||||
(73107, 73111, 0),
|
||||
(73459, 73462, 0),
|
||||
(73472, 73473, 0),
|
||||
(73475, 73475, 0),
|
||||
(73524, 73530, 0),
|
||||
(73534, 73538, 0),
|
||||
(78896, 78912, 0),
|
||||
(78919, 78933, 0),
|
||||
(92912, 92916, 0),
|
||||
(92976, 92982, 0),
|
||||
(94031, 94031, 0),
|
||||
(94033, 94087, 0),
|
||||
(94095, 94098, 0),
|
||||
(94176, 94179, 2),
|
||||
(94180, 94180, 0),
|
||||
(94192, 94193, 2),
|
||||
(94192, 94193, 0),
|
||||
(94208, 100343, 2),
|
||||
(100352, 101589, 2),
|
||||
(101632, 101640, 2),
|
||||
(110592, 110878, 2),
|
||||
(110576, 110579, 2),
|
||||
(110581, 110587, 2),
|
||||
(110589, 110590, 2),
|
||||
(110592, 110882, 2),
|
||||
(110898, 110898, 2),
|
||||
(110928, 110930, 2),
|
||||
(110933, 110933, 2),
|
||||
(110948, 110951, 2),
|
||||
(110960, 111355, 2),
|
||||
(113821, 113822, 0),
|
||||
(119143, 119145, 0),
|
||||
(119163, 119170, 0),
|
||||
(113824, 113827, 0),
|
||||
(118528, 118573, 0),
|
||||
(118576, 118598, 0),
|
||||
(119141, 119145, 0),
|
||||
(119149, 119170, 0),
|
||||
(119173, 119179, 0),
|
||||
(119210, 119213, 0),
|
||||
(119362, 119364, 0),
|
||||
@@ -395,8 +391,11 @@ CELL_WIDTHS = [
|
||||
(122907, 122913, 0),
|
||||
(122915, 122916, 0),
|
||||
(122918, 122922, 0),
|
||||
(123023, 123023, 0),
|
||||
(123184, 123190, 0),
|
||||
(123566, 123566, 0),
|
||||
(123628, 123631, 0),
|
||||
(124140, 124143, 0),
|
||||
(125136, 125142, 0),
|
||||
(125252, 125258, 0),
|
||||
(126980, 126980, 2),
|
||||
@@ -416,7 +415,9 @@ CELL_WIDTHS = [
|
||||
(127951, 127955, 2),
|
||||
(127968, 127984, 2),
|
||||
(127988, 127988, 2),
|
||||
(127992, 128062, 2),
|
||||
(127992, 127994, 2),
|
||||
(127995, 127999, 0),
|
||||
(128000, 128062, 2),
|
||||
(128064, 128064, 2),
|
||||
(128066, 128252, 2),
|
||||
(128255, 128317, 2),
|
||||
@@ -430,22 +431,24 @@ CELL_WIDTHS = [
|
||||
(128716, 128716, 2),
|
||||
(128720, 128722, 2),
|
||||
(128725, 128727, 2),
|
||||
(128732, 128735, 2),
|
||||
(128747, 128748, 2),
|
||||
(128756, 128764, 2),
|
||||
(128992, 129003, 2),
|
||||
(129008, 129008, 2),
|
||||
(129292, 129338, 2),
|
||||
(129340, 129349, 2),
|
||||
(129351, 129400, 2),
|
||||
(129402, 129483, 2),
|
||||
(129485, 129535, 2),
|
||||
(129648, 129652, 2),
|
||||
(129656, 129658, 2),
|
||||
(129664, 129670, 2),
|
||||
(129680, 129704, 2),
|
||||
(129712, 129718, 2),
|
||||
(129728, 129730, 2),
|
||||
(129744, 129750, 2),
|
||||
(129351, 129535, 2),
|
||||
(129648, 129660, 2),
|
||||
(129664, 129672, 2),
|
||||
(129680, 129725, 2),
|
||||
(129727, 129733, 2),
|
||||
(129742, 129755, 2),
|
||||
(129760, 129768, 2),
|
||||
(129776, 129784, 2),
|
||||
(131072, 196605, 2),
|
||||
(196608, 262141, 2),
|
||||
(917505, 917505, 0),
|
||||
(917536, 917631, 0),
|
||||
(917760, 917999, 0),
|
||||
]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
CONSOLE_HTML_FORMAT = """\
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<style>
|
||||
@@ -10,9 +11,8 @@ body {{
|
||||
}}
|
||||
</style>
|
||||
</head>
|
||||
<html>
|
||||
<body>
|
||||
<pre style="font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace"><code>{code}</code></pre>
|
||||
<pre style="font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace"><code style="font-family:inherit">{code}</code></pre>
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
|
||||
@@ -151,7 +151,6 @@ if __name__ == "__main__":
|
||||
|
||||
@dataclass
|
||||
class E:
|
||||
|
||||
size: Optional[int] = None
|
||||
ratio: int = 1
|
||||
minimum_size: int = 1
|
||||
|
||||
@@ -30,7 +30,6 @@ try:
|
||||
)
|
||||
|
||||
except (AttributeError, ImportError, ValueError):
|
||||
|
||||
# Fallback if we can't load the Windows DLL
|
||||
def get_windows_console_features() -> WindowsConsoleFeatures:
|
||||
features = WindowsConsoleFeatures()
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from typing import Iterable, List, Tuple
|
||||
from typing import Iterable
|
||||
|
||||
from ._loop import loop_last
|
||||
from .cells import cell_len, chop_cells
|
||||
@@ -7,7 +9,11 @@ from .cells import cell_len, chop_cells
|
||||
re_word = re.compile(r"\s*\S+\s*")
|
||||
|
||||
|
||||
def words(text: str) -> Iterable[Tuple[int, int, str]]:
|
||||
def words(text: str) -> Iterable[tuple[int, int, str]]:
|
||||
"""Yields each word from the text as a tuple
|
||||
containing (start_index, end_index, word). A "word" in this context may
|
||||
include the actual word and any whitespace to the right.
|
||||
"""
|
||||
position = 0
|
||||
word_match = re_word.match(text, position)
|
||||
while word_match is not None:
|
||||
@@ -17,35 +23,59 @@ def words(text: str) -> Iterable[Tuple[int, int, str]]:
|
||||
word_match = re_word.match(text, end)
|
||||
|
||||
|
||||
def divide_line(text: str, width: int, fold: bool = True) -> List[int]:
|
||||
divides: List[int] = []
|
||||
append = divides.append
|
||||
line_position = 0
|
||||
def divide_line(text: str, width: int, fold: bool = True) -> list[int]:
|
||||
"""Given a string of text, and a width (measured in cells), return a list
|
||||
of cell offsets which the string should be split at in order for it to fit
|
||||
within the given width.
|
||||
|
||||
Args:
|
||||
text: The text to examine.
|
||||
width: The available cell width.
|
||||
fold: If True, words longer than `width` will be folded onto a new line.
|
||||
|
||||
Returns:
|
||||
A list of indices to break the line at.
|
||||
"""
|
||||
break_positions: list[int] = [] # offsets to insert the breaks at
|
||||
append = break_positions.append
|
||||
cell_offset = 0
|
||||
_cell_len = cell_len
|
||||
|
||||
for start, _end, word in words(text):
|
||||
word_length = _cell_len(word.rstrip())
|
||||
if line_position + word_length > width:
|
||||
remaining_space = width - cell_offset
|
||||
word_fits_remaining_space = remaining_space >= word_length
|
||||
|
||||
if word_fits_remaining_space:
|
||||
# Simplest case - the word fits within the remaining width for this line.
|
||||
cell_offset += _cell_len(word)
|
||||
else:
|
||||
# Not enough space remaining for this word on the current line.
|
||||
if word_length > width:
|
||||
# The word doesn't fit on any line, so we can't simply
|
||||
# place it on the next line...
|
||||
if fold:
|
||||
chopped_words = chop_cells(word, max_size=width, position=0)
|
||||
for last, line in loop_last(chopped_words):
|
||||
# Fold the word across multiple lines.
|
||||
folded_word = chop_cells(word, width=width)
|
||||
for last, line in loop_last(folded_word):
|
||||
if start:
|
||||
append(start)
|
||||
|
||||
if last:
|
||||
line_position = _cell_len(line)
|
||||
cell_offset = _cell_len(line)
|
||||
else:
|
||||
start += len(line)
|
||||
else:
|
||||
# Folding isn't allowed, so crop the word.
|
||||
if start:
|
||||
append(start)
|
||||
line_position = _cell_len(word)
|
||||
elif line_position and start:
|
||||
cell_offset = _cell_len(word)
|
||||
elif cell_offset and start:
|
||||
# The word doesn't fit within the remaining space on the current
|
||||
# line, but it *can* fit on to the next (empty) line.
|
||||
append(start)
|
||||
line_position = _cell_len(word)
|
||||
else:
|
||||
line_position += _cell_len(word)
|
||||
return divides
|
||||
cell_offset = _cell_len(word)
|
||||
|
||||
return break_positions
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
@@ -53,4 +83,11 @@ if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
console = Console(width=10)
|
||||
console.print("12345 abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ 12345")
|
||||
print(chop_cells("abcdefghijklmnopqrstuvwxyz", 10, position=2))
|
||||
print(chop_cells("abcdefghijklmnopqrstuvwxyz", 10))
|
||||
|
||||
console = Console(width=20)
|
||||
console.rule()
|
||||
console.print("TextualはPythonの高速アプリケーション開発フレームワークです")
|
||||
|
||||
console.rule()
|
||||
console.print("アプリケーションは1670万色を使用でき")
|
||||
|
||||
@@ -27,7 +27,7 @@ class Align(JupyterMixin):
|
||||
renderable (RenderableType): A console renderable.
|
||||
align (AlignMethod): One of "left", "center", or "right""
|
||||
style (StyleType, optional): An optional style to apply to the background.
|
||||
vertical (Optional[VerticalAlginMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None.
|
||||
vertical (Optional[VerticalAlignMethod], optional): Optional vertical align, one of "top", "middle", or "bottom". Defaults to None.
|
||||
pad (bool, optional): Pad the right with spaces. Defaults to True.
|
||||
width (int, optional): Restrict contents to given width, or None to use default width. Defaults to None.
|
||||
height (int, optional): Set height of align renderable, or None to fit to contents. Defaults to None.
|
||||
|
||||
@@ -48,7 +48,6 @@ class Bar(JupyterMixin):
|
||||
def __rich_console__(
|
||||
self, console: Console, options: ConsoleOptions
|
||||
) -> RenderResult:
|
||||
|
||||
width = min(
|
||||
self.width if self.width is not None else options.max_width,
|
||||
options.max_width,
|
||||
|
||||
@@ -188,260 +188,224 @@ class Box:
|
||||
return "".join(parts)
|
||||
|
||||
|
||||
# fmt: off
|
||||
ASCII: Box = Box(
|
||||
"""\
|
||||
+--+
|
||||
| ||
|
||||
|-+|
|
||||
| ||
|
||||
|-+|
|
||||
|-+|
|
||||
| ||
|
||||
+--+
|
||||
""",
|
||||
"+--+\n"
|
||||
"| ||\n"
|
||||
"|-+|\n"
|
||||
"| ||\n"
|
||||
"|-+|\n"
|
||||
"|-+|\n"
|
||||
"| ||\n"
|
||||
"+--+\n",
|
||||
ascii=True,
|
||||
)
|
||||
|
||||
ASCII2: Box = Box(
|
||||
"""\
|
||||
+-++
|
||||
| ||
|
||||
+-++
|
||||
| ||
|
||||
+-++
|
||||
+-++
|
||||
| ||
|
||||
+-++
|
||||
""",
|
||||
"+-++\n"
|
||||
"| ||\n"
|
||||
"+-++\n"
|
||||
"| ||\n"
|
||||
"+-++\n"
|
||||
"+-++\n"
|
||||
"| ||\n"
|
||||
"+-++\n",
|
||||
ascii=True,
|
||||
)
|
||||
|
||||
ASCII_DOUBLE_HEAD: Box = Box(
|
||||
"""\
|
||||
+-++
|
||||
| ||
|
||||
+=++
|
||||
| ||
|
||||
+-++
|
||||
+-++
|
||||
| ||
|
||||
+-++
|
||||
""",
|
||||
"+-++\n"
|
||||
"| ||\n"
|
||||
"+=++\n"
|
||||
"| ||\n"
|
||||
"+-++\n"
|
||||
"+-++\n"
|
||||
"| ||\n"
|
||||
"+-++\n",
|
||||
ascii=True,
|
||||
)
|
||||
|
||||
SQUARE: Box = Box(
|
||||
"""\
|
||||
┌─┬┐
|
||||
│ ││
|
||||
├─┼┤
|
||||
│ ││
|
||||
├─┼┤
|
||||
├─┼┤
|
||||
│ ││
|
||||
└─┴┘
|
||||
"""
|
||||
"┌─┬┐\n"
|
||||
"│ ││\n"
|
||||
"├─┼┤\n"
|
||||
"│ ││\n"
|
||||
"├─┼┤\n"
|
||||
"├─┼┤\n"
|
||||
"│ ││\n"
|
||||
"└─┴┘\n"
|
||||
)
|
||||
|
||||
SQUARE_DOUBLE_HEAD: Box = Box(
|
||||
"""\
|
||||
┌─┬┐
|
||||
│ ││
|
||||
╞═╪╡
|
||||
│ ││
|
||||
├─┼┤
|
||||
├─┼┤
|
||||
│ ││
|
||||
└─┴┘
|
||||
"""
|
||||
"┌─┬┐\n"
|
||||
"│ ││\n"
|
||||
"╞═╪╡\n"
|
||||
"│ ││\n"
|
||||
"├─┼┤\n"
|
||||
"├─┼┤\n"
|
||||
"│ ││\n"
|
||||
"└─┴┘\n"
|
||||
)
|
||||
|
||||
MINIMAL: Box = Box(
|
||||
"""\
|
||||
╷
|
||||
│
|
||||
╶─┼╴
|
||||
│
|
||||
╶─┼╴
|
||||
╶─┼╴
|
||||
│
|
||||
╵
|
||||
"""
|
||||
" ╷ \n"
|
||||
" │ \n"
|
||||
"╶─┼╴\n"
|
||||
" │ \n"
|
||||
"╶─┼╴\n"
|
||||
"╶─┼╴\n"
|
||||
" │ \n"
|
||||
" ╵ \n"
|
||||
)
|
||||
|
||||
|
||||
MINIMAL_HEAVY_HEAD: Box = Box(
|
||||
"""\
|
||||
╷
|
||||
│
|
||||
╺━┿╸
|
||||
│
|
||||
╶─┼╴
|
||||
╶─┼╴
|
||||
│
|
||||
╵
|
||||
"""
|
||||
" ╷ \n"
|
||||
" │ \n"
|
||||
"╺━┿╸\n"
|
||||
" │ \n"
|
||||
"╶─┼╴\n"
|
||||
"╶─┼╴\n"
|
||||
" │ \n"
|
||||
" ╵ \n"
|
||||
)
|
||||
|
||||
MINIMAL_DOUBLE_HEAD: Box = Box(
|
||||
"""\
|
||||
╷
|
||||
│
|
||||
═╪
|
||||
│
|
||||
─┼
|
||||
─┼
|
||||
│
|
||||
╵
|
||||
"""
|
||||
" ╷ \n"
|
||||
" │ \n"
|
||||
" ═╪ \n"
|
||||
" │ \n"
|
||||
" ─┼ \n"
|
||||
" ─┼ \n"
|
||||
" │ \n"
|
||||
" ╵ \n"
|
||||
)
|
||||
|
||||
|
||||
SIMPLE: Box = Box(
|
||||
"""\
|
||||
|
||||
|
||||
──
|
||||
|
||||
|
||||
──
|
||||
|
||||
|
||||
"""
|
||||
" \n"
|
||||
" \n"
|
||||
" ── \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" ── \n"
|
||||
" \n"
|
||||
" \n"
|
||||
)
|
||||
|
||||
SIMPLE_HEAD: Box = Box(
|
||||
"""\
|
||||
|
||||
|
||||
──
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"""
|
||||
" \n"
|
||||
" \n"
|
||||
" ── \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
)
|
||||
|
||||
|
||||
SIMPLE_HEAVY: Box = Box(
|
||||
"""\
|
||||
|
||||
|
||||
━━
|
||||
|
||||
|
||||
━━
|
||||
|
||||
|
||||
"""
|
||||
" \n"
|
||||
" \n"
|
||||
" ━━ \n"
|
||||
" \n"
|
||||
" \n"
|
||||
" ━━ \n"
|
||||
" \n"
|
||||
" \n"
|
||||
)
|
||||
|
||||
|
||||
HORIZONTALS: Box = Box(
|
||||
"""\
|
||||
──
|
||||
|
||||
──
|
||||
|
||||
──
|
||||
──
|
||||
|
||||
──
|
||||
"""
|
||||
" ── \n"
|
||||
" \n"
|
||||
" ── \n"
|
||||
" \n"
|
||||
" ── \n"
|
||||
" ── \n"
|
||||
" \n"
|
||||
" ── \n"
|
||||
)
|
||||
|
||||
ROUNDED: Box = Box(
|
||||
"""\
|
||||
╭─┬╮
|
||||
│ ││
|
||||
├─┼┤
|
||||
│ ││
|
||||
├─┼┤
|
||||
├─┼┤
|
||||
│ ││
|
||||
╰─┴╯
|
||||
"""
|
||||
"╭─┬╮\n"
|
||||
"│ ││\n"
|
||||
"├─┼┤\n"
|
||||
"│ ││\n"
|
||||
"├─┼┤\n"
|
||||
"├─┼┤\n"
|
||||
"│ ││\n"
|
||||
"╰─┴╯\n"
|
||||
)
|
||||
|
||||
HEAVY: Box = Box(
|
||||
"""\
|
||||
┏━┳┓
|
||||
┃ ┃┃
|
||||
┣━╋┫
|
||||
┃ ┃┃
|
||||
┣━╋┫
|
||||
┣━╋┫
|
||||
┃ ┃┃
|
||||
┗━┻┛
|
||||
"""
|
||||
"┏━┳┓\n"
|
||||
"┃ ┃┃\n"
|
||||
"┣━╋┫\n"
|
||||
"┃ ┃┃\n"
|
||||
"┣━╋┫\n"
|
||||
"┣━╋┫\n"
|
||||
"┃ ┃┃\n"
|
||||
"┗━┻┛\n"
|
||||
)
|
||||
|
||||
HEAVY_EDGE: Box = Box(
|
||||
"""\
|
||||
┏━┯┓
|
||||
┃ │┃
|
||||
┠─┼┨
|
||||
┃ │┃
|
||||
┠─┼┨
|
||||
┠─┼┨
|
||||
┃ │┃
|
||||
┗━┷┛
|
||||
"""
|
||||
"┏━┯┓\n"
|
||||
"┃ │┃\n"
|
||||
"┠─┼┨\n"
|
||||
"┃ │┃\n"
|
||||
"┠─┼┨\n"
|
||||
"┠─┼┨\n"
|
||||
"┃ │┃\n"
|
||||
"┗━┷┛\n"
|
||||
)
|
||||
|
||||
HEAVY_HEAD: Box = Box(
|
||||
"""\
|
||||
┏━┳┓
|
||||
┃ ┃┃
|
||||
┡━╇┩
|
||||
│ ││
|
||||
├─┼┤
|
||||
├─┼┤
|
||||
│ ││
|
||||
└─┴┘
|
||||
"""
|
||||
"┏━┳┓\n"
|
||||
"┃ ┃┃\n"
|
||||
"┡━╇┩\n"
|
||||
"│ ││\n"
|
||||
"├─┼┤\n"
|
||||
"├─┼┤\n"
|
||||
"│ ││\n"
|
||||
"└─┴┘\n"
|
||||
)
|
||||
|
||||
DOUBLE: Box = Box(
|
||||
"""\
|
||||
╔═╦╗
|
||||
║ ║║
|
||||
╠═╬╣
|
||||
║ ║║
|
||||
╠═╬╣
|
||||
╠═╬╣
|
||||
║ ║║
|
||||
╚═╩╝
|
||||
"""
|
||||
"╔═╦╗\n"
|
||||
"║ ║║\n"
|
||||
"╠═╬╣\n"
|
||||
"║ ║║\n"
|
||||
"╠═╬╣\n"
|
||||
"╠═╬╣\n"
|
||||
"║ ║║\n"
|
||||
"╚═╩╝\n"
|
||||
)
|
||||
|
||||
DOUBLE_EDGE: Box = Box(
|
||||
"""\
|
||||
╔═╤╗
|
||||
║ │║
|
||||
╟─┼╢
|
||||
║ │║
|
||||
╟─┼╢
|
||||
╟─┼╢
|
||||
║ │║
|
||||
╚═╧╝
|
||||
"""
|
||||
"╔═╤╗\n"
|
||||
"║ │║\n"
|
||||
"╟─┼╢\n"
|
||||
"║ │║\n"
|
||||
"╟─┼╢\n"
|
||||
"╟─┼╢\n"
|
||||
"║ │║\n"
|
||||
"╚═╧╝\n"
|
||||
)
|
||||
|
||||
MARKDOWN: Box = Box(
|
||||
"""\
|
||||
|
||||
| ||
|
||||
|-||
|
||||
| ||
|
||||
|-||
|
||||
|-||
|
||||
| ||
|
||||
|
||||
""",
|
||||
" \n"
|
||||
"| ||\n"
|
||||
"|-||\n"
|
||||
"| ||\n"
|
||||
"|-||\n"
|
||||
"|-||\n"
|
||||
"| ||\n"
|
||||
" \n",
|
||||
ascii=True,
|
||||
)
|
||||
# fmt: on
|
||||
|
||||
# Map Boxes that don't render with raster fonts on to equivalent that do
|
||||
LEGACY_WINDOWS_SUBSTITUTIONS = {
|
||||
@@ -464,7 +428,6 @@ PLAIN_HEADED_SUBSTITUTIONS = {
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
from pip._vendor.rich.columns import Columns
|
||||
from pip._vendor.rich.panel import Panel
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import re
|
||||
from functools import lru_cache
|
||||
from typing import Callable, List
|
||||
from typing import Callable
|
||||
|
||||
from ._cell_widths import CELL_WIDTHS
|
||||
|
||||
@@ -119,33 +121,44 @@ def set_cell_size(text: str, total: int) -> str:
|
||||
start = pos
|
||||
|
||||
|
||||
# TODO: This is inefficient
|
||||
# TODO: This might not work with CWJ type characters
|
||||
def chop_cells(text: str, max_size: int, position: int = 0) -> List[str]:
|
||||
"""Break text in to equal (cell) length strings, returning the characters in reverse
|
||||
order"""
|
||||
_get_character_cell_size = get_character_cell_size
|
||||
characters = [
|
||||
(character, _get_character_cell_size(character)) for character in text
|
||||
]
|
||||
total_size = position
|
||||
lines: List[List[str]] = [[]]
|
||||
append = lines[-1].append
|
||||
def chop_cells(
|
||||
text: str,
|
||||
width: int,
|
||||
) -> list[str]:
|
||||
"""Split text into lines such that each line fits within the available (cell) width.
|
||||
|
||||
for character, size in reversed(characters):
|
||||
if total_size + size > max_size:
|
||||
lines.append([character])
|
||||
append = lines[-1].append
|
||||
total_size = size
|
||||
Args:
|
||||
text: The text to fold such that it fits in the given width.
|
||||
width: The width available (number of cells).
|
||||
|
||||
Returns:
|
||||
A list of strings such that each string in the list has cell width
|
||||
less than or equal to the available width.
|
||||
"""
|
||||
_get_character_cell_size = get_character_cell_size
|
||||
lines: list[list[str]] = [[]]
|
||||
|
||||
append_new_line = lines.append
|
||||
append_to_last_line = lines[-1].append
|
||||
|
||||
total_width = 0
|
||||
|
||||
for character in text:
|
||||
cell_width = _get_character_cell_size(character)
|
||||
char_doesnt_fit = total_width + cell_width > width
|
||||
|
||||
if char_doesnt_fit:
|
||||
append_new_line([character])
|
||||
append_to_last_line = lines[-1].append
|
||||
total_width = cell_width
|
||||
else:
|
||||
total_size += size
|
||||
append(character)
|
||||
append_to_last_line(character)
|
||||
total_width += cell_width
|
||||
|
||||
return ["".join(line) for line in lines]
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
print(get_character_cell_size("😽"))
|
||||
for line in chop_cells("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", 8):
|
||||
print(line)
|
||||
|
||||
@@ -592,7 +592,6 @@ def blend_rgb(
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
from .console import Console
|
||||
from .table import Table
|
||||
from .text import Text
|
||||
|
||||
@@ -278,6 +278,7 @@ class ConsoleRenderable(Protocol):
|
||||
|
||||
# A type that may be rendered by Console.
|
||||
RenderableType = Union[ConsoleRenderable, RichCast, str]
|
||||
"""A string or any object that may be rendered by Rich."""
|
||||
|
||||
# The result of calling a __rich_console__ method.
|
||||
RenderResult = Iterable[Union[RenderableType, Segment]]
|
||||
@@ -1925,7 +1926,6 @@ class Console:
|
||||
end (str, optional): String to write at end of print data. Defaults to "\\\\n".
|
||||
style (Union[str, Style], optional): A style to apply to output. Defaults to None.
|
||||
justify (str, optional): One of "left", "right", "center", or "full". Defaults to ``None``.
|
||||
overflow (str, optional): Overflow method: "crop", "fold", or "ellipsis". Defaults to None.
|
||||
emoji (Optional[bool], optional): Enable emoji code, or ``None`` to use console default. Defaults to None.
|
||||
markup (Optional[bool], optional): Enable markup, or ``None`` to use console default. Defaults to None.
|
||||
highlight (Optional[bool], optional): Enable automatic highlighting, or ``None`` to use console default. Defaults to None.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
from itertools import zip_longest
|
||||
from typing import (
|
||||
Iterator,
|
||||
TYPE_CHECKING,
|
||||
Iterable,
|
||||
Iterator,
|
||||
List,
|
||||
Optional,
|
||||
TypeVar,
|
||||
Union,
|
||||
overload,
|
||||
TypeVar,
|
||||
TYPE_CHECKING,
|
||||
)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -119,7 +119,7 @@ class Lines:
|
||||
|
||||
Args:
|
||||
console (Console): Console instance.
|
||||
width (int): Number of characters per line.
|
||||
width (int): Number of cells available per line.
|
||||
justify (str, optional): Default justify method for text: "left", "center", "full" or "right". Defaults to "left".
|
||||
overflow (str, optional): Default overflow for text: "crop", "fold", or "ellipsis". Defaults to "fold".
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ class ReprHighlighter(RegexHighlighter):
|
||||
r"(?P<number>(?<!\w)\-?[0-9]+\.?[0-9]*(e[-+]?\d+?)?\b|0x[0-9a-fA-F]*)",
|
||||
r"(?P<path>\B(/[-\w._+]+)*\/)(?P<filename>[-\w._+]*)?",
|
||||
r"(?<![\\\w])(?P<str>b?'''.*?(?<!\\)'''|b?'.*?(?<!\\)'|b?\"\"\".*?(?<!\\)\"\"\"|b?\".*?(?<!\\)\")",
|
||||
r"(?P<url>(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#]*)",
|
||||
r"(?P<url>(file|https|http|ws|wss)://[-0-9a-zA-Z$_+!`(),.?/;:&=%#~]*)",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@@ -103,7 +103,6 @@ class JSON:
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
|
||||
@@ -227,7 +227,6 @@ class Layout:
|
||||
from pip._vendor.rich.tree import Tree
|
||||
|
||||
def summary(layout: "Layout") -> Table:
|
||||
|
||||
icon = layout.splitter.get_tree_icon()
|
||||
|
||||
table = Table.grid(padding=(0, 1, 0, 0))
|
||||
@@ -403,7 +402,7 @@ class Layout:
|
||||
self._render_map = render_map
|
||||
layout_lines: List[List[Segment]] = [[] for _ in range(height)]
|
||||
_islice = islice
|
||||
for (region, lines) in render_map.values():
|
||||
for region, lines in render_map.values():
|
||||
_x, y, _layout_width, layout_height = region
|
||||
for row, line in zip(
|
||||
_islice(layout_lines, y, y + layout_height), lines
|
||||
|
||||
@@ -362,7 +362,7 @@ if __name__ == "__main__": # pragma: no cover
|
||||
table.add_column("Destination Currency")
|
||||
table.add_column("Exchange Rate")
|
||||
|
||||
for ((source, dest), exchange_rate) in exchange_rate_dict.items():
|
||||
for (source, dest), exchange_rate in exchange_rate_dict.items():
|
||||
table.add_row(
|
||||
source,
|
||||
dest,
|
||||
|
||||
@@ -82,7 +82,6 @@ class LiveRender:
|
||||
def __rich_console__(
|
||||
self, console: Console, options: ConsoleOptions
|
||||
) -> RenderResult:
|
||||
|
||||
renderable = self.renderable
|
||||
style = console.get_style(self.style)
|
||||
lines = console.render_lines(renderable, options, style=style, pad=False)
|
||||
|
||||
@@ -64,6 +64,9 @@ def escape(
|
||||
return f"{backslashes}{backslashes}\\{text}"
|
||||
|
||||
markup = _escape(escape_backslashes, markup)
|
||||
if markup.endswith("\\") and not markup.endswith("\\\\"):
|
||||
return markup + "\\"
|
||||
|
||||
return markup
|
||||
|
||||
|
||||
@@ -110,7 +113,10 @@ def render(
|
||||
|
||||
Args:
|
||||
markup (str): A string containing console markup.
|
||||
style: (Union[str, Style]): The style to use.
|
||||
emoji (bool, optional): Also render emoji code. Defaults to True.
|
||||
emoji_variant (str, optional): Optional emoji variant, either "text" or "emoji". Defaults to None.
|
||||
|
||||
|
||||
Raises:
|
||||
MarkupError: If there is a syntax error in the markup.
|
||||
@@ -226,7 +232,6 @@ def render(
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
MARKUP = [
|
||||
"[red]Hello World[/red]",
|
||||
"[magenta]Hello [b]World[/b]",
|
||||
|
||||
@@ -82,7 +82,9 @@ class Panel(JupyterMixin):
|
||||
style: StyleType = "none",
|
||||
border_style: StyleType = "none",
|
||||
width: Optional[int] = None,
|
||||
height: Optional[int] = None,
|
||||
padding: PaddingDimensions = (0, 1),
|
||||
highlight: bool = False,
|
||||
) -> "Panel":
|
||||
"""An alternative constructor that sets expand=False."""
|
||||
return cls(
|
||||
@@ -96,7 +98,9 @@ class Panel(JupyterMixin):
|
||||
style=style,
|
||||
border_style=border_style,
|
||||
width=width,
|
||||
height=height,
|
||||
padding=padding,
|
||||
highlight=highlight,
|
||||
expand=False,
|
||||
)
|
||||
|
||||
|
||||
@@ -211,8 +211,11 @@ def install(
|
||||
)
|
||||
builtins._ = value # type: ignore[attr-defined]
|
||||
|
||||
if "get_ipython" in globals():
|
||||
try:
|
||||
ip = get_ipython() # type: ignore[name-defined]
|
||||
except NameError:
|
||||
sys.displayhook = display_hook
|
||||
else:
|
||||
from IPython.core.formatters import BaseFormatter
|
||||
|
||||
class RichFormatter(BaseFormatter): # type: ignore[misc]
|
||||
@@ -236,8 +239,6 @@ def install(
|
||||
# replace plain text formatter with rich formatter
|
||||
rich_formatter = RichFormatter()
|
||||
ip.display_formatter.formatters["text/plain"] = rich_formatter
|
||||
else:
|
||||
sys.displayhook = display_hook
|
||||
|
||||
|
||||
class Pretty(JupyterMixin):
|
||||
@@ -708,9 +709,9 @@ def traverse(
|
||||
last=root,
|
||||
)
|
||||
|
||||
def iter_attrs() -> Iterable[
|
||||
Tuple[str, Any, Optional[Callable[[Any], str]]]
|
||||
]:
|
||||
def iter_attrs() -> (
|
||||
Iterable[Tuple[str, Any, Optional[Callable[[Any], str]]]]
|
||||
):
|
||||
"""Iterate over attr fields and values."""
|
||||
for attr in attr_fields:
|
||||
if attr.repr:
|
||||
@@ -985,7 +986,7 @@ if __name__ == "__main__": # pragma: no cover
|
||||
|
||||
from pip._vendor.rich import print
|
||||
|
||||
# print(Pretty(data, indent_guides=True, max_string=20))
|
||||
print(Pretty(data, indent_guides=True, max_string=20))
|
||||
|
||||
class Thing:
|
||||
def __repr__(self) -> str:
|
||||
|
||||
@@ -681,7 +681,7 @@ class TimeElapsedColumn(ProgressColumn):
|
||||
elapsed = task.finished_time if task.finished else task.elapsed
|
||||
if elapsed is None:
|
||||
return Text("-:--:--", style="progress.elapsed")
|
||||
delta = timedelta(seconds=int(elapsed))
|
||||
delta = timedelta(seconds=max(0, int(elapsed)))
|
||||
return Text(str(delta), style="progress.elapsed")
|
||||
|
||||
|
||||
@@ -710,7 +710,6 @@ class TaskProgressColumn(TextColumn):
|
||||
table_column: Optional[Column] = None,
|
||||
show_speed: bool = False,
|
||||
) -> None:
|
||||
|
||||
self.text_format_no_percentage = text_format_no_percentage
|
||||
self.show_speed = show_speed
|
||||
super().__init__(
|
||||
@@ -1114,7 +1113,7 @@ class Progress(JupyterMixin):
|
||||
|
||||
progress = Progress(
|
||||
SpinnerColumn(),
|
||||
*Progress.default_columns(),
|
||||
*Progress.get_default_columns(),
|
||||
"Elapsed:",
|
||||
TimeElapsedColumn(),
|
||||
)
|
||||
@@ -1636,7 +1635,6 @@ class Progress(JupyterMixin):
|
||||
|
||||
|
||||
if __name__ == "__main__": # pragma: no coverage
|
||||
|
||||
import random
|
||||
import time
|
||||
|
||||
@@ -1689,7 +1687,6 @@ if __name__ == "__main__": # pragma: no coverage
|
||||
console=console,
|
||||
transient=False,
|
||||
) as progress:
|
||||
|
||||
task1 = progress.add_task("[red]Downloading", total=1000)
|
||||
task2 = progress.add_task("[green]Processing", total=1000)
|
||||
task3 = progress.add_task("[yellow]Thinking", total=None)
|
||||
|
||||
@@ -156,7 +156,6 @@ class ProgressBar(JupyterMixin):
|
||||
def __rich_console__(
|
||||
self, console: Console, options: ConsoleOptions
|
||||
) -> RenderResult:
|
||||
|
||||
width = min(self.width or options.max_width, options.max_width)
|
||||
ascii = options.legacy_windows or options.ascii_only
|
||||
should_pulse = self.pulse or self.total is None
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user