Các trường được xác định trong thông số kỹ thuật sau phải được coi là hợp lệ, đầy đủ và không thể thay đổi. Các trường bắt buộc là
re.sub[r"[-_.]+", "-", name].lower[]
3re.sub[r"[-_.]+", "-", name].lower[]
4re.sub[r"[-_.]+", "-", name].lower[]
5
Tất cả các trường khác là tùy chọn
Định dạng tệp chuẩn cho siêu dữ liệu [bao gồm trong bánh xe và các dự án đã cài đặt] is based on the format of email headers. However, email formats have been revised several times, and exactly which email RFC applies to packaging metadata is not specified. In the absence of a precise definition, the practical standard is set by what the standard library module can parse using the policy.
Bất cứ khi nào siêu dữ liệu được tuần tự hóa thành luồng byte [ví dụ: để lưu vào tệp], các chuỗi phải được tuần tự hóa bằng cách sử dụng mã hóa UTF-8
Mặc dù PEP 566 đã xác định cách chuyển đổi siêu dữ liệu thành từ điển tương thích với JSON, cách này vẫn chưa được sử dụng làm định dạng trao đổi tiêu chuẩn. Nhu cầu về các công cụ để hoạt động với các gói hiện có trị giá nhiều năm khiến việc chuyển sang định dạng mới trở nên khó khăn
Ghi chú
Giải thích siêu dữ liệu cũ. Trong PEP 566, đặc tả định dạng trường của bộ xác định phiên bản đã được nới lỏng để chấp nhận cú pháp được sử dụng bởi các công cụ xuất bản phổ biến [cụ thể là để loại bỏ yêu cầu rằng các bộ xác định phiên bản phải được bao quanh bởi dấu ngoặc đơn]. Người tiêu dùng siêu dữ liệu có thể muốn sử dụng các quy tắc định dạng thoải mái hơn ngay cả đối với các tệp siêu dữ liệu trên danh nghĩa nhỏ hơn phiên bản 2. 1
nội dung
Mới trong phiên bản 1. 0
Phiên bản của định dạng tập tin; . 0”, “1. 1”, “1. 2”, “2. 1”, “2. 2” và “2. 3”
Các công cụ tự động sử dụng siêu dữ liệu NÊN cảnh báo nếu
re.sub[r"[-_.]+", "-", name].lower[]8 lớn hơn phiên bản cao nhất mà chúng hỗ trợ và PHẢI thất bại nếu
re.sub[r"[-_.]+", "-", name].lower[]8 có phiên bản chính lớn hơn phiên bản cao nhất mà chúng hỗ trợ [như được mô tả trong PEP 440, phiên bản chính là giá trị trước dấu chấm đầu tiên
Để có khả năng tương thích rộng hơn, các công cụ xây dựng CÓ THỂ chọn tạo siêu dữ liệu phân phối bằng phiên bản siêu dữ liệu thấp nhất bao gồm tất cả các trường cần thiết
Thí dụ
Metadata-Version: 2.3
Mới trong phiên bản 1. 0
Đã thay đổi trong phiên bản 2. 1. Đã thêm các hạn chế bổ sung về định dạng từ PEP 508
Tên phân phối. Trường tên là định danh chính cho phân phối. Tên hợp lệ chỉ bao gồm các chữ cái và số ASCII, dấu chấm, dấu gạch dưới và dấu gạch nối. Nó phải bắt đầu và kết thúc bằng một chữ cái hoặc số. Tên phân phối được giới hạn ở những tên phù hợp với biểu thức chính quy sau [chạy với
Version: 1.0a20]
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$
Thí dụ
________số 8_______
Để chuẩn hóa tên phân phối cho mục đích so sánh, nó phải được viết thường với tất cả các ký tự
Version: 1.0a21,
Version: 1.0a22 hoặc
Version: 1.0a23 được thay thế bằng một ký tự
Version: 1.0a22. Điều này có thể được thực hiện bằng cách sử dụng đoạn mã sau [như được chỉ định trong PEP 503]
re.sub[r"[-_.]+", "-", name].lower[]
Mới trong phiên bản 1. 0
Một chuỗi chứa số phiên bản của bản phân phối. Trường này phải ở định dạng được chỉ định trong PEP 440
Thí dụ
Version: 1.0a2
Mới trong phiên bản 2. 2
Một chuỗi chứa tên của một trường siêu dữ liệu cốt lõi khác. Tên trường
re.sub[r"[-_.]+", "-", name].lower[]4,
re.sub[r"[-_.]+", "-", name].lower[]5 và
re.sub[r"[-_.]+", "-", name].lower[]3 có thể không được chỉ định trong trường này
Khi được tìm thấy trong siêu dữ liệu của phân phối nguồn, các quy tắc sau sẽ được áp dụng
Nếu một trường không được đánh dấu là
Version: 1.0a2
8, thì giá trị của trường trong bất kỳ bánh xe nào được tạo từ sdist PHẢI khớp với giá trị trong sdist. Nếu trường không có trong sdist và không được đánh dấu làVersion: 1.0a2
8, thì nó KHÔNG ĐƯỢC có trong bánh xeNếu một trường được đánh dấu là
Version: 1.0a2
8, nó có thể chứa bất kỳ giá trị hợp lệ nào trong một bánh xe được tạo từ sdist [bao gồm cả việc không có mặt]
Nếu phiên bản siêu dữ liệu sdist cũ hơn phiên bản 2. 2, thì tất cả các trường phải được xử lý như thể chúng được chỉ định bằng
Version: 1.0a28 [i. e. không có hạn chế đặc biệt nào đối với siêu dữ liệu của bánh xe được tạo từ sdist]
Trong bất kỳ ngữ cảnh nào khác ngoài phân phối nguồn,
Version: 1.0a28 chỉ dành cho thông tin và cho biết rằng giá trị trường được tính toán tại thời điểm xây dựng bánh xe và có thể không giống với giá trị trong sdist hoặc trong các bánh xe khác cho dự án
Chi tiết đầy đủ về ngữ nghĩa của
Version: 1.0a28 được mô tả trong PEP 643
Mới trong phiên bản 1. 0
Thông số kỹ thuật của Nền tảng mô tả một hệ điều hành được hỗ trợ bởi bản phân phối không được liệt kê trong bộ phân loại Trove “Hệ điều hành”. Xem “Phân loại” bên dưới
ví dụ
Platform: ObscureUnix Platform: RareDOS
Mới trong phiên bản 1. 1
Các bản phân phối nhị phân chứa tệp PKG-INFO sẽ sử dụng trường Nền tảng được hỗ trợ trong siêu dữ liệu của chúng để chỉ định HĐH và CPU mà bản phân phối nhị phân được biên dịch. Ngữ nghĩa của trường Nền tảng được hỗ trợ không được chỉ định trong PEP này
Thí dụ
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-2791
Mới trong phiên bản 1. 0
Một bản tóm tắt một dòng về những gì phân phối làm
Thí dụ
Summary: A module for collecting votes from beagles.
Mới trong phiên bản 1. 0
Đã thay đổi trong phiên bản 2. 1. Trường này có thể được chỉ định trong nội dung thư thay thế.
Mô tả dài hơn về bản phân phối có thể kéo dài đến một số đoạn văn. Phần mềm xử lý siêu dữ liệu không được sử dụng bất kỳ kích thước tối đa nào cho trường này, mặc dù mọi người không nên đưa hướng dẫn sử dụng của họ vào phần mô tả
Nội dung của trường này có thể được viết bằng cách sử dụng đánh dấu reStructuredText. Đối với các chương trình hoạt động với siêu dữ liệu, việc hỗ trợ đánh dấu là tùy chọn; . Điều này có nghĩa là các tác giả nên thận trọng trong cách đánh dấu mà họ sử dụng
Để hỗ trợ các dòng trống và dòng có thụt đầu dòng đối với định dạng RFC 822, bất kỳ ký tự CRLF nào cũng phải có 7 dấu cách theo sau dấu gạch ngang [“. ”] ký tự. Do đó, trường Mô tả được mã hóa thành trường được gấp lại mà trình phân tích cú pháp RFC822 có thể diễn giải
Thí dụ
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |
Mã hóa này ngụ ý rằng bất kỳ sự xuất hiện nào của CRLF theo sau bởi 7 khoảng trắng và ký tự ống phải được thay thế bằng một CRLF duy nhất khi trường được mở ra bằng đầu đọc RFC822
Ngoài ra, thay vào đó, mô tả của bản phân phối có thể được cung cấp trong phần nội dung thư [i. e. , sau một dòng hoàn toàn trống theo sau các tiêu đề, không cần thụt lề hoặc định dạng đặc biệt khác]
Mới trong phiên bản 2. 1
Một chuỗi nêu rõ cú pháp đánh dấu [nếu có] được sử dụng trong mô tả của bản phân phối, để các công cụ có thể hiển thị mô tả một cách thông minh
Trước đây, PyPI đã hỗ trợ các mô tả ở dạng văn bản thuần túy và cấu trúc lại văn bản [reST] và có thể hiển thị reST thành HTML. Tuy nhiên, các tác giả phân phối thường viết mô tả trong Markdown [RFC 7763] vì nhiều trang web lưu trữ mã hiển thị Markdown README và các tác giả sẽ sử dụng lại tệp cho mô tả. PyPI không nhận ra định dạng và do đó không thể hiển thị mô tả chính xác. Điều này dẫn đến nhiều gói trên PyPI có mô tả được hiển thị kém khi Markdown được để ở dạng văn bản thuần túy hoặc tệ hơn, được cố gắng hiển thị dưới dạng reST. Trường này cho phép tác giả phân phối chỉ định định dạng mô tả của họ, mở ra khả năng cho PyPI và các công cụ khác có thể hiển thị Markdown và các định dạng khác
Định dạng của trường này giống với tiêu đề
Platform: ObscureUnix Platform: RareDOS4 trong HTTP [i. e. RFC 1341]. Tóm lại, điều này có nghĩa là nó có một phần
Platform: ObscureUnix Platform: RareDOS5 và sau đó nó có thể có một số tham số tùy chọn
Sự sắp xếp
Description-Content-Type: /; charset=[; = ...]
Phần
Platform: ObscureUnix Platform: RareDOS5 chỉ có một vài giá trị pháp lý
Platform: ObscureUnix Platform: RareDOS
7Platform: ObscureUnix Platform: RareDOS
8Platform: ObscureUnix Platform: RareDOS
9
Tham số
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27910 có thể được sử dụng để chỉ định mã hóa ký tự của mô tả. Giá trị pháp lý duy nhất là
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27911. Nếu bỏ qua, nó được coi là
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27911
Các tham số khác có thể dành riêng cho loại phụ đã chọn. Ví dụ: đối với loại phụ
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27913, có một tham số tùy chọn
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27914 cho phép chỉ định biến thể của Markdown đang sử dụng [mặc định là
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27915 nếu không được chỉ định]. Hiện tại, hai biến thể được công nhận
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-2791
5 choSupported-Platform: RedHat 7.2 Supported-Platform: i386-win32-2791
7 cho
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$0
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$1
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$2
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$3
Nếu
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27918 không được chỉ định, thì các ứng dụng nên cố gắng hiển thị nó dưới dạng
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27919 và quay trở lại
Platform: ObscureUnix Platform: RareDOS7 nếu nó không hợp lệ đầu tiên
Nếu
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27918 là một giá trị không được nhận dạng, thì loại nội dung giả định là
Platform: ObscureUnix Platform: RareDOS7 [Mặc dù PyPI có thể sẽ từ chối bất kỳ nội dung nào có giá trị không được nhận dạng]
Nếu
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27918 là
Platform: ObscureUnix Platform: RareDOS9 và
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27914 không được chỉ định hoặc được đặt thành một giá trị không được công nhận, thì
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27914 giả định là
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27915
Vì vậy, đối với ví dụ cuối cùng ở trên,
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27910 mặc định là
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27911 và
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27914 mặc định là
Supported-Platform: RedHat 7.2 Supported-Platform: i386-win32-27915 và do đó, nó tương đương với ví dụ trước đó
Mới trong phiên bản 1. 0
Danh sách các từ khóa bổ sung, được phân tách bằng dấu phẩy, được sử dụng để hỗ trợ tìm kiếm bản phân phối trong danh mục lớn hơn
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$4
Ghi chú
Thông số kỹ thuật trước đây hiển thị các từ khóa được phân tách bằng dấu cách, nhưng distutils và setuptools đã triển khai nó bằng dấu phẩy. Những công cụ này đã được sử dụng rất rộng rãi trong nhiều năm, vì vậy việc cập nhật thông số kỹ thuật để phù hợp với tiêu chuẩn thực tế sẽ dễ dàng hơn.
Mới trong phiên bản 1. 0
Một chuỗi chứa URL cho trang chủ của bản phân phối
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$5
Mới trong phiên bản 1. 1
Một chuỗi chứa URL mà phiên bản phân phối này có thể được tải xuống từ đó. [Điều này có nghĩa là URL không được giống như “…/BeagleVote-latest. tgz”, nhưng thay vào đó phải là “…/BeagleVote-0. 45. tgz”. ]
Mới trong phiên bản 1. 0
Một chuỗi chứa tên tác giả ở mức tối thiểu;
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$6
Mới trong phiên bản 1. 0
Một chuỗi chứa địa chỉ e-mail của tác giả. Nó có thể chứa tên và địa chỉ email ở dạng hợp pháp cho tiêu đề RFC-822
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |2
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$7
Theo RFC-822, trường này có thể chứa nhiều địa chỉ email được phân tách bằng dấu phẩy
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$8
Mới trong phiên bản 1. 2
Một chuỗi chứa tên của người bảo trì ở mức tối thiểu;
Lưu ý rằng trường này được thiết kế để sử dụng khi một dự án đang được duy trì bởi một người nào đó không phải là tác giả ban đầu. nó nên được bỏ qua nếu nó giống hệt với
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |3
Thí dụ
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$9
Mới trong phiên bản 1. 2
Một chuỗi chứa địa chỉ e-mail của người bảo trì. Nó có thể chứa tên và địa chỉ email ở dạng hợp pháp cho tiêu đề RFC-822
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |2
Lưu ý rằng trường này được thiết kế để sử dụng khi một dự án đang được duy trì bởi một người nào đó không phải là tác giả ban đầu. nó nên được bỏ qua nếu nó giống hệt với
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |5
Thí dụ
Name: BeagleVote0
Theo RFC-822, trường này có thể chứa nhiều địa chỉ email được phân tách bằng dấu phẩy
Name: BeagleVote1
Mới trong phiên bản 1. 0
Văn bản cho biết giấy phép bao gồm phân phối trong đó giấy phép không phải là lựa chọn từ bộ phân loại Trove "Giấy phép". Xem bên dưới. Trường này cũng có thể được sử dụng để chỉ định một phiên bản giấy phép cụ thể được đặt tên thông qua trường
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |6 hoặc để chỉ ra một biến thể hoặc ngoại lệ đối với giấy phép đó
ví dụ
Name: BeagleVote2
Mới trong phiên bản 1. 1
Mỗi mục nhập là một chuỗi đưa ra một giá trị phân loại duy nhất cho phân phối. Các trình phân loại được mô tả trong PEP 301 và Chỉ mục gói Python xuất bản một danh sách động các trình phân loại hiện được xác định
Trường này có thể được theo sau bởi một điểm đánh dấu môi trường sau dấu chấm phẩy
ví dụ
Name: BeagleVote3
Mới trong phiên bản 1. 2
Đã thay đổi trong phiên bản 2. 1. Đặc tả định dạng trường được nới lỏng để chấp nhận cú pháp được sử dụng bởi các công cụ xuất bản phổ biến.
Mỗi mục chứa một chuỗi đặt tên cho một số dự án distutils khác theo yêu cầu của bản phân phối này
Định dạng của một chuỗi yêu cầu chứa từ một đến bốn phần
Tên dự án, có cùng định dạng với trường
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |
7. Phần bắt buộc duy nhấtDanh sách các tên 'thêm' được phân tách bằng dấu phẩy. Chúng được xác định bởi dự án bắt buộc, đề cập đến các tính năng cụ thể có thể cần phụ thuộc thêm. Tên PHẢI phù hợp với các hạn chế được chỉ định bởi trường
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |
8Trình xác định phiên bản. Các công cụ phân tích cú pháp định dạng phải chấp nhận các dấu ngoặc đơn tùy chọn xung quanh điều này, nhưng các công cụ tạo ra nó không được sử dụng các dấu ngoặc đơn
Một điểm đánh dấu môi trường sau dấu chấm phẩy. Điều này có nghĩa là yêu cầu chỉ cần thiết trong các điều kiện được chỉ định
Xem PEP 508 để biết đầy đủ chi tiết về định dạng được phép
Tên dự án phải tương ứng với các tên được tìm thấy trên Chỉ mục gói Python
Trình xác định phiên bản phải tuân theo các quy tắc được mô tả trong Trình xác định phiên bản .
ví dụ
Name: BeagleVote4
Mới trong phiên bản 1. 2
Trường này chỉ định [các] phiên bản Python mà bản phân phối được đảm bảo tương thích với. Các công cụ cài đặt có thể xem xét điều này khi chọn phiên bản nào của dự án sẽ cài đặt
Giá trị phải ở định dạng được chỉ định trong Thông số phiên bản .
Trường này không thể được theo sau bởi một điểm đánh dấu môi trường
ví dụ
Name: BeagleVote5
Mới trong phiên bản 1. 2
Đã thay đổi trong phiên bản 2. 1. Đặc tả định dạng trường được nới lỏng để chấp nhận cú pháp được sử dụng bởi các công cụ xuất bản phổ biến.
Mỗi mục chứa một chuỗi mô tả một số phụ thuộc trong hệ thống mà bản phân phối sẽ được sử dụng. Trường này nhằm phục vụ như một gợi ý cho những người bảo trì dự án hạ nguồn và không có ngữ nghĩa nào có ý nghĩa đối với phân phối
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |9
Định dạng của chuỗi yêu cầu là tên của một phụ thuộc bên ngoài, tùy ý theo sau là khai báo phiên bản trong ngoặc đơn
Trường này có thể được theo sau bởi một điểm đánh dấu môi trường sau dấu chấm phẩy
Bởi vì chúng đề cập đến các bản phát hành phần mềm không phải của Python, số phiên bản cho trường này không bắt buộc phải tuân theo định dạng được chỉ định trong PEP 440. chúng phải tương ứng với sơ đồ phiên bản được sử dụng bởi phụ thuộc bên ngoài
Lưu ý rằng không có quy tắc cụ thể nào về các chuỗi sẽ được sử dụng
ví dụ
Name: BeagleVote6
Mới trong phiên bản 1. 2
Một chuỗi chứa URL có thể duyệt cho dự án và nhãn cho nó, được phân tách bằng dấu phẩy
Thí dụ
Name: BeagleVote7
Nhãn là văn bản miễn phí giới hạn trong 32 ký tự
Mới trong phiên bản 2. 1
Đã thay đổi trong phiên bản 2. 3. PEP 685 hạn chế các giá trị hợp lệ phải rõ ràng [i. e. không cần chuẩn hóa]. Đối với các phiên bản siêu dữ liệu cũ hơn, các hạn chế về giá trị đã được đưa ra phù hợp với
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |7 và các quy tắc chuẩn hóa đã được đưa ra.
Một chuỗi chứa tên của một tính năng tùy chọn. Tên hợp lệ chỉ bao gồm các chữ cái ASCII viết thường, số ASCII và dấu gạch nối. Nó phải bắt đầu và kết thúc bằng một chữ cái hoặc số. Dấu gạch nối không được theo sau bởi dấu gạch nối khác. Tên được giới hạn ở những tên phù hợp với biểu thức chính quy sau [đảm bảo tính rõ ràng]
Name: BeagleVote8
Tên được chỉ định có thể được sử dụng để tạo điều kiện phụ thuộc vào việc liệu tính năng tùy chọn có được yêu cầu hay không
Thí dụ
Name: BeagleVote9
Bản phân phối thứ hai yêu cầu một phụ thuộc tùy chọn bằng cách đặt nó bên trong dấu ngoặc vuông và có thể yêu cầu nhiều tính năng bằng cách tách chúng bằng dấu phẩy [,]. Các yêu cầu được đánh giá cho từng tính năng được yêu cầu và được thêm vào tập hợp các yêu cầu cho bản phân phối
Thí dụ
re.sub[r"[-_.]+", "-", name].lower[]0
Hai tên tính năng
Description-Content-Type: /; charset=[; = ...]1 và
Description-Content-Type: /; charset=[; = ...]2 được dành riêng để đánh dấu các phụ thuộc cần thiết để chạy thử nghiệm tự động và tạo tài liệu tương ứng
Việc chỉ định
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |8 mà không tham khảo nó trong bất kỳ
Description-Content-Type: /; charset=[; = ...]4 nào là hợp pháp
Khi ghi dữ liệu cho các phiên bản siêu dữ liệu cũ hơn, các tên PHẢI được chuẩn hóa theo cùng quy tắc được sử dụng cho trường
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |7 khi thực hiện so sánh. Công cụ ghi siêu dữ liệu PHẢI phát sinh lỗi nếu hai mục nhập
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |8 xung đột sau khi được chuẩn hóa
Khi đọc dữ liệu cho các phiên bản siêu dữ liệu cũ hơn, các công cụ NÊN cảnh báo khi các giá trị cho trường này không hợp lệ trong các phiên bản siêu dữ liệu mới hơn. Nếu một giá trị không hợp lệ theo các quy tắc cho
Description: This project provides powerful math functions |For example, you can use `sum[]` to sum numbers: | |Example:: | | >>> sum[1, 2] | 3 |7 trong bất kỳ phiên bản siêu dữ liệu cốt lõi nào, thì người dùng NÊN được cảnh báo và bỏ qua giá trị đó để tránh sự mơ hồ. Các công cụ CÓ THỂ chọn phát sinh lỗi khi đọc tên không hợp lệ đối với các phiên bản siêu dữ liệu cũ hơn
Các trường trong phần này hiện hiếm khi được sử dụng vì thiết kế của chúng được lấy cảm hứng từ các cơ chế có thể so sánh được trong các hệ thống quản lý gói Linux và hoàn toàn không rõ ràng về cách các công cụ nên diễn giải chúng trong ngữ cảnh của một máy chủ chỉ mục mở chẳng hạn như PyPI
Do đó, các công cụ cài đặt phổ biến hoàn toàn bỏ qua chúng, điều này có nghĩa là có rất ít động cơ khuyến khích các nhà xuất bản gói cài đặt chúng một cách thích hợp. Tuy nhiên, chúng được giữ lại trong đặc tả siêu dữ liệu vì chúng vẫn có khả năng hữu ích cho mục đích cung cấp thông tin và cũng có thể được sử dụng cho mục đích dự định ban đầu của chúng khi kết hợp với kho lưu trữ gói được quản lý
Mới trong phiên bản 1. 2
Đã thay đổi trong phiên bản 2. 1. Đặc tả định dạng trường được nới lỏng để chấp nhận cú pháp được sử dụng bởi các công cụ xuất bản phổ biến.
Mỗi mục chứa một chuỗi đặt tên dự án Distutils có trong bản phân phối này. Trường này phải bao gồm dự án được xác định trong trường
re.sub[r"[-_.]+", "-", name].lower[]4, theo sau là phiên bản. Tên [Phiên bản]
Một bản phân phối có thể cung cấp tên bổ sung, e. g. để chỉ ra rằng nhiều dự án đã được nhóm lại với nhau. Chẳng hạn, các bản phân phối nguồn của dự án
Description-Content-Type: /; charset=[; = ...]9 trong lịch sử đã bao gồm dự án
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$00, dự án này hiện có sẵn dưới dạng một bản phân phối riêng biệt. Cài đặt phân phối nguồn như vậy đáp ứng các yêu cầu cho cả
Description-Content-Type: /; charset=[; = ...]9 và
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$00
Một bản phân phối cũng có thể cung cấp tên dự án “ảo”, tên này không tương ứng với bất kỳ dự án được phân phối riêng nào. tên như vậy có thể được sử dụng để biểu thị một khả năng trừu tượng có thể được cung cấp bởi một trong nhiều dự án. e. g. , nhiều dự án có thể cung cấp các ràng buộc RDBMS để ORM nhất định sử dụng. mỗi dự án có thể tuyên bố rằng nó cung cấp
^[[A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9]]$03, cho phép các dự án khác chỉ phụ thuộc vào việc có nhiều nhất một trong số chúng được cài đặt
Khai báo phiên bản có thể được cung cấp và phải tuân theo các quy tắc được mô tả trong Thông số phiên bản . Số phiên bản của bản phân phối sẽ được ngụ ý nếu không được chỉ định.
Trường này có thể được theo sau bởi một điểm đánh dấu môi trường sau dấu chấm phẩy
ví dụ
re.sub[r"[-_.]+", "-", name].lower[]1
Mới trong phiên bản 1. 2
Đã thay đổi trong phiên bản 2. 1. Đặc tả định dạng trường được nới lỏng để chấp nhận cú pháp được sử dụng bởi các công cụ xuất bản phổ biến.
Mỗi mục chứa một chuỗi mô tả bản phân phối của dự án distutils mà bản phân phối này làm cho lỗi thời, nghĩa là không nên cài đặt hai dự án cùng một lúc
Có thể cung cấp các khai báo phiên bản. Số phiên bản phải ở định dạng được chỉ định trong Thông số phiên bản .
Trường này có thể được theo sau bởi một điểm đánh dấu môi trường sau dấu chấm phẩy
Việc sử dụng phổ biến nhất của trường này sẽ là trong trường hợp tên dự án thay đổi, e. g. gogon 2. 3 được gộp vào Torqued Python 1. 0. Khi bạn cài đặt Torqued Python, bản phân phối Gorgon sẽ bị xóa