Siêu dữ liệu Python-Markdown
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à Show
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 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: <type>/<subtype>; charset=<charset>[; <param_name>=<param value> ...] Phần Platform: ObscureUnix Platform: RareDOS5 chỉ có một vài giá trị pháp lý
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
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
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: <type>/<subtype>; charset=<charset>[; <param_name>=<param value> ...]1 và Description-Content-Type: <type>/<subtype>; charset=<charset>[; <param_name>=<param value> ...]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: <type>/<subtype>; charset=<charset>[; <param_name>=<param value> ...]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: <type>/<subtype>; charset=<charset>[; <param_name>=<param value> ...]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: <type>/<subtype>; charset=<charset>[; <param_name>=<param value> ...]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 Siêu dữ liệu trong markdown là gì?Có thể bao gồm siêu dữ liệu đặc biệt ở đầu tài liệu MultiMarkdown, chẳng hạn như tiêu đề, tác giả, v.v. . Thông tin này sau đó có thể được sử dụng để kiểm soát cách MultiMarkdown xử lý tài liệu hoặc có thể được sử dụng ở một số định dạng đầu ra theo những cách đặc biệt.
Siêu dữ liệu Python là gì?siêu dữ liệu, là một mô-đun Python để truy cập và quản lý siêu dữ liệu của một mục . Bạn có thể khám phá thông tin mô tả bản đồ và dữ liệu của mình và tự động hóa quy trình làm việc của mình, đặc biệt là để quản lý siêu dữ liệu không gian địa lý tuân thủ tiêu chuẩn.
Làm cách nào để cài đặt tiện ích mở rộng Python Markdown?Cài đặt dễ dàng với pip. . $ pip cài đặt phần mở rộng pymdown. Nếu bạn muốn cài đặt thủ công, hãy chạy thiết lập $ trăn. xây dựng py $ thiết lập python. cài đặt py. Sau khi cài đặt, bạn sẽ có thể truy cập các tiện ích mở rộng trong Python Markdown dưới không gian tên pymdownx. . $ pip cài đặt --editable |