├── .gitignore ├── Pipfile ├── Pipfile.lock ├── README.md ├── _drafts └── issue-152.md ├── _plugins ├── __init__.py ├── cc-byncnd-80x15.png ├── cc-byncnd-80x15.png.base64 ├── data_uri.py ├── extract_toc │ ├── README.md │ ├── __init__.py │ └── extract_toc.py ├── glider-small.png ├── glider-small.png.base64 ├── hacker.png ├── hacker.png.base64 ├── hackerl.png ├── hackerl.png.base64 ├── jekyll2pelican.py └── sitemap │ ├── Readme.rst │ ├── __init__.py │ └── sitemap.py ├── _themes └── pelican-bootstrap3 │ ├── LICENSE │ ├── README.md │ ├── screenshot-article.png │ ├── screenshot.png │ ├── static │ ├── css │ │ ├── bootstrap-glyphicons.css │ │ ├── bootstrap.amelia.min.css │ │ ├── bootstrap.cerulean.min.css │ │ ├── bootstrap.cosmo.min.css │ │ ├── bootstrap.cyborg.min.css │ │ ├── bootstrap.flatly.min.css │ │ ├── bootstrap.journal.min.css │ │ ├── bootstrap.min.css │ │ ├── bootstrap.readable.min.css │ │ ├── bootstrap.simplex.min.css │ │ ├── bootstrap.slate.min.css │ │ ├── bootstrap.spacelab.min.css │ │ ├── bootstrap.united.min.css │ │ ├── font-awesome.min.css │ │ ├── pygments.css │ │ ├── pygments │ │ │ ├── README.rst │ │ │ ├── autumn.css │ │ │ ├── borland.css │ │ │ ├── bw.css │ │ │ ├── colorful.css │ │ │ ├── default.css │ │ │ ├── emacs.css │ │ │ ├── friendly.css │ │ │ ├── fruity.css │ │ │ ├── github.css │ │ │ ├── manni.css │ │ │ ├── monokai.css │ │ │ ├── murphy.css │ │ │ ├── native.css │ │ │ ├── pastie.css │ │ │ ├── perldoc.css │ │ │ ├── tango.css │ │ │ ├── trac.css │ │ │ ├── vim.css │ │ │ ├── vs.css │ │ │ └── zenburn.css │ │ └── style.css │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── js │ │ ├── bootstrap.min.js │ │ ├── github.js │ │ ├── jXHR.js │ │ └── respond.min.js │ └── logo.png │ └── templates │ ├── 404.html │ ├── archives.html │ ├── article.html │ ├── author.html │ ├── authors.html │ ├── base.html │ ├── categories.html │ ├── category.html │ ├── includes │ ├── addthis.html │ ├── announce.html │ ├── article_info.html │ ├── comment_count.html │ ├── comments.html │ ├── disqus_comment_counts.html │ ├── disqus_comments.html │ ├── disqus_script.html │ ├── ga.html │ ├── github.html │ ├── page_comments.html │ ├── powerded.html │ ├── sidebar.html │ ├── taglist.html │ ├── translations.html │ └── utteranc_script.html │ ├── index.html │ ├── page.html │ ├── tag.html │ └── tags.html ├── content ├── Author │ ├── monkeyrobot.md │ └── zoomquiet.md ├── ElixirWeekly │ ├── exs-142.md │ ├── exs-143.md │ ├── exs-144.md │ └── exs-148.md ├── Issue │ ├── hello-world.md │ ├── issue-001.md │ ├── issue-002.md │ ├── issue-003.md │ ├── issue-004.md │ ├── issue-005.md │ ├── issue-006.md │ ├── issue-007.md │ ├── issue-008.md │ ├── issue-009.md │ ├── issue-010.md │ ├── issue-011.md │ ├── issue-012.md │ ├── issue-013.md │ ├── issue-014.md │ ├── issue-015.md │ ├── issue-016.md │ ├── issue-017.md │ ├── issue-018.md │ ├── issue-019.md │ ├── issue-020.md │ ├── issue-021.md │ ├── issue-022.md │ ├── issue-023.md │ ├── issue-024.md │ ├── issue-025.md │ ├── issue-026.md │ ├── issue-027.md │ ├── issue-028.md │ ├── issue-029.md │ ├── issue-042.md │ ├── issue-077.md │ ├── issue-078.md │ ├── issue-087.md │ ├── issue-088.md │ ├── issue-089.md │ ├── issue-090.md │ ├── issue-091.md │ ├── issue-092.md │ ├── issue-093.md │ ├── issue-094.md │ ├── issue-095.md │ ├── issue-096.md │ ├── issue-097.md │ ├── issue-098.md │ ├── issue-099-5.md │ ├── issue-099.md │ ├── issue-100.md │ ├── issue-101.md │ ├── issue-102.md │ ├── issue-103.md │ ├── issue-104.md │ ├── issue-105.md │ ├── issue-106.md │ ├── issue-107.md │ ├── issue-108.md │ ├── issue-109.md │ ├── issue-110.md │ ├── issue-111.md │ ├── issue-112.md │ ├── issue-113.md │ ├── issue-114.md │ ├── issue-115.md │ ├── issue-116.md │ ├── issue-117.md │ ├── issue-118.md │ ├── issue-119.md │ ├── issue-120.md │ ├── issue-121.md │ ├── issue-122.md │ ├── issue-123.md │ ├── issue-124.md │ ├── issue-125.md │ ├── issue-126.md │ ├── issue-127.md │ ├── issue-128.md │ ├── issue-129.md │ ├── issue-130.md │ ├── issue-131.md │ ├── issue-132.md │ ├── issue-133.md │ ├── issue-134.md │ ├── issue-135.md │ ├── issue-136.md │ ├── issue-137.md │ ├── issue-138.md │ ├── issue-139.md │ ├── issue-140.md │ ├── issue-141.md │ ├── issue-142.md │ ├── issue-143.md │ ├── issue-144.md │ ├── issue-145.md │ ├── issue-146.md │ ├── issue-147-top2014.md │ ├── issue-148.md │ ├── issue-149.md │ ├── issue-150.md │ ├── issue-151.md │ ├── issue-152.md │ ├── issue-153.md │ ├── issue-154.md │ ├── issue-155.md │ ├── issue-156.md │ ├── issue-157.md │ ├── issue-158.md │ ├── issue-159.md │ ├── issue-160.md │ ├── issue-161.md │ ├── issue-162.md │ ├── issue-163.md │ ├── issue-164.md │ ├── issue-165.md │ ├── issue-166.md │ ├── issue-167.md │ ├── issue-168.md │ ├── issue-169.md │ ├── issue-170.md │ ├── issue-171.md │ ├── issue-172.md │ ├── issue-173.md │ ├── issue-174.md │ ├── issue-175.md │ ├── issue-176.md │ ├── issue-177.md │ ├── issue-178.md │ ├── issue-179.md │ ├── issue-180.md │ ├── issue-181.md │ ├── issue-182.md │ ├── issue-183.md │ ├── issue-184.md │ ├── issue-185.md │ ├── issue-186.md │ ├── issue-187.md │ ├── issue-188.md │ ├── issue-189.md │ ├── issue-190.md │ ├── issue-191.md │ ├── issue-192.md │ ├── issue-193.md │ ├── issue-194.md │ ├── issue-195.md │ ├── issue-196.md │ ├── issue-197.md │ ├── issue-199.md │ ├── issue-200.md │ ├── issue-201.md │ ├── issue-202.md │ ├── issue-203.md │ ├── issue-204.md │ ├── issue-205.md │ ├── issue-206.md │ ├── issue-207.md │ ├── issue-208.md │ ├── issue-209.md │ ├── issue-210.md │ ├── issue-320.md │ ├── issue-349.md │ ├── issue-358.md │ ├── issue-359.md │ ├── issue-360.md │ ├── issue-361.md │ ├── issue-362.md │ ├── issue-363.md │ ├── issue-364.md │ ├── issue-365.md │ ├── issue-366.md │ ├── issue-367.md │ ├── issue-368.md │ ├── issue-369.md │ ├── issue-370.md │ ├── issue-371.md │ ├── issue-372.md │ ├── issue-373.md │ ├── issue-374.md │ ├── issue-375.md │ ├── issue-376.md │ ├── issue-377.md │ ├── issue-378.md │ ├── issue-379.md │ ├── issue-380.md │ ├── issue-381.md │ ├── issue-382.md │ ├── issue-383.md │ ├── issue-384.md │ ├── issue-385.md │ ├── issue-386.md │ ├── issue-387.md │ ├── issue-388.md │ ├── issue-389.md │ ├── issue-390.md │ ├── issue-391.md │ ├── issue-392.md │ ├── issue-393.md │ ├── issue-394.md │ ├── issue-395.md │ ├── issue-396.md │ ├── issue-397.md │ ├── issue-398.md │ ├── issue-399.md │ ├── issue-400.md │ ├── issue-401.md │ ├── issue-402.md │ ├── issue-403.md │ ├── issue-404.md │ ├── issue-405.md │ ├── issue-406.md │ ├── issue-407.md │ ├── issue-408.md │ ├── issue-409.md │ ├── issue-410.md │ ├── issue-411.md │ ├── issue-412.md │ ├── issue-413.md │ ├── issue-414.md │ ├── issue-415.md │ ├── issue-416.md │ ├── issue-417.md │ ├── issue-418.md │ ├── issue-419.md │ ├── issue-420.md │ ├── issue-421.md │ ├── issue-422.md │ ├── issue-423.md │ ├── issue-424.md │ ├── issue-425.md │ ├── issue-426.md │ ├── issue-427.md │ ├── issue-428.md │ ├── issue-429.md │ ├── issue-430.md │ ├── issue-431.md │ ├── issue-432.md │ ├── issue-433.md │ ├── issue-434.md │ ├── issue-435.md │ ├── issue-436.md │ ├── issue-437.md │ ├── issue-438.md │ ├── issue-439.md │ ├── issue-440.md │ ├── issue-441.md │ ├── issue-442.md │ ├── issue-443.md │ ├── issue-444.md │ ├── issue-445.md │ ├── issue-446.md │ ├── issue-447.md │ ├── issue-448.md │ ├── issue-449.md │ ├── issue-450.md │ ├── issue-451.md │ ├── issue-452.md │ ├── issue-453.md │ ├── issue-454.md │ ├── issue-455.md │ ├── issue-456.md │ ├── issue-457.md │ ├── issue-458.md │ ├── issue-459.md │ ├── issue-460.md │ ├── issue-461.md │ ├── issue-462.md │ ├── issue-463.md │ ├── issue-464.md │ ├── issue-465.md │ ├── issue-466.md │ ├── issue-467.md │ ├── issue-468.md │ ├── issue-469.md │ ├── issue-470.md │ ├── issue-471.md │ ├── issue-472.md │ ├── issue-473.md │ ├── issue-474.md │ ├── issue-475.md │ ├── issue-476.md │ ├── issue-477.md │ ├── issue-478.md │ ├── issue-479.md │ ├── issue-480.md │ ├── issue-481.md │ ├── issue-482.md │ ├── issue-483.md │ ├── issue-484.md │ ├── issue-485.md │ ├── issue-486.md │ ├── issue-487.md │ ├── issue-488.md │ ├── issue-489.md │ ├── issue-490.md │ ├── issue-491.md │ ├── issue-492.md │ ├── issue-493.md │ ├── issue-494.md │ ├── issue-495.md │ ├── issue-496.md │ ├── issue-497.md │ ├── issue-498.md │ ├── issue-499.md │ ├── issue-500.md │ ├── issue-501.md │ ├── issue-502.md │ ├── issue-503.md │ ├── issue-504.md │ ├── issue-505.md │ ├── issue-506.md │ ├── issue-507.md │ ├── issue-508.md │ ├── issue-509.md │ ├── issue-510.md │ ├── issue-511.md │ ├── issue-512.md │ ├── issue-513.md │ ├── issue-514.md │ ├── issue-515.md │ ├── issue-516.md │ ├── issue-517.md │ ├── issue-518.md │ ├── issue-519.md │ ├── issue-520.md │ ├── issue-521.md │ ├── issue-522.md │ ├── issue-523.md │ ├── issue-524.md │ ├── issue-525.md │ ├── issue-526.md │ ├── issue-527.md │ ├── issue-528.md │ ├── issue-529.md │ ├── issue-530.md │ ├── issue-531.md │ ├── issue-532.md │ ├── issue-533.md │ ├── issue-534.md │ ├── issue-535.md │ ├── issue-536.md │ ├── issue-537.md │ ├── issue-538.md │ ├── issue-539.md │ ├── issue-540.md │ ├── issue-541.md │ ├── issue-542.md │ ├── issue-543.md │ ├── issue-544.md │ ├── issue-545.md │ ├── issue-546.md │ ├── issue-547.md │ ├── issue-548.md │ ├── issue-549.md │ ├── issue-550.md │ ├── issue-551.md │ ├── issue-552.md │ ├── issue-553.md │ ├── issue-554.md │ ├── issue-555.md │ ├── issue-556.md │ ├── issue-557.md │ ├── issue-558.md │ ├── issue-559.md │ ├── issue-560.md │ ├── issue-561.md │ ├── issue-562.md │ ├── issue-563.md │ ├── issue-564.md │ ├── issue-565.md │ ├── issue-566.md │ ├── issue-567.md │ ├── issue-568.md │ ├── issue-569.md │ ├── issue-570.md │ ├── issue-571.md │ ├── issue-572.md │ ├── issue-573.md │ ├── issue-574.md │ ├── issue-575.md │ ├── issue-576.md │ ├── issue-577.md │ ├── issue-578.md │ ├── issue-579.md │ ├── issue-580.md │ ├── issue-581.md │ ├── issue-582.md │ ├── issue-583.md │ ├── issue-584.md │ ├── issue-585.md │ ├── issue-586.md │ ├── issue-587.md │ ├── issue-588.md │ ├── issue-589.md │ ├── issue-590.md │ ├── issue-591.md │ ├── issue-592.md │ ├── issue-593.md │ ├── issue-594.md │ ├── issue-595.md │ ├── issue-596.md │ ├── issue-597.md │ ├── issue-598.md │ ├── issue-599.md │ ├── issue-top2013.md │ └── issue-top2015.md ├── PgWeekly │ ├── issue-299.md │ └── issue-46.md ├── _extra │ ├── .nojekyll │ ├── CNAME │ ├── LICENSE │ ├── README.md │ ├── favicon.ico │ └── robots.txt ├── _images │ └── PyChina_logo_131217_zq_h200.png ├── _weekly.leo ├── importpython │ ├── issue-001.md │ ├── issue-002.md │ ├── issue-003.md │ ├── issue-004.md │ ├── issue-005.md │ ├── issue-006.md │ ├── issue-007.md │ ├── issue-008.md │ ├── issue-009.md │ ├── issue-010.md │ ├── issue-011.md │ ├── issue-012.md │ ├── issue-013.md │ ├── issue-014.md │ ├── issue-015.md │ ├── issue-016.md │ ├── issue-017.md │ ├── issue-018.md │ ├── issue-019.md │ ├── issue-020.md │ ├── issue-021.md │ ├── issue-022.md │ ├── issue-023.md │ ├── issue-024.md │ ├── issue-025.md │ ├── issue-026.md │ ├── issue-027.md │ ├── issue-028.md │ ├── issue-029.md │ ├── issue-030.md │ ├── issue-031.md │ ├── issue-032.md │ ├── issue-033.md │ ├── issue-034.md │ ├── issue-035.md │ ├── issue-036.md │ ├── issue-037.md │ ├── issue-038.md │ ├── issue-039.md │ ├── issue-040.md │ ├── issue-041.md │ ├── issue-042.md │ ├── issue-043.md │ ├── issue-044.md │ ├── issue-045.md │ ├── issue-046.md │ ├── issue-047.md │ ├── issue-048.md │ ├── issue-049.md │ ├── issue-050.md │ ├── issue-051.md │ ├── issue-052.md │ ├── issue-053.md │ ├── issue-054.md │ ├── issue-055.md │ ├── issue-056.md │ ├── issue-057.md │ ├── issue-058.md │ ├── issue-059.md │ ├── issue-060.md │ ├── issue-061.md │ ├── issue-062.md │ ├── issue-063.md │ ├── issue-064.md │ ├── issue-065.md │ ├── issue-066.md │ ├── issue-067.md │ ├── issue-068.md │ ├── issue-069.md │ ├── issue-070.md │ ├── issue-071.md │ ├── issue-072.md │ ├── issue-073.md │ ├── issue-074.md │ ├── issue-075.md │ ├── issue-076.md │ ├── issue-077.md │ ├── issue-078.md │ ├── issue-079.md │ ├── issue-080.md │ ├── issue-081.md │ ├── issue-082.md │ ├── issue-083.md │ ├── issue-084.md │ ├── issue-085.md │ ├── issue-086.md │ ├── issue-087.md │ ├── issue-088.md │ ├── issue-089.md │ ├── issue-090.md │ ├── issue-091.md │ ├── issue-092.md │ ├── issue-093.md │ ├── issue-094.md │ ├── issue-095.md │ ├── issue-096.md │ ├── issue-097.md │ ├── issue-098.md │ ├── issue-099.md │ ├── issue-100.md │ ├── issue-101.md │ ├── issue-102.md │ ├── issue-103.md │ ├── issue-104.md │ ├── issue-105.md │ ├── issue-106.md │ ├── issue-107.md │ ├── issue-108.md │ ├── issue-109.md │ ├── issue-110.md │ ├── issue-111.md │ ├── issue-112.md │ ├── issue-113.md │ ├── issue-114.md │ ├── issue-115.md │ ├── issue-116.md │ ├── issue-117.md │ ├── issue-118.md │ ├── issue-119.md │ ├── issue-120.md │ ├── issue-121.md │ ├── issue-122.md │ ├── issue-123.md │ ├── issue-124.md │ ├── issue-125.md │ ├── issue-126.md │ ├── issue-127.md │ ├── issue-128.md │ ├── issue-129.md │ ├── issue-130.md │ ├── issue-131.md │ ├── issue-132.md │ ├── issue-133.md │ ├── issue-134.md │ ├── issue-135.md │ ├── issue-136.md │ ├── issue-137.md │ ├── issue-138.md │ ├── issue-139.md │ ├── issue-140.md │ ├── issue-141.md │ ├── issue-142.md │ ├── issue-143.md │ ├── issue-144.md │ ├── issue-145.md │ ├── issue-146.md │ ├── issue-147.md │ ├── issue-148.md │ ├── issue-149.md │ ├── issue-150.md │ ├── issue-151.md │ ├── issue-152.md │ ├── issue-153.md │ ├── issue-154.md │ ├── issue-155.md │ ├── issue-156.md │ ├── issue-157.md │ ├── issue-158.md │ ├── issue-159.md │ ├── issue-160.md │ ├── issue-161.md │ ├── issue-162.md │ ├── issue-163.md │ ├── issue-164.md │ ├── issue-165.md │ ├── issue-166.md │ ├── issue-167.md │ ├── issue-168.md │ ├── issue-169.md │ ├── issue-170.md │ ├── issue-171.md │ ├── issue-172.md │ ├── issue-173.md │ ├── issue-174.md │ ├── issue-175.md │ ├── issue-176.md │ ├── issue-177.md │ ├── issue-179.md │ ├── issue-180.md │ ├── issue-181.md │ ├── issue-182.md │ ├── issue-183.md │ ├── issue-184.md │ ├── issue-185.md │ ├── issue-186.md │ ├── issue-187.md │ ├── issue-tpl.md │ └── why-another-py-newsletter.md ├── jekyll2pelican.md ├── pages │ ├── about.md │ └── design.md ├── pyrecap │ ├── 2023-42.md │ ├── 2023-43.md │ ├── 2023-44.md │ ├── 2023-45.md │ ├── 2023-46.md │ ├── 2023-47.md │ ├── 2023-48.md │ ├── 2023-49.md │ ├── 2023-50.md │ ├── 2023-51.md │ ├── 2023-52.md │ ├── 2024-01.md │ ├── 2024-02.md │ ├── 2024-03.md │ ├── 2024-04.md │ ├── 2024-05.md │ ├── 2024-06.md │ ├── 2024-07.md │ ├── 2024-08.md │ ├── 2024-09.md │ ├── 2024-10.md │ ├── 2024-11.md │ ├── 2024-12.md │ ├── 2024-13.md │ ├── 2024-14.md │ ├── 2024-15.md │ ├── 2024-16.md │ ├── 2024-17.md │ ├── 2024-18.md │ ├── 2024-19.md │ ├── 2024-20.md │ ├── 2024-21.md │ ├── 2024-22.md │ ├── 2024-23.md │ ├── 2024-24.md │ ├── 2024-25.md │ ├── 2024-26.md │ ├── 2024-27.md │ ├── 2024-28.md │ ├── 2024-29.md │ ├── 2024-30.md │ ├── 2024-31.md │ ├── 2024-32.md │ ├── 2024-33.md │ ├── 2024-34.md │ ├── 2024-35.md │ ├── 2024-36.md │ ├── 2024-37.md │ ├── 2024-38.md │ ├── 2024-39.md │ ├── 2024-40.md │ ├── 2024-41.md │ ├── 2024-42.md │ ├── 2024-43.md │ ├── 2024-44.md │ ├── 2024-45.md │ ├── 2024-46.md │ ├── 2024-47.md │ ├── 2024-48.md │ ├── 2024-49.md │ ├── 2024-50.md │ ├── 2024-51.md │ ├── 2024-52.md │ ├── 2024-trend.md │ ├── 2024-trend.mmd │ ├── 2025-01.md │ ├── 2025-02.md │ ├── 2025-03.md │ ├── 2025-04.md │ ├── 2025-05.md │ ├── 2025-06.md │ ├── 2025-07.md │ ├── 2025-08.md │ ├── 2025-09.md │ ├── 2025-10.md │ ├── 2025-11.md │ ├── 2025-12.md │ ├── 2025-13.md │ ├── 2025-14.md │ ├── 2025-15.md │ ├── 2025-16.md │ ├── 2025-17.md │ ├── 2025-18.md │ ├── 2025-19.md │ ├── 2025-20.md │ └── 2025-21.md └── python-weekly │ ├── README.log │ ├── issue#419.md │ ├── issue#420.md │ ├── issue#421.md │ ├── issue#422.md │ ├── issue#423.md │ ├── issue#424.md │ ├── issue#425.md │ ├── issue#426.md │ ├── issue#427.md │ ├── issue#428.md │ ├── issue#429.md │ ├── issue#430.md │ ├── issue#431.md │ ├── issue#432.md │ ├── issue#433.md │ ├── issue#434.md │ ├── issue#435.md │ ├── issue#436.md │ ├── issue#437.md │ ├── issue#438.md │ ├── issue#439.md │ ├── issue#440.md │ ├── issue#441.md │ ├── issue#442.md │ ├── issue#443.md │ ├── issue#444.md │ ├── issue#445.md │ ├── issue#446.md │ ├── issue#447.md │ ├── issue#448.md │ ├── issue#449.md │ ├── issue#450.md │ ├── issue#451.md │ ├── issue#452.md │ ├── issue#453.md │ ├── issue#454.md │ ├── issue#455.md │ ├── issue#456.md │ ├── issue#457.md │ ├── issue#458.md │ ├── issue#459.md │ ├── issue#460.md │ ├── issue#461.md │ ├── issue#462.md │ ├── issue#463.md │ ├── issue#464.md │ ├── issue#465.md │ ├── issue#466.md │ ├── issue#467.md │ ├── issue#468.md │ ├── issue#469.md │ ├── issue#470.md │ ├── issue#471.md │ ├── issue#472.md │ ├── issue#473.md │ ├── issue#474.md │ ├── issue#475.md │ ├── issue#476.md │ ├── issue#477.md │ ├── issue#478.md │ ├── issue#479.md │ ├── issue#480.md │ ├── issue#481.md │ ├── issue#482.md │ ├── issue#483.md │ ├── issue#484.md │ ├── issue#485.md │ ├── issue#486.md │ ├── issue#487.md │ ├── issue#488.md │ ├── issue#489.md │ ├── issue#490.md │ ├── issue#491.md │ ├── issue#492.md │ ├── issue#493.md │ ├── issue#494.md │ ├── issue#495.md │ ├── issue#496.md │ ├── issue#497.md │ ├── issue#498.md │ ├── issue#499.md │ ├── issue#500.md │ ├── issue#501.md │ ├── issue#502.md │ ├── issue#503.md │ ├── issue#504.md │ ├── issue#505.md │ ├── issue#506.md │ ├── issue#507.md │ ├── issue#508.md │ ├── issue#509.md │ ├── issue#510.md │ ├── issue#511.md │ ├── issue#512.md │ ├── issue#513.md │ ├── issue#514.md │ ├── issue#515.md │ ├── issue#516.md │ ├── issue#517.md │ ├── issue#518.md │ ├── issue#519.md │ ├── issue#520.md │ ├── issue#521.md │ ├── issue#522.md │ ├── issue#523.md │ ├── issue#524.md │ ├── issue#525.md │ ├── issue#526.md │ ├── issue#527.md │ └── issue#528.md ├── develop_server.sh ├── fabfile.py ├── pelicanconf.py ├── pub4trigger.sh ├── publishconf.py ├── requirements.txt └── tasks.py /.gitignore: -------------------------------------------------------------------------------- 1 | log/ 2 | 3 | *.pyc 4 | .python-version 5 | local_settings.ini 6 | 7 | 7niu/ 8 | 7niu 9 | pages/ 10 | pages 11 | 12 | output/ 13 | output 14 | 15 | .DS_Store 16 | bin/ 17 | include/ 18 | lib/ 19 | cache/ 20 | .ropeproject 21 | .idea/* 22 | -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "pypi" 3 | url = "https://pypi.org/simple" 4 | verify_ssl = true 5 | 6 | [dev-packages] 7 | 8 | [packages] 9 | beautifulsoup4 = "*" 10 | blinker = ">=1.3" 11 | docutils = ">=0.12" 12 | ecdsa = ">=0.10" 13 | fabric = ">=1.8.1" 14 | feedgenerator = ">=1.7" 15 | fexpect = ">=0.2.post17" 16 | fontawesome-markdown = ">=0.2.1" 17 | jinja2 = ">=2.10.1" 18 | markdown = ">=2.3.1" 19 | markupsafe = ">=0.23" 20 | paramiko = "*" 21 | pelican = ">=3.5.0" 22 | pelican-gist = ">=0.3.0" 23 | pelican-gravatar-plus = ">=0.0.1" 24 | pelicanfly = ">=0.4.2" 25 | pexpect = ">=3.1" 26 | pycrypto = "*" 27 | pygments = "*" 28 | python-dateutil = ">=2.2" 29 | pytz = ">=2014.9" 30 | requests = "*" 31 | shortuuid = ">=0.4" 32 | six = ">=1.8.0" 33 | smartypants = ">=1.8.3" 34 | typogrify = ">=2.0.1" 35 | unidecode = ">=0.04.16" 36 | wsgiref = ">=0.1.2" 37 | 38 | [requires] 39 | python_version = "2.7" 40 | -------------------------------------------------------------------------------- /Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_meta": { 3 | "hash": { 4 | "sha256": "ae4bdd7d4157baab65ae9d0e8389a6011e6b640995372c45ec81fa5d1ddfae9f" 5 | }, 6 | "pipfile-spec": 6, 7 | "requires": { 8 | "python_version": "2.7" 9 | }, 10 | "sources": [ 11 | { 12 | "name": "pypi", 13 | "url": "https://pypi.org/simple", 14 | "verify_ssl": true 15 | } 16 | ] 17 | }, 18 | "default": {}, 19 | "develop": {} 20 | } 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [weekly.PyChina.org](http://weekly.pychina.org/) 2 | 3 | in fact from 2003 there is CZUG.org ~ the 1st(and only one) focus Zope tech community be set up; 4 | 5 | so years ago, there is soooooooo many python tech abt. commuity in China 6 | 7 | but never group as one unify community brand, 8 | like as: perl-china/ruby-china etc. 9 | 10 | so after PyCon2013China, some `old` Chinese Pythonista together and building: 11 | 12 | ![](PyChina_logo_131217_zq_h200.png) 13 | 14 | ## goal 15 | 16 | - by Pythonner in China Operations 17 | - as Pythonner in China Deleloping 18 | - for Pythonista in Global support events organizing srvice 19 | 20 | 21 | ## organizer 22 | 23 | - Zoom.Quiet 24 | 25 | ## path 26 | 27 | - 基于 `gh-pages` 专用分支发布 28 | - 所以, 本地要复制出两个仓库 29 | + `master` 分支进行内容撰写 30 | + 另外一个仓库, 切换为 `gh-pages` 分支 31 | * 并链接为 `output` 输出目录 32 | * 这样, 才可以合理使用 `fab` 指令来完成自动化本地编译和发布 33 | 34 | 35 | ## usage 36 | How to update the site contents 37 | 38 | main loop: 39 | 40 | 1. git clone 41 | 1. edit some .md in `content/` 42 | 1. `fab build && fab serve` for test local 43 | 1. `cd output` this is another repo. yet! 44 | 1. mark the article you have applied on GitCafe Ticket 45 | 1. git add->ci->push 46 | 1. `fab deploy` published all 47 | 48 | ### writing 49 | 50 | - fork https://gitcafe.com/CPyUG/PyChina into local 51 | - or becamed https://gitcafe.com/CPyUG member hold the repo. ACL 52 | - cd into content/ 53 | - the sub-dir means: 54 | 55 | content/ 56 | +- Events 首字母大写的是分类目录 收集对应文章 57 | +- Volunteer ...志愿者 58 | +- _extra 扩展功能文件 e.g robots.txt 59 | +- _files 站内文件 60 | +- _images 站内图片 61 | `- pages 类似 about 的导航栏文档 62 | 63 | #### 文章格式 64 | - 标准 Markdown 格式 65 | - 以 .md 为后缀 66 | - 文件名不得使用中文/空格/符号 67 | - 内容模板: 68 | 69 | Title: 中E可以混杂的标题 70 | Date: 2013-12-09 71 | Tags: people, shanghai 72 | Slug: sting-chen 73 | Author: Zoom.Quiet 74 | 75 | - 其中: 76 | - `Date:` 如果没有将使用文件的系统时间 77 | - `Tags:` 使用逗号作间隔, 不宜过多,建议三个为界,以人物/行为/目标领域 为方向进行定义 78 | - 参考: [如何规划blog的标签(tag)和分类 - 心内求法 - 博客园](http://www.cnblogs.com/holbrook/archive/2012/11/05/2755268.html) 79 | - `Slug:` 是实际输出的页面文件名, 建议全部小写E文, 使用中划线, 不使用特殊符号 80 | 81 | 82 | ### deploy 83 | 84 | 支持本地调试! 使用 `fabric` 进行管理, 支持的命令: 85 | 86 | fab 87 | Available commands: 88 | 89 | build 编译所有页面 90 | deploy 向主机部署所有页面 91 | reserve 重编译所有页面再启动本地服务 92 | serve 启动本地服务 localhost:8000 93 | 94 | 95 | `注意!` 向主机部署,需要有相关权限,并在本地配置好对应 SSH 信息 96 | 97 | ### design 98 | 99 | 基于 [pelican-bootstrap3](https://github.com/getpelican/pelican-themes/tree/master/pelican-bootstrap3) 深度定制 100 | 101 | - 配置: `pelicanconf.py` 102 | - 样式: `_themes/pelican-bootstrap3/` 103 | - 插件: `_plugins/` 104 | 105 | 106 | ### 贡献 107 | 108 | 提交你的贡献到`CPyUG / weekly`,先确保自己的仓库与上游仓库同步 109 | 110 | # 在 Fork 的代码库中添加上游代码库的 remote 源,(操作一次就可以,以后不必每次添加) 111 | git remote add upstream https://gitcafe.com/CPyUG/weekly.git 112 | 113 | # 查看添加的上游仓库 114 | git remote -v 115 | 116 | # 提交本地修改 117 | git add . 118 | git commit -m "****" 119 | 120 | # 同步上游版本 121 | git remote update upstream 122 | git rebase upstream/master 123 | 124 | # push代码到gitcafe 125 | git push origin master 126 | 127 | # pull request 128 | 在自己gitcafe项目仓库下提交pull request到上游仓库 129 | 130 | 131 | 132 | ## changelog 133 | 134 | - 191028 ZQ 提醒本地发布环境 135 | - 190818 ZQ ++ CNZZ WA support 136 | - 131219 base pelican build and through qiniu.com publish 137 | 138 | -------------------------------------------------------------------------------- /_drafts/issue-152.md: -------------------------------------------------------------------------------- 1 | Title: 蠎周刊 1512: 2 | Slug: issue-152 3 | Date: 2015-02-7 23:23 4 | Tags: Weekly,Pycoder,Zh 5 | 6 | 为了收集中国项目,先放出来占个坑, 7 | 一般 官方是周6才发布的,,, 8 | 9 | 10 | ![Pycoder's Weekly](https://gallery.mailchimp.com/9735795484d2e4c204da82a29/images/Image_202014_01_22_20at_2010.45.04_20AM9789bf.png) 11 | 12 | 13 | - 原文: 14 | 15 | 16 | ## 搜罗Py万物 的周刊 17 | 18 | 亲, 19 | 20 | 21 | 大家多分享[文章](http://pycoders.com/submissions/) 22 | 俺们才折腾的出又一周的美好呢. 23 | 24 | 喜欢就 25 | 在 [Gratipay](https://www.gratipay.com/PycodersWeekly) 26 | 支持俺们吧! 27 | 当然的,俺们也在[twitter](http://www.twitter.com/pycoders) 28 | 29 | 30 | 31 | ## 新闻 32 | 33 | 34 | 35 | 36 | ## 项目 37 | 38 | 39 | 40 | 41 | 42 | ## 文章 43 | 44 | 45 | ## DAMA 46 | (`大妈私人无责任播报`) 47 | 48 | - [像Python专家一样编程: 道地的Python](http://www.ch-linghu.me/article/idiomatic/handout_cn.html) 49 | 50 | (`是也乎:` 51 | 52 | 精译自: [Code Like a Pythonista: Idiomatic Python](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html) 53 | 54 | 大妈收藏了有4年多了,一直想翻译的, 55 | 结果还是给老行者给翻译了,,, 56 | 严正推荐! 57 | 58 | ) 59 | 60 | # 是也乎 61 | 62 | - 150124 [Zoom.Quiet](http://zoomquiet.org/) 用时 42 分钟 完成快译. 63 | - 150124 [Zoom.Quiet](http://zoomquiet.org/) 用时 7 分钟 完成格式转抄. 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /_plugins/__init__.py: -------------------------------------------------------------------------------- 1 | #from .gzip_cache import * 2 | -------------------------------------------------------------------------------- /_plugins/cc-byncnd-80x15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PyChina/weekly/54053522d598150b1cca315f557c53069c095deb/_plugins/cc-byncnd-80x15.png -------------------------------------------------------------------------------- /_plugins/cc-byncnd-80x15.png.base64: -------------------------------------------------------------------------------- 1 | data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAPCAMAAABEF7i9AAAAllBMVEUAAAANDQwNDQ0NDg0ODg4PEA8REREZGRkgICAhISEiIiIkJSMnKCcuMC4xMzEzMzM5Ozk7PTtBQkFCQkJDQ0NERERLTEtVVVVbXltmZmZna2dydnF3d3d9gn2AgICGhoaHh4eIiIiPkI+UmZOZmZmqqqqrsaqzuLK6v7q7u7vFxsXGysbIzMjKzsrMzMzd3d3u7u7///+uXr4hAAAA1UlEQVR42q2T2Q6CMBBFR0VUXHCritQFgXGvnf//Oa2ZNEB4UXrTl97enkxmWnAvcioDRKMtJGwJL0V8duEvWWDqGR4TR4iXfUPgbEBWCjaIj1UzYCchFYDQAgJFYoL4PHF/OVTIG7sEMLEKcAdXCtYkpa+znGQH8XL7nvOyed7VGGVgDEqbqaxD+kh6iOc7V2hjfJfxVYNqKxSRr2VGsl2ukNO85/v1hu1hO6Hch0gLCF+0HBd6yLEfe4jTvuMpp62jBS6GDt4hxnBg3rzX9Kc4FTjXG9Q1UZbZlOQyAAAAAElFTkSuQmCC -------------------------------------------------------------------------------- /_plugins/data_uri.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | #!/usr/bin/env python 3 | import sys 4 | 5 | if __name__ == '__main__': 6 | if 3 != len(sys.argv) : 7 | print '''Usage: 8 | data_uri.py /path/2/imgfile exp.base64 9 | ''' 10 | else: 11 | imgf = sys.argv[1] 12 | expf = sys.argv[2] 13 | data_uri = open(imgf, "rb").read().encode("base64").replace("\n", "") 14 | img_tag = 'data:image/png;base64,{0}'.format(data_uri) 15 | open(expf,"w").write(img_tag) 16 | #print img_tag 17 | -------------------------------------------------------------------------------- /_plugins/extract_toc/README.md: -------------------------------------------------------------------------------- 1 | Extract Table of Content 2 | ======================== 3 | 4 | A Pelican plugin to extract table of contents (ToC) from `article.content` and 5 | place it in its own `article.toc` variable for use in templates. 6 | 7 | Copyright (c) Talha Mansoor 8 | 9 | Author | Talha Mansoor 10 | ----------------|----- 11 | Author Email | talha131@gmail.com 12 | Author Homepage | http://onCrashReboot.com 13 | Github Account | https://github.com/talha131 14 | 15 | 16 | Acknowledgement 17 | --------------- 18 | 19 | Thanks to [Avaris](https://github.com/avaris) for going out of the way to help 20 | me fix Unicode issues and doing a thorough code review. 21 | 22 | Thanks to [gw0](http://gw.tnode.com/) for adding Pandoc reader support. 23 | 24 | 25 | Why do you need it? 26 | =================== 27 | 28 | Pelican can generate ToC of reST and Markdown files, using markup's respective 29 | directive and extension. Such ToC is generated and placed at the beginning of 30 | `article.content` like a string. Consequently it can not be placed anywhere 31 | else on the page (eg. `