1 đến 001 con trăn

PEP là viết tắt của Đề xuất cải tiến Python. PEP là một tài liệu thiết kế cung cấp thông tin cho cộng đồng Python hoặc mô tả một tính năng mới cho Python hoặc các quy trình hoặc môi trường của nó. PEP phải cung cấp thông số kỹ thuật ngắn gọn về tính năng và cơ sở lý luận cho tính năng

Chúng tôi dự định PEP sẽ là cơ chế chính để đề xuất các tính năng mới quan trọng, để thu thập ý kiến ​​đóng góp của cộng đồng về một vấn đề và để ghi lại các quyết định thiết kế đã đưa vào Python. Tác giả PEP chịu trách nhiệm xây dựng sự đồng thuận trong cộng đồng và ghi lại các ý kiến ​​bất đồng

Vì PEP được duy trì dưới dạng tệp văn bản trong kho lưu trữ được phiên bản nên lịch sử sửa đổi của chúng là bản ghi lịch sử của đề xuất tính năng. Bản ghi lịch sử này có sẵn bằng các lệnh git thông thường để truy xuất các bản sửa đổi cũ hơn và cũng có thể được duyệt trên GitHub

Đối tượng chính điển hình của PEP là các nhà phát triển cốt lõi của trình thông dịch tham chiếu CPython và Hội đồng chỉ đạo được bầu của họ, cũng như các nhà phát triển của các triển khai khác của đặc tả ngôn ngữ Python

Tuy nhiên, các phần khác của cộng đồng Python cũng có thể chọn sử dụng quy trình (đặc biệt đối với PEP thông tin) để ghi lại các quy ước API dự kiến ​​và để quản lý các vấn đề phối hợp thiết kế phức tạp đòi hỏi sự cộng tác giữa nhiều dự án

Có ba loại PEP

  1. PEP theo dõi tiêu chuẩn mô tả một tính năng hoặc cách triển khai mới cho Python. Nó cũng có thể mô tả một tiêu chuẩn về khả năng tương tác sẽ được hỗ trợ bên ngoài thư viện tiêu chuẩn cho các phiên bản Python hiện tại trước khi PEP tiếp theo bổ sung hỗ trợ thư viện tiêu chuẩn trong phiên bản tương lai
  2. Một PEP thông tin mô tả một vấn đề về thiết kế Python hoặc cung cấp các nguyên tắc hoặc thông tin chung cho cộng đồng Python, nhưng không đề xuất một tính năng mới. PEP thông tin không nhất thiết phải đại diện cho sự đồng thuận hoặc đề xuất của cộng đồng Python, vì vậy người dùng và người triển khai có thể bỏ qua PEP thông tin hoặc làm theo lời khuyên của họ
  3. Quy trình PEP mô tả một quy trình xung quanh Python hoặc đề xuất thay đổi (hoặc một sự kiện trong) một quy trình. PEP xử lý giống như PEP theo dõi tiêu chuẩn nhưng áp dụng cho các lĩnh vực khác ngoài ngôn ngữ Python. Họ có thể đề xuất một triển khai, nhưng không phải với cơ sở mã của Python; . Các ví dụ bao gồm quy trình, nguyên tắc, thay đổi đối với quy trình ra quyết định và thay đổi đối với công cụ hoặc môi trường được sử dụng trong quá trình phát triển Python. Bất kỳ meta-PEP nào cũng được coi là PEP của Quy trình

Có một số tham chiếu trong PEP này đến “Hội đồng chỉ đạo” hoặc “Hội đồng”. Điều này đề cập đến các thành viên hiện tại của Hội đồng chỉ đạo được bầu được mô tả trong PEP 13, với vai trò là người có thẩm quyền cuối cùng về việc PEP sẽ được chấp nhận hay từ chối

Có một số tài liệu tham khảo trong PEP này cho "các nhà phát triển cốt lõi". Điều này đề cập đến các thành viên nhóm Python cốt lõi hiện đang hoạt động được mô tả trong PEP 13

Các phiên bản trước của PEP này đã sử dụng tiêu đề “BDFL-Ủy quyền” cho những người ra quyết định PEP. Đây là một tài liệu tham khảo lịch sử về mô hình quản trị trước đây của Python, trong đó tất cả quyền hạn thiết kế cuối cùng đều bắt nguồn từ Guido van Rossum, người tạo ra ngôn ngữ lập trình Python ban đầu. Ngược lại, thẩm quyền thiết kế của Hội đồng chỉ đạo xuất phát từ cuộc bầu cử của họ bởi các nhà phát triển cốt lõi hiện đang hoạt động. Giờ đây, PEP-Delegate được sử dụng thay cho BDFL-Delegate

Biên tập viên PEP là những cá nhân chịu trách nhiệm quản lý các khía cạnh hành chính và biên tập của quy trình làm việc PEP (e. g. chỉ định số PEP và thay đổi trạng thái của chúng). Xem để biết chi tiết

Quyền biên tập PEP là theo lời mời của các biên tập viên hiện tại và họ có thể được liên hệ bằng cách đề cập đến @python/pep-editors trên GitHub. Tất cả quy trình công việc PEP có thể được thực hiện thông qua các vấn đề về kho lưu trữ GitHub PEP và các yêu cầu kéo

Quá trình PEP bắt đầu với một ý tưởng mới cho Python. Chúng tôi đặc biệt khuyến nghị rằng một PEP duy nhất chứa một đề xuất chính hoặc ý tưởng mới; . Hầu hết các cải tiến và sửa lỗi không cần PEP và có thể được gửi trực tiếp tới trình theo dõi vấn đề Python. Các biên tập viên PEP có quyền từ chối các đề xuất PEP nếu chúng có vẻ quá không tập trung hoặc quá rộng. Nếu nghi ngờ, hãy chia PEP của bạn thành nhiều phần tập trung tốt

Mỗi PEP phải có một người ủng hộ – người viết PEP sử dụng phong cách và định dạng được mô tả bên dưới, hướng dẫn các cuộc thảo luận trong các diễn đàn thích hợp và cố gắng xây dựng sự đồng thuận của cộng đồng xung quanh ý tưởng. Nhà vô địch PEP (a. k. a. Tác giả) trước tiên nên cố gắng xác định xem ý tưởng có khả năng PEP hay không. Đăng lên danh mục Ý tưởng của Diễn ngôn Python thường là cách tốt nhất để giải quyết vấn đề này, trừ khi một địa điểm chuyên biệt hơn phù hợp, chẳng hạn như Typing-SIG để gõ tĩnh hoặc danh mục Đóng gói của Diễn đàn Python cho các vấn đề về đóng gói

Công khai kiểm tra một ý tưởng trước khi viết PEP nhằm tiết kiệm thời gian của tác giả tiềm năng. Nhiều ý tưởng đã được đưa ra để thay đổi Python đã bị từ chối vì nhiều lý do. Trước tiên, hãy hỏi cộng đồng Python xem một ý tưởng có phải là bản gốc hay không sẽ giúp ngăn chặn việc dành quá nhiều thời gian cho thứ gì đó chắc chắn sẽ bị từ chối dựa trên các cuộc thảo luận trước đó (tìm kiếm trên internet không phải lúc nào cũng thành công). Nó cũng giúp đảm bảo ý tưởng được áp dụng cho toàn bộ cộng đồng chứ không chỉ tác giả. Chỉ vì một ý tưởng nghe có vẻ tốt với tác giả không có nghĩa là nó sẽ hiệu quả với hầu hết mọi người ở hầu hết các lĩnh vực sử dụng Python

Sau khi nhà vô địch đã hỏi cộng đồng Python về việc liệu một ý tưởng có cơ hội được chấp nhận hay không, bản nháp PEP sẽ được trình bày tại địa điểm thích hợp được đề cập ở trên. Điều này giúp tác giả có cơ hội hoàn thiện dự thảo PEP để làm cho định dạng phù hợp, có chất lượng cao và giải quyết những lo ngại ban đầu về đề xuất

Theo phần thảo luận ban đầu ở trên, quy trình làm việc sẽ thay đổi tùy theo việc có bất kỳ đồng tác giả nào của PEP là nhà phát triển cốt lõi hay không. Nếu một hoặc nhiều đồng tác giả của PEP là nhà phát triển cốt lõi, họ có trách nhiệm tuân theo quy trình được nêu bên dưới. Nếu không (tôi. e. không có đồng tác giả nào là nhà phát triển cốt lõi), thì (các) tác giả PEP sẽ cần tìm nhà tài trợ cho PEP

Lý tưởng nhất là xác định được nhà tài trợ nhà phát triển cốt lõi, nhưng cũng có thể chọn nhà tài trợ không cốt lõi với sự chấp thuận của Hội đồng chỉ đạo. Các thành viên của nhóm GitHub “PEP editors” được phê duyệt trước để trở thành nhà tài trợ. Công việc của nhà tài trợ là cung cấp hướng dẫn cho tác giả PEP để giúp họ thông qua hậu cần của quy trình PEP (hơi giống như một người cố vấn). Việc trở thành nhà tài trợ không khiến người đó không đủ điều kiện trở thành đồng tác giả hoặc PEP-Đại biểu sau này (nhưng không phải cả hai). Nhà tài trợ của một PEP được ghi trong “Nhà tài trợ. ” trường của tiêu đề

Sau khi nhà tài trợ hoặc (các) nhà phát triển cốt lõi đồng tác giả PEP coi PEP đã sẵn sàng để gửi, đề xuất phải được gửi dưới dạng dự thảo PEP thông qua yêu cầu kéo GitHub. Bản nháp phải được viết theo phong cách PEP như mô tả bên dưới, nếu không nó sẽ không được duyệt ngay (mặc dù các lỗi nhỏ có thể được người chỉnh sửa sửa chữa)

Quy trình công việc PEP tiêu chuẩn là

  • Bạn, tác giả PEP, rẽ nhánh kho lưu trữ PEP và tạo một tệp có tên pep-9999.rst chứa PEP mới của bạn. Sử dụng “9999” làm số PEP dự thảo của bạn
  • Trong phần “Loại. ” trường tiêu đề, hãy nhập “Theo dõi tiêu chuẩn”, “Thông tin” hoặc “Quy trình” nếu thích hợp và đối với “Trạng thái. ” trường nhập “Bản nháp”. Để biết chi tiết đầy đủ, xem
  • Cập nhật. github/CODEOWNERS sao cho bất kỳ đồng tác giả hoặc nhà tài trợ nào có quyền ghi vào kho lưu trữ PEP đều được liệt kê cho tệp mới của bạn. Điều này đảm bảo mọi yêu cầu kéo trong tương lai thay đổi tệp sẽ được gán cho chúng
  • Đẩy cái này vào ngã ba GitHub của bạn và gửi yêu cầu kéo
  • Các biên tập viên PEP xem xét PR của bạn về cấu trúc, định dạng và các lỗi khác. Đối với PEP có định dạng reST, PEP 12 được cung cấp dưới dạng mẫu. Nó cũng cung cấp phần giới thiệu đầy đủ về đánh dấu reST được sử dụng trong PEP. Tiêu chí phê duyệt là
    • Nó âm thanh và đầy đủ. Các ý tưởng phải có ý nghĩa kỹ thuật. Các biên tập viên không xem xét liệu chúng có khả năng được chấp nhận hay không
    • Tiêu đề mô tả chính xác nội dung
    • Ngôn ngữ của PEP (chính tả, ngữ pháp, cấu trúc câu, v.v. ) và kiểu mã (các ví dụ phải khớp với PEP 7 & PEP 8) phải chính xác và tuân thủ. Văn bản PEP sẽ được tự động kiểm tra xem có đúng định dạng reStructuredText khi yêu cầu kéo được gửi không. PEP có đánh dấu reST không hợp lệ sẽ không được phê duyệt

    Các biên tập viên thường khá khoan dung đối với đánh giá ban đầu này, hy vọng rằng các vấn đề sẽ được khắc phục bằng quy trình đánh giá. Ghi chú. Phê duyệt PEP không đảm bảo rằng không có sai lầm đáng xấu hổ. Tính chính xác là trách nhiệm của tác giả và người đánh giá, không phải người biên tập

    Nếu PEP chưa sẵn sàng để phê duyệt, biên tập viên sẽ gửi lại cho tác giả để chỉnh sửa, kèm theo hướng dẫn cụ thể

  • Sau khi được phê duyệt, họ sẽ chỉ định số PEP của bạn

Sau khi quá trình xem xét hoàn tất và người chỉnh sửa PEP chấp thuận (lưu ý rằng điều này không giống với việc chấp nhận PEP của bạn. ), họ sẽ xóa cam kết yêu cầu kéo của bạn vào chính

Các biên tập viên PEP sẽ không từ chối xuất bản PEP một cách vô lý. Các lý do từ chối trạng thái PEP bao gồm nỗ lực trùng lặp, không hợp lý về mặt kỹ thuật, không cung cấp động lực thích hợp hoặc giải quyết khả năng tương thích ngược hoặc không phù hợp với triết lý Python. Hội đồng chỉ đạo có thể được tư vấn trong giai đoạn phê duyệt và là trọng tài cuối cùng về khả năng PEP của dự thảo

Các nhà phát triển có quyền ghi vào kho lưu trữ PEP có thể yêu cầu số PEP trực tiếp bằng cách tạo và cam kết một PEP mới. Khi làm như vậy, nhà phát triển phải xử lý các tác vụ thường được các trình soạn thảo PEP đảm nhận (xem Tài liệu tham khảo). Điều này bao gồm đảm bảo phiên bản ban đầu đáp ứng các tiêu chuẩn dự kiến ​​để gửi PEP. Ngoài ra, ngay cả các nhà phát triển cũng nên gửi PEP thông qua yêu cầu kéo. Khi làm như vậy, bạn thường phải tự xử lý quy trình;

Khi cần cập nhật, tác giả PEP có thể kiểm tra các phiên bản mới nếu họ (hoặc nhà phát triển cộng tác) có quyền ghi vào kho lưu trữ PEP. Nhận số PEP được chỉ định sớm có thể hữu ích để dễ tham khảo, đặc biệt khi nhiều dự thảo PEP đang được xem xét cùng một lúc

Tiêu chuẩn Theo dõi PEP bao gồm hai phần, tài liệu thiết kế và triển khai tham chiếu. Nói chung, người ta khuyến nghị rằng ít nhất một triển khai nguyên mẫu nên được đồng phát triển với PEP, vì những ý tưởng về nguyên tắc nghe có vẻ tốt đôi khi lại trở nên không thực tế khi trải qua thử nghiệm triển khai

Ngay sau khi số PEP đã được chỉ định và dự thảo PEP được cam kết với kho lưu trữ PEP, một chuỗi thảo luận cho PEP sẽ được tạo để cung cấp một vị trí trung tâm để thảo luận và xem xét nội dung của nó, đồng thời PEP phải được cập nhật để

Các tác giả PEP (hoặc nhà tài trợ, nếu có) có thể chọn bất kỳ địa điểm hợp lý nào cho cuộc thảo luận, miễn là các tiêu chí sau được đáp ứng

  • Diễn đàn phù hợp với chủ đề của PEP
  • Chủ đề được cung cấp công khai trên web để tất cả các bên quan tâm có thể tham gia
  • Cuộc thảo luận tuân theo Quy tắc ứng xử của cộng đồng Python
  • Một liên kết trực tiếp đến chủ đề thảo luận hiện tại được cung cấp trong PEP dưới tiêu đề Discussions-To

Danh mục PEP của Diễn ngôn Python là lựa chọn ưu tiên cho hầu hết các PEP mới, trong khi trước đây danh sách gửi thư Python-Dev thường được sử dụng. Một số chủ đề chuyên ngành có địa điểm cụ thể, chẳng hạn như Typing-SIG để nhập PEP hoặc danh mục Đóng gói trên Diễn ngôn Python để đóng gói PEP. Nếu các tác giả PEP không chắc chắn về địa điểm tốt nhất, Nhà tài trợ PEP và các biên tập viên PEP có thể tư vấn cho họ phù hợp

Nếu một PEP trải qua quá trình viết lại đáng kể hoặc các thay đổi lớn, cơ bản khác đối với thông số kỹ thuật được đề xuất của nó, thì một chủ đề mới thường được tạo ở địa điểm đã chọn để thu hút phản hồi bổ sung. Nếu điều này xảy ra, liên kết Discussions-To phải được cập nhật và thêm mục nhập Post-History mới trỏ đến chủ đề mới này

Nếu nó không được chọn làm địa điểm thảo luận, thì một bài đăng thông báo ngắn gọn sẽ được gửi đến danh mục PEP với ít nhất một liên kết đến PEP được kết xuất và chuỗi Thảo luận-Tới khi dự thảo PEP được cam kết với kho lưu trữ và nếu một chính-

Các tác giả PEP chịu trách nhiệm thu thập phản hồi của cộng đồng về PEP trước khi gửi nó để xem xét. Tuy nhiên, để tránh các cuộc thảo luận dài dòng và có kết thúc mở, các chiến lược như thu hút phản hồi riêng tư hoặc được điều chỉnh theo phạm vi hẹp hơn trong giai đoạn thiết kế ban đầu, hợp tác với các thành viên cộng đồng khác có chuyên môn về chủ đề của PEP và chọn một cuộc thảo luận có chuyên môn phù hợp . Các tác giả PEP nên sử dụng theo quyết định của họ ở đây

Sau khi PEP được chỉ định một số và được cam kết với kho lưu trữ PEP, các vấn đề cơ bản thường được thảo luận trên luồng công khai chính tắc, trái ngược với các kênh riêng tư, đánh giá yêu cầu kéo GitHub hoặc các địa điểm không liên quan. Điều này đảm bảo mọi người có thể theo dõi và đóng góp, tránh phân mảnh cuộc thảo luận và đảm bảo cuộc thảo luận được xem xét đầy đủ như một phần của quy trình đánh giá PEP. Nhận xét, hỗ trợ, mối quan tâm và phản hồi khác về chủ đề được chỉ định này là một phần quan trọng trong những gì Hội đồng chỉ đạo hoặc PEP-Đại biểu sẽ xem xét khi xem xét PEP

Sau khi các tác giả đã hoàn thành PEP, họ có thể yêu cầu người chỉnh sửa PEP đánh giá về văn phong và tính nhất quán. Tuy nhiên, việc xem xét nội dung và chấp nhận PEP cuối cùng là trách nhiệm của Hội đồng chỉ đạo, được bắt đầu chính thức bằng cách mở một vấn đề của Hội đồng chỉ đạo sau khi các tác giả (và nhà tài trợ, nếu có) xác định PEP đã sẵn sàng để xem xét và giải quyết lần cuối

Để đẩy nhanh quá trình trong các trường hợp đã chọn (e. g. khi một thay đổi rõ ràng là có lợi và sẵn sàng được chấp nhận, nhưng PEP vẫn chưa được đệ trình chính thức để xem xét), Hội đồng chỉ đạo cũng có thể bắt đầu xem xét PEP, trước tiên thông báo cho (các) tác giả PEP và cho họ cơ hội để

Cơ quan cuối cùng phê duyệt PEP là Hội đồng chỉ đạo. Tuy nhiên, bất cứ khi nào một PEP mới được đưa ra, bất kỳ nhà phát triển cốt lõi nào tin rằng họ có kinh nghiệm phù hợp để đưa ra quyết định cuối cùng về PEP đó có thể đề nghị đóng vai trò là Người đại diện PEP bằng cách thông báo cho Hội đồng chỉ đạo về ý định của họ. Nếu Hội đồng chỉ đạo chấp thuận đề xuất của họ, PEP-Đại biểu sẽ có quyền phê duyệt hoặc từ chối PEP đó

Thuật ngữ “PEP-Ủy quyền” được sử dụng trong mô hình quản trị Hội đồng chỉ đạo dành cho người ra quyết định được chỉ định của PEP, người này được ghi trong trường “PEP-Ủy quyền” trong tiêu đề của PEP. Thuật ngữ “BDFL-Delegate” là một bí danh không dùng nữa cho PEP-Delegate, một di sản của thời khi Python được dẫn dắt bởi. Bất kỳ tham chiếu kế thừa nào đến “BDFL-Đại biểu” phải được coi là tương đương với “PEP-Đại biểu”

Cá nhân đề nghị tự đề cử mình làm Đại biểu PEP phải thông báo cho các tác giả có liên quan và (khi có mặt) nhà tài trợ cho PEP, đồng thời gửi yêu cầu của họ tới Hội đồng chỉ đạo (có thể thực hiện thông qua số mới). Những người đảm nhận trách nhiệm này được tự do tìm kiếm hướng dẫn bổ sung từ Hội đồng chỉ đạo bất cứ lúc nào và cũng được kỳ vọng sẽ xem xét lời khuyên và quan điểm của các nhà phát triển cốt lõi khác

Hội đồng chỉ đạo nói chung sẽ chấp thuận những người tự ứng cử như vậy theo mặc định, nhưng có thể chọn từ chối họ. Những lý do có thể khiến Hội đồng chỉ đạo từ chối tự ứng cử với tư cách là Đại biểu PEP bao gồm, nhưng không giới hạn ở, nhận thức về xung đột lợi ích tiềm ẩn (e. g. làm việc cho cùng một tổ chức với tư cách là người gửi PEP) hoặc chỉ đơn giản là xem xét một Người được ủy quyền PEP tiềm năng khác phù hợp hơn. Nếu các nhà phát triển cốt lõi (hoặc các thành viên khác trong cộng đồng) lo ngại về sự phù hợp của PEP-Ủy quyền cho bất kỳ PEP cụ thể nào, họ có thể yêu cầu Hội đồng chỉ đạo xem xét lại ủy quyền.

Nếu không có tình nguyện viên nào tiến lên, thì Hội đồng chỉ đạo sẽ tiếp cận các nhà phát triển cốt lõi (và có thể là các thành viên cộng đồng Python khác) có chuyên môn phù hợp, nhằm xác định một ứng cử viên sẵn sàng làm PEP-Ủy quyền cho PEP đó. Nếu không tìm thấy ứng viên phù hợp, thì PEP sẽ được đánh dấu là Hoãn lại cho đến khi có ứng viên phù hợp

PEP-Đại biểu được bổ nhiệm trước đây có thể chọn từ chức hoặc được Hội đồng yêu cầu từ chức, trong trường hợp đó, PEP-Đại biểu mới sẽ được bổ nhiệm theo cách tương tự như đối với PEP mới (bao gồm cả việc hoãn PEP nếu không phù hợp). . Trong trường hợp PEP-Đại biểu được yêu cầu từ chức, điều này sẽ hủy bỏ bất kỳ sự chấp nhận hoặc từ chối PEP nào trước đó và nó sẽ trở lại trạng thái Dự thảo

Khi các đoàn đại biểu thường trực như vậy được đưa ra, Hội đồng chỉ đạo sẽ duy trì đủ hồ sơ công khai để cho phép các Hội đồng tiếp theo, các nhà phát triển cốt lõi và cộng đồng Python rộng lớn hơn hiểu được các đoàn đại biểu hiện đang tồn tại, lý do chúng được đưa ra và các trường hợp dưới đây.

Để một PEP được chấp nhận, nó phải đáp ứng các tiêu chí tối thiểu nhất định. Nó phải là một mô tả rõ ràng và đầy đủ về cải tiến được đề xuất. Việc cải tiến phải đại diện cho một cải tiến ròng. Việc triển khai được đề xuất, nếu có thể áp dụng, phải chắc chắn và không được làm phức tạp quá mức trình thông dịch. Cuối cùng, một cải tiến được đề xuất phải là "pythonic" để được Hội đồng chỉ đạo chấp nhận. (Tuy nhiên, "pythonic" là một thuật ngữ không chính xác; nó có thể được định nghĩa là bất cứ thứ gì được Hội đồng chỉ đạo chấp nhận. Logic này là vòng tròn có chủ ý. ) Xem PEP 2 để biết tiêu chí chấp nhận mô-đun thư viện tiêu chuẩn

Trừ khi được Hội đồng chỉ đạo chấp thuận khác, các tuyên bố về nghị quyết PEP sẽ được đăng trong danh mục PEP trên Diễn ngôn Python

Khi PEP đã được chấp nhận, việc triển khai tham chiếu phải được hoàn thành. Khi quá trình triển khai tham chiếu hoàn tất và được tích hợp vào kho lưu trữ mã nguồn chính, trạng thái sẽ được thay đổi thành “Cuối cùng”

Để cho phép thu thập phản hồi về giao diện và thiết kế bổ sung trước khi cam kết tính ổn định lâu dài cho một tính năng ngôn ngữ hoặc API thư viện tiêu chuẩn, PEP cũng có thể được đánh dấu là “Tạm thời”. Đây là viết tắt của "Được chấp nhận tạm thời" và cho biết rằng đề xuất đã được chấp nhận để đưa vào triển khai tham chiếu, nhưng cần có thêm phản hồi của người dùng trước khi thiết kế đầy đủ có thể được coi là "Cuối cùng". Không giống như các PEP được chấp nhận thông thường, các PEP được chấp nhận tạm thời vẫn có thể bị Từ chối hoặc Thu hồi ngay cả sau khi các thay đổi liên quan đã được đưa vào bản phát hành Python

Bất cứ khi nào có thể, nên giảm phạm vi của một đề xuất để tránh phải dựa vào trạng thái “Tạm thời” (e. g. bằng cách trì hoãn một số tính năng cho các PEP sau này), vì trạng thái này có thể dẫn đến các thách thức về khả năng tương thích phiên bản trong hệ sinh thái Python rộng lớn hơn. PEP 411 cung cấp thêm chi tiết về các trường hợp sử dụng tiềm năng cho trạng thái Tạm thời

Một PEP cũng có thể được gán trạng thái “Hoãn lại”. Tác giả PEP hoặc người chỉnh sửa có thể chỉ định PEP trạng thái này khi không có tiến trình nào được thực hiện trên PEP. Sau khi PEP bị hoãn lại, người chỉnh sửa PEP có thể chỉ định lại nó ở trạng thái dự thảo

Một PEP cũng có thể bị “Từ chối”. Có lẽ sau tất cả những gì đã nói và làm, đó không phải là một ý kiến ​​hay. Nó vẫn còn quan trọng để có một hồ sơ về thực tế này. Trạng thái “Đã rút tiền” cũng tương tự - điều đó có nghĩa là chính tác giả PEP đã quyết định rằng PEP thực sự là một ý tưởng tồi hoặc đã chấp nhận rằng một đề xuất cạnh tranh là một giải pháp thay thế tốt hơn

Khi PEP được chấp nhận, bị từ chối hoặc bị rút lại, PEP phải được cập nhật tương ứng. Ngoài việc cập nhật trường Trạng thái, ít nhất phải thêm tiêu đề Nghị quyết với liên kết trực tiếp đến bài đăng có liên quan đưa ra quyết định về PEP

PEP cũng có thể được thay thế bằng một PEP khác, khiến bản gốc trở nên lỗi thời. Điều này dành cho PEP thông tin, trong đó phiên bản 2 của API có thể thay thế phiên bản 1

Các đường dẫn có thể có về trạng thái của PEP như sau

Mặc dù không được hiển thị trong sơ đồ, PEP “Được chấp nhận” về mặt kỹ thuật có thể chuyển sang “Bị từ chối” hoặc “Đã rút lại” ngay cả sau khi được chấp nhận. Điều này sẽ chỉ xảy ra nếu quá trình triển khai bộc lộ những sai sót cơ bản trong thiết kế mà không được chú ý trước khi chấp nhận PEP. Không giống như các PEP tạm thời, các chuyển đổi này chỉ được phép nếu đề xuất được chấp nhận chưa được đưa vào bản phát hành Python - thay vào đó, các thay đổi được phát hành phải trải qua quy trình ngừng sử dụng thông thường (có thể yêu cầu một PEP mới cung cấp lý do cho việc ngừng sử dụng)

Một số PEP Thông tin và Quy trình cũng có thể có trạng thái “Đang hoạt động” nếu chúng không bao giờ được hoàn thành. e. g. PEP 1 (PEP này)

Nói chung, PEP không còn bị sửa đổi đáng kể sau khi chúng đạt đến trạng thái Được chấp nhận, Cuối cùng, Bị từ chối hoặc Đã thay thế. Sau khi đạt được độ phân giải, PEP được coi là một tài liệu lịch sử hơn là một thông số kỹ thuật sống. Tài liệu chính thức về hành vi dự kiến ​​nên được duy trì ở nơi khác, chẳng hạn như Tham chiếu ngôn ngữ cho các tính năng cốt lõi, Tham chiếu thư viện cho các mô-đun thư viện tiêu chuẩn hoặc Thông số kỹ thuật PyPA để đóng gói

Nếu các thay đổi dựa trên trải nghiệm triển khai và phản hồi của người dùng được thực hiện đối với các PEP theo dõi Tiêu chuẩn trong khi ở trạng thái Tạm thời hoặc (với sự phê duyệt của SC) được chấp nhận, thì chúng cần được ghi chú trong PEP, sao cho PEP mô tả chính xác việc triển khai tại thời điểm nó được thực hiện.

PEP đang hoạt động (Thông tin và Quy trình) có thể được cập nhật theo thời gian để phản ánh những thay đổi đối với thực tiễn phát triển và các chi tiết khác. Quy trình chính xác được tuân theo trong những trường hợp này sẽ phụ thuộc vào bản chất và mục đích của PEP được đề cập

Đôi khi, PEP Trì hoãn hoặc thậm chí là Rút tiền có thể được hồi sinh với các bản cập nhật lớn, nhưng tốt hơn hết là chỉ đề xuất một cái mới

Mỗi PEP nên có các phần/phần sau

  1. Lời mở đầu – Tiêu đề kiểu RFC 2822 chứa siêu dữ liệu về PEP, bao gồm số PEP, tiêu đề mô tả ngắn (giới hạn tối đa 44 ký tự), tên và tùy chọn thông tin liên hệ của từng tác giả, v.v.
  2. Tóm tắt – mô tả ngắn (~200 từ) về vấn đề kỹ thuật đang được giải quyết
  3. Động lực – Động lực rất quan trọng đối với các PEP muốn thay đổi ngôn ngữ, thư viện hoặc hệ sinh thái Python. Cần giải thích rõ ràng lý do tại sao đặc tả ngôn ngữ hiện tại không đủ để giải quyết vấn đề mà PEP giải quyết. Điều này có thể bao gồm thu thập tài liệu hỗ trợ cho PEP từ các dự án quan trọng trong hệ sinh thái Python. Đệ trình PEP mà không có đủ động lực có thể bị từ chối
  4. Cơ sở lý luận – Cơ sở lý luận củng cố đặc điểm kỹ thuật bằng cách mô tả lý do tại sao các quyết định thiết kế cụ thể được đưa ra. Nó nên mô tả các thiết kế thay thế đã được xem xét và các công việc liên quan, e. g. cách tính năng này được hỗ trợ bằng các ngôn ngữ khác

    Cơ sở lý luận nên cung cấp bằng chứng về sự đồng thuận trong cộng đồng và thảo luận về những phản đối hoặc mối quan tâm quan trọng được nêu ra trong quá trình thảo luận

  5. Đặc điểm kỹ thuật – Đặc tả kỹ thuật phải mô tả cú pháp và ngữ nghĩa của bất kỳ tính năng ngôn ngữ mới nào. Thông số kỹ thuật phải đủ chi tiết để cho phép triển khai tương tác, cạnh tranh cho ít nhất các nền tảng Python chính hiện tại (CPython, Jython, IronPython, PyPy)
  6. Khả năng tương thích ngược – Tất cả các PEP đưa ra tính không tương thích ngược phải bao gồm một phần mô tả những điểm không tương thích này và mức độ nghiêm trọng của chúng. PEP phải giải thích cách tác giả đề xuất giải quyết những điểm không tương thích này. Đệ trình PEP mà không có chuyên luận tương thích ngược đầy đủ có thể bị từ chối hoàn toàn
  7. Ý nghĩa bảo mật – Nếu có những lo ngại về bảo mật liên quan đến PEP, thì những lo ngại đó phải được viết ra một cách rõ ràng để đảm bảo những người đánh giá PEP biết về chúng
  8. Cách dạy điều này – Đối với một PEP bổ sung chức năng mới hoặc thay đổi hành vi ngôn ngữ, sẽ rất hữu ích nếu bao gồm một phần về cách dạy người dùng, người mới và người có kinh nghiệm, cách áp dụng PEP vào công việc của họ

    Phần này có thể bao gồm các điểm chính và các thay đổi tài liệu được đề xuất sẽ giúp người dùng áp dụng một tính năng mới hoặc di chuyển mã của họ để sử dụng thay đổi ngôn ngữ

  9. Triển khai tham chiếu – Việc triển khai tham chiếu phải được hoàn thành trước khi bất kỳ PEP nào được đưa ra trạng thái “Cuối cùng”, nhưng không cần phải hoàn thành trước khi PEP được chấp nhận. Mặc dù có lợi cho cách tiếp cận đạt được sự đồng thuận về đặc tả và lý do trước khi viết mã, nhưng nguyên tắc “đồng thuận thô và chạy mã” vẫn hữu ích khi giải quyết nhiều cuộc thảo luận về chi tiết API

    Việc triển khai cuối cùng phải bao gồm mã kiểm tra và tài liệu phù hợp với tham chiếu ngôn ngữ Python hoặc tham chiếu thư viện chuẩn

  10. Ý tưởng bị từ chối – Trong suốt quá trình thảo luận về PEP, nhiều ý tưởng khác nhau sẽ được đề xuất nhưng không được chấp nhận. Những ý tưởng bị từ chối đó nên được ghi lại cùng với lý do tại sao chúng bị từ chối. Điều này vừa giúp ghi lại quá trình suy nghĩ đằng sau phiên bản cuối cùng của PEP cũng như ngăn mọi người đưa ra ý tưởng bị từ chối một lần nữa trong các cuộc thảo luận tiếp theo

    Theo một cách nào đó, phần này có thể được coi là phần đột phá của phần Cơ sở lý luận tập trung cụ thể vào lý do tại sao một số ý tưởng cuối cùng không được theo đuổi

  11. Các vấn đề mở – Trong khi PEP đang ở dạng dự thảo, các ý tưởng có thể xuất hiện cần được thảo luận thêm. Những ý kiến ​​đó nên được ghi lại để mọi người biết rằng họ đang được suy nghĩ nhưng không có giải pháp cụ thể. Điều này giúp đảm bảo rằng tất cả các vấn đề cần thiết để PEP sẵn sàng được xem xét đã hoàn tất và giảm thiểu việc mọi người sao chép cuộc thảo luận trước đó
  12. Chú thích cuối trang – Tập hợp các chú thích cuối trang được trích dẫn trong PEP và là nơi liệt kê các mục tiêu siêu liên kết không nội tuyến
  13. Bản quyền/giấy phép – Mỗi PEP mới phải được đặt theo giấy phép kép của miền công cộng và CC0-1. 0-Universal (xem PEP này để biết ví dụ)

PEP là các tệp văn bản được mã hóa UTF-8 sử dụng định dạng reStructuredText. reStructuredText cho phép đánh dấu phong phú mà vẫn khá dễ đọc, nhưng cũng dẫn đến HTML đẹp mắt và đầy đủ chức năng. PEP 12 chứa các hướng dẫn và

Các tệp văn bản PEP được tự động chuyển đổi thành HTML (thông qua hệ thống xây dựng dựa trên Sphinx) để đọc trực tuyến dễ dàng hơn

Mỗi PEP phải bắt đầu bằng phần mở đầu tiêu đề kiểu RFC 2822. Các tiêu đề phải xuất hiện theo thứ tự sau. Các tiêu đề được đánh dấu “*” là tùy chọn và được mô tả bên dưới. Tất cả các tiêu đề khác là bắt buộc

  PEP: 
  Title: 
  Author: 
* Sponsor: 
* PEP-Delegate: 
  Discussions-To: 
  Status: 
  Type: 
* Content-Type: text/x-rst
* Requires: 
  Created: 
* Python-Version: 
  Post-History: 
* Replaces: 
* Superseded-By: 
* Resolution: 

Tiêu đề Tác giả liệt kê tên và tùy chọn địa chỉ email của tất cả các tác giả/chủ sở hữu của PEP. Định dạng của các giá trị tiêu đề Tác giả phải là

Random J. User 

nếu địa chỉ email được bao gồm, và chỉ

Random J. User

nếu địa chỉ không được cung cấp

Nếu có nhiều tác giả, mỗi tác giả phải ở trên một dòng riêng theo quy ước về dòng tiếp theo của RFC 2822. Lưu ý rằng các địa chỉ email cá nhân trong PEP sẽ bị che khuất để bảo vệ chống lại những kẻ thu thập thư rác

Trường Nhà tài trợ ghi lại nhà phát triển nào (cốt lõi hoặc được Hội đồng chỉ đạo phê duyệt) đang tài trợ cho PEP. Nếu một trong những tác giả của PEP là nhà phát triển cốt lõi thì không cần nhà tài trợ và do đó nên bỏ qua trường này

Trường PEP-Đại biểu dùng để ghi cá nhân do Hội đồng chỉ đạo chỉ định để đưa ra quyết định cuối cùng về việc phê duyệt hay từ chối một PEP. (Địa chỉ email của đại biểu hiện bị bỏ qua do giới hạn trong việc che dấu địa chỉ email cho các PEP văn bản được cấu trúc lại)

Ghi chú. Tiêu đề Độ phân giải chỉ bắt buộc đối với PEP theo dõi tiêu chuẩn. Nó chứa một URL sẽ trỏ đến một email hoặc tài nguyên web khác nơi tuyên bố về (i. e. phê duyệt hoặc từ chối) PEP được thực hiện

Tiêu đề Discussions-To cung cấp URL tới chuỗi thảo luận chuẩn hiện tại cho PEP. Đối với danh sách email, đây phải là một liên kết trực tiếp đến chuỗi trong kho lưu trữ của danh sách, thay vì chỉ là một mailto. hoặc siêu liên kết đến chính danh sách đó

Tiêu đề Loại chỉ định loại PEP. Theo dõi Tiêu chuẩn, Thông tin hoặc Quy trình

Định dạng của PEP được chỉ định với tiêu đề Kiểu nội dung. Tất cả các PEP phải sử dụng cấu trúc lại Văn bản (xem PEP 12) và có giá trị là

Random J. User 
0, giá trị mặc định. Trước đây, PEP bản rõ được sử dụng
Random J. User 
1 (xem PEP 9)

Tiêu đề Đã tạo ghi lại ngày mà PEP được chỉ định một số, trong khi Hậu lịch sử được sử dụng để ghi lại ngày và các URL tương ứng cho các chủ đề Thảo luận-Tới cho PEP, với cái trước là văn bản được liên kết và cái sau là văn bản được liên kết. . Cả hai tập hợp ngày phải ở định dạng

Random J. User 
2, e. g.
Random J. User 
3

PEP theo dõi tiêu chuẩn thường sẽ có tiêu đề Phiên bản Python cho biết phiên bản Python mà tính năng này sẽ được phát hành cùng với. Tiêu chuẩn Theo dõi PEP không có tiêu đề Phiên bản Python cho biết các tiêu chuẩn về khả năng tương tác ban đầu sẽ được hỗ trợ thông qua các thư viện và công cụ bên ngoài, sau đó có khả năng được bổ sung bởi PEP sau này để thêm hỗ trợ cho thư viện tiêu chuẩn. PEP thông tin và quy trình không cần tiêu đề Phiên bản Python

PEP có thể có tiêu đề Yêu cầu, cho biết số PEP mà PEP này phụ thuộc vào

PEP cũng có thể có tiêu đề Supersed-By cho biết rằng PEP đã bị lỗi thời bởi một tài liệu sau này; . PEP mới hơn phải có tiêu đề Thay thế chứa số lượng PEP mà nó đã lỗi thời

PEP có thể bao gồm các tệp phụ trợ như sơ đồ. Các tệp như vậy phải được đặt tên là

Random J. User 
4, trong đó “XXXX” là số PEP, “Y” là số sê-ri (bắt đầu từ 1) và “ext” được thay thế bằng phần mở rộng tệp thực tế (e. g. “png”)

Ngoài ra, tất cả các tệp hỗ trợ có thể được đặt trong thư mục con có tên là

Random J. User 
5, trong đó “XXXX” là số PEP. Khi sử dụng thư mục con, không có ràng buộc nào đối với tên được sử dụng trong tệp

Dự thảo PEP được mở tự do để thảo luận và đề xuất sửa đổi, theo quyết định của tác giả, cho đến khi được đệ trình lên Hội đồng chỉ đạo hoặc PEP-Delegate để xem xét và giải quyết. Thay đổi nội dung quan trọng thường phải được đề xuất đầu tiên trên chuỗi thảo luận của PEP được liệt kê trong tiêu đề Discussions-To của nó, trong khi các bản sửa lỗi và chỉnh sửa có thể được gửi dưới dạng vấn đề GitHub hoặc yêu cầu kéo GitHub. Các tác giả PEP có quyền ghi vào kho lưu trữ PEP có thể tự cập nhật PEP bằng cách sử dụng

Random J. User 
7 hoặc GitHub PR để gửi các thay đổi của họ. Để được hướng dẫn sửa đổi các PEP khác, hãy tham khảo phần

Xem Hướng dẫn đóng góp để biết thêm chi tiết và khi có nghi ngờ, vui lòng kiểm tra trước với tác giả PEP và/hoặc biên tập viên PEP

Đôi khi cần phải chuyển quyền sở hữu PEP cho một nhà vô địch mới. Nói chung, nên giữ lại tác giả gốc với tư cách là đồng tác giả của PEP được chuyển giao, nhưng điều đó thực sự phụ thuộc vào tác giả gốc. Một lý do chính đáng để chuyển quyền sở hữu là vì tác giả ban đầu không còn thời gian hoặc hứng thú với việc cập nhật nó hoặc tuân theo quy trình PEP, hoặc đã rời khỏi 'mạng (i. e. không thể truy cập hoặc không trả lời email). Một lý do tồi để chuyển quyền sở hữu là vì tác giả không đồng ý với hướng của PEP. Một mục đích của quy trình PEP là cố gắng xây dựng sự đồng thuận xung quanh PEP, nhưng nếu điều đó là không thể, tác giả luôn có thể gửi một PEP cạnh tranh

Nếu bạn quan tâm đến việc giả định quyền sở hữu PEP, bạn cũng có thể thực hiện việc này thông qua yêu cầu kéo. Chia nhánh kho lưu trữ PEP, thực hiện sửa đổi quyền sở hữu của bạn và gửi yêu cầu kéo. Bạn nên đề cập đến cả tác giả gốc và @python/pep-editors trong nhận xét về yêu cầu kéo. (Nếu tên người dùng GitHub của tác giả ban đầu không xác định, hãy sử dụng email. ) Nếu tác giả ban đầu không phản hồi kịp thời, các biên tập viên PEP sẽ đưa ra quyết định đơn phương (không phải quyết định như vậy là không thể đảo ngược. )

Trình chỉnh sửa PEP phải được thêm vào nhóm @python/pep-editors trên GitHub và phải xem kho lưu trữ PEP

Lưu ý rằng các nhà phát triển có quyền ghi vào kho lưu trữ PEP có thể xử lý các tác vụ mà các trình soạn thảo PEP thường đảm nhận. Ngoài ra, ngay cả các nhà phát triển cũng có thể yêu cầu hỗ trợ từ các biên tập viên PEP bằng cách đề cập đến @python/pep-editors trên GitHub

Đối với mỗi PEP mới có trong trình chỉnh sửa, hãy thực hiện như sau

  • Đảm bảo rằng PEP được đồng tác giả bởi một nhà phát triển cốt lõi, có một nhà phát triển cốt lõi là nhà tài trợ hoặc có một nhà tài trợ được Hội đồng chỉ đạo phê duyệt cụ thể cho PEP này
  • Đọc PEP để kiểm tra xem nó đã sẵn sàng chưa. âm thanh và đầy đủ. Các ý tưởng phải có ý nghĩa kỹ thuật, ngay cả khi chúng dường như không được chấp nhận
  • Tiêu đề phải mô tả chính xác nội dung
  • Phần mở rộng tên tệp là chính xác (i. e.
    Random J. User
    
    1)
  • Đảm bảo rằng mọi người được liệt kê là nhà tài trợ hoặc đồng tác giả của PEP có quyền ghi vào kho lưu trữ PEP đều được thêm vào. github/CODEOWNERS
  • Đọc lướt PEP để tìm những khiếm khuyết rõ ràng về ngôn ngữ (chính tả, ngữ pháp, cấu trúc câu, v.v. ) và kiểu mã (các ví dụ phải tuân theo PEP 7 & PEP 8). Biên tập viên có thể tự khắc phục sự cố, nhưng không bắt buộc phải làm như vậy (cú pháp cấu trúc lại được kiểm tra bởi CI của repo)
  • Nếu một dự án được miêu tả là hưởng lợi hoặc hỗ trợ PEP, hãy đảm bảo rằng có một số chỉ dẫn trực tiếp từ dự án được đưa vào để làm rõ sự hỗ trợ đó. Điều này là để tránh PEP vô tình mô tả một dự án là hỗ trợ PEP trong khi thực tế hỗ trợ dựa trên phỏng đoán

Nếu PEP chưa sẵn sàng, biên tập viên sẽ gửi lại cho tác giả để chỉnh sửa, kèm theo hướng dẫn cụ thể. Nếu định dạng reST là một vấn đề, hãy yêu cầu (các) tác giả sử dụng PEP 12 làm mẫu và gửi lại

Khi PEP đã sẵn sàng cho kho lưu trữ, trình soạn thảo PEP sẽ

  • Chỉ định một số PEP (hầu như luôn luôn chỉ là số có sẵn tiếp theo, nhưng đôi khi đó là một số đặc biệt/đùa, như 666 hoặc 3141). (Làm rõ. Đối với Python 3, các số trong những năm 3000 được sử dụng cho các đề xuất dành riêng cho Py3k. Nhưng giờ đây, tất cả các tính năng mới chỉ có trong Python 3, quá trình này lại quay trở lại sử dụng các số trong 100. Hãy nhớ rằng những con số dưới 100 là meta-PEP. )
  • Kiểm tra xem tác giả đã dán nhãn chính xác loại PEP (“Dự án Tiêu chuẩn”, “Thông tin”, hoặc “Quy trình”) và đánh dấu trạng thái của nó là “Bản nháp”
  • Đảm bảo tất cả các kiểm tra xây dựng CI và lint đều vượt qua mà không có lỗi và không có vấn đề rõ ràng nào trong đầu ra xem trước được hiển thị
  • Hợp nhất PEP mới (hoặc cập nhật)
  • Thông báo cho tác giả về các bước tiếp theo (mở một chủ đề thảo luận và cập nhật PEP với nó, đăng thông báo, v.v.)

Các bản cập nhật cho PEP hiện có phải được gửi dưới dạng yêu cầu kéo GitHub

Nhiều PEP được viết và duy trì bởi các nhà phát triển có quyền ghi vào cơ sở mã Python. Các biên tập viên PEP giám sát kho lưu trữ PEP để biết các thay đổi và sửa mọi lỗi về cấu trúc, ngữ pháp, chính tả hoặc đánh dấu mà họ thấy

Biên tập viên PEP không đưa ra đánh giá về PEP. Họ chỉ thực hiện phần hành chính & biên tập (thường là một nhiệm vụ có khối lượng thấp)

Tài nguyên

  • Chỉ mục đề xuất cải tiến Python
  • Theo dõi quá trình phát triển của Python
  • Hướng dẫn dành cho nhà phát triển Python

Tài liệu này được đặt trong phạm vi công cộng hoặc theo CC0-1. 0-Giấy phép phổ thông, tùy theo điều kiện nào dễ dãi hơn

Làm cách nào để chuyển đổi 1 thành 01 trong Python?

của bạn đây. python -c 'print("%02d" % 1)'.
tài liệu. con trăn. org/2/thư viện/chuỗi. html#formatspec. .
"Định dạng cho ngày giờ" - tại sao không định dạng đối tượng ngày giờ của bạn ( %d hoặc %m cho ngày/tháng).
Nói chung. định dạng (num, '02d') hoặc str (num)

Tại sao số 0 đứng đầu không được phép trong Python?

Bất cứ khi nào một số có các số 0 đứng đầu thì nó sẽ gây ra lỗi cú pháp (nếu số 8 hoặc 9 ở trong số đó) hoặc dẫn đến việc tính sai giá trị tối đa.

làm thế nào. 2f có hoạt động bằng Python không?

Một định dạng của. 2f (lưu ý f ) có nghĩa là hiển thị số có hai chữ số sau dấu thập phân . Vì vậy, số 1 sẽ hiển thị là 1. 00 và số 1. 5555 sẽ hiển thị là 1. 56.

Là gì. 1f bằng Python?

Trong Python, có nhiều phương thức khác nhau để định dạng kiểu dữ liệu. Trình định dạng %f được sử dụng cụ thể để định dạng giá trị float (số có phần thập phân) . Chúng ta có thể sử dụng trình định dạng %f để chỉ định số lượng số thập phân sẽ được trả về khi số dấu phẩy động được làm tròn lên.