Code Style. YAML
Use this page to configure formatting options for YAML files. When you change these settings, the Preview pane shows how this will affect your code.
Tabs and Indents
In this field, specify the number of spaces to be inserted for each indent level.
Keep indents on empty lines
If this checkbox is selected, PyCharm retains indents on empty lines as if they contained some code. If the checkbox is cleared, PyCharm deletes spaces on empty lines.
Indent sequence value
If selected, YAML sequence values are indented relative to the parent key item.
Wrapping and braces
In this tab, customize the exceptions, brace placement and alignment options that PyCharm will apply to various code constructs on reformatting the source code. Check the results in the Preview pane.
Alignment takes precedence over indentation options.
In this field, specify multiple right margins. You can leave a default value or enter the number of spaces for your margin. If you want to specify several margins, enter numbers separated by comma.
Keep when reformatting
Use the checkboxes to configure exceptions that PyCharm will make when reformatting the source code. For example, by default, the Line breaks checkbox is selected.
If your code contains lines that are shorter than a standard convention, you can convert them by disabling the Line breaks checkbox before reformatting.
Align values in maps
Use this list to specify how PyCharm should align key-value pairs. The available options are:
- Do not align : the attributes in sequential lines will be not aligned.
- On colon : the attributes in sequential lines will be aligned against the colon.
- On value : the attributes in sequential lines will be aligned against the value.
Use these options to specify formatting for the YAML sequence values:
-
Sequence on new line : if selected, each new sequence inside a nested sequences block is put on a separate line:
— — — nested sequences block
Otherwise, nested sequences will be kept on a single line:
— — — nested sequences block
Otherwise, they are kept on a single line:
Set from
The link appears in the upper-right corner of the page, when applicable. Click this link and choose the language to be used as the base for the current language code style.
To return to the initial set of code style settings and discard the changes, click Reset .
File type associations
For language-specific features (such as syntax highlighting and code analysis ) in files representing different languages and technologies, PyCharm maintains a list of file types , each of which links a language service with one or more filename patterns.
The default list of file types covers all relevant filename patterns, but you can add new file types for your custom language files and change the associated filename patterns for existing file types.
If you are working on a language that is not supported in PyCharm by default, there might be plugins supporting that language depending on the PyCharm edition.
When you open a file in the editor, PyCharm chooses the file type and the corresponding language service according to the filename pattern. If the filename doesn’t match any of the patterns registered for file types, you can associate the filename pattern with a specific file type.
Apart from that, you can make PyCharm the default application for opening specific file types from the file manager on your operating system.
Add a custom file type
If you work on a language that is not supported by default and there are no plugins for it, you can configure a simple language service for files associated with this language — you will enjoy syntax highlighting for keywords, comments, and braces and have some basic editor helpers such as adding line/block comments with Ctrl+/ / Ctrl+Shift+/ and extending/shrinking selection according to the structure with Ctrl+W / Ctrl+Shift+W .

- Press Ctrl+Alt+S to open the IDE settings and then select Editor | File Types .
- In the Recognized File Types section, click , specify the name of the new type, and provide a description.
- In the Syntax Highlighting section, configure case sensitivity, brace matching settings, and specify ways of defining comments:
- Line comment : specify characters that indicate the beginning of a single-line comment.
- Only at line start : characters that indicate the beginning of a line comment are recognized as a comment if they are located at the beginning of a line.
- Block comment start , Block comment end : specify characters that indicate the beginning and the end of a block comment.
- Hex prefix : specify characters that indicate that the subsequent value is a hexadecimal number (for example, 0x ).
- Number postfixes : specify characters that indicate which numeric system or unit is used. A postfix is a trailing string of characters (for example, e-3, kg ).
- Support paired braces , Support paired brackets , Support paired parens , Support string escapes : select these checkboxes to highlight paired braces, brackets, parentheses, and string escapes.
- In the Keywords section, you can specify up to four lists of keywords. Keywords of each list will be highlighted differently in the editor and will be auto-completed.
- The Ignore case checkbox indicates whether keywords in files of the custom format are case-sensitive.
- You can customize colors for syntax highlighting of language-specific keywords, comments, and other identifiers on the Editor | Color Scheme | User-Defined File Types settings page.
Configure associations between filename patterns and file types
Associate a filename pattern with specific file type

- If PyCharm cannot identify the type of the file that you are trying to open or create, it displays the Register New File Type Association dialog where you can choose the way you want to process this file. If the dialog doesn’t appear automatically, right-click the file in the Project tool window and select Associate with File Type from the context menu or choose File | File Properties | Associate with File Type from the main menu.
- In the Register New File Type Association dialog, select the necessary options:
- From the File pattern list, select whether you want to specify a type for the current file ( file.extension ) or for all files with this extension ( *.extension ).
- Select one of the following options:
- Open matching files as text and auto-detect file type by content : open the file without an extension as a text file and identify its type by the content, for example, by the shebang line.
- Open matching files in PyCharm : associate the file with one of the existing file types. You can change this association later in the settings.
- Open matching files in associated application : open the file in the default system application configured in your operating system. For example, .pdf files are opened in the default PDF viewer. If necessary, you can check and configure all filename patterns associated with system applications.
- Click OK to apply the settings.
Change filename patterns associated with file type

- Press Ctrl+Alt+S to open the IDE settings and then select Editor | File Types .
- From the Recognized File Types list, select the file type that you want to associate with other filename patterns.
- Use the File name patterns section to make the necessary changes. You can add a new pattern (), remove an existing one (), or modify an existing pattern ().
If your project contains files in proprietary formats, such as .pdf and .docx , PyCharm will open these files using the default application configured in your operating system. When a specific proprietary file format is not recognized, or you just want to open certain files with the system application, you can add the necessary associations.
Configure filename patterns associated with system applications
- Press Ctrl+Alt+S to open the IDE settings and then select Editor | File Types .
- In the Recognized File Types list, select Files opened in associated applications .
- In the File name patterns section on the right, click and specify a filename pattern that should be associated with an external application.
If a file is correctly associated with a specific file type by its filename pattern, but you want to process this file differently, you can override the file type association for this file only — other files matching that pattern will not be affected.
Override file type for specific file

- In the Project tool window ( Alt+1 ) , select one or more files that should have another file type association, right-click the selection and choose Override File Type .
- From the list that opens, select a new file type. Use speed search to find the required file type faster.
- To restore the original file type association according to the filename pattern, right-click the file or files again and select Revert File Type Override from the context menu.
Make PyCharm the default app for specific file types
You can make PyCharm the default application for opening specific file types from the default file manager on your operating system.

- Press Ctrl+Alt+S to open the IDE settings and then select Editor | File Types .
- Click Associate File Types with PyCharm and select the file extensions you want to open with the IDE.
- Click OK and close the dialog. If you’re using macOS, restart your computer to apply the changes.
Ignore files and folders
PyCharm also maintains a list of files and folders that are completely excluded from any kind of processing. Out of the box, this list includes temporary files, service files related to version control systems, and so on:
*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;
Modify the list of ignored files and folders
- Press Ctrl+Alt+S to open the IDE settings and then select Editor | File Types .
- Switch to the Ignored Files and Folders tab. You can add a new extension (), remove an existing one (), or modify an existing extension ().
- Apply the changes and close the dialog.
Configure shebang commands for file types
PyCharm can recognize file types by the path specified on the shebang line. A shebang is a combination of characters in a script file followed by a path to the interpreter program that should execute this script. It starts with #! and it’s always located on the first line of a script file.

- Press Ctrl+Alt+S to open the IDE settings and then select Editor | File Types .
- From the Recognized File Types list, select the file type for which you want to configure a command.
- In the HashBang patterns area, click ( Add HashBang Pattern ).
- In the dialog that opens, specify the pattern that the IDE will use to recognize a file type, then click OK .
- Apply the changes and close the dialog.
YAML за 5 минут: синтаксис и основные возможности
YAML — это язык для сериализации данных, который используют DevOps и дата-сайентисты. Рассказываем про синтаксис YAML-файлов.
YAML — это язык для сериализации данных, который отличается простым синтаксисом и позволяет хранить сложноорганизованные данные в компактном и читаемом формате. Рассказываем, как это пригодится для DevOps и виртуализации.
- Что такое YAML?
- YAML vs JSON vs XML
- Характерные особенности YAML
- Синтаксис YAML
- Что ещё может YAML?
Что такое YAML?
YAML — это язык для хранения информации в формате понятном человеку. Его название расшифровывается как, «Ещё один язык разметки». Однако, позже расшифровку изменили на — «YAML не язык разметки», чтобы отличать его от настоящих языков разметки.
Язык похож на XML и JSON, но использует более минималистичный синтаксис при сохранении аналогичных возможностей. YAML обычно применяют для создания конфигурационных файлов в программах типа Инфраструктура как код (Iac), или для управления контейнерами в работе DevOps.
Чаще всего с помощью YAML создают протоколы автоматизации, которые могут выполнять последовательности команд записанные в YAML-файле. Это позволяет вашей системе быть более независимой и отзывчивой без дополнительного внимания разработчика.
Всё больше и больше компаний используют DevOps и виртуализацию, поэтому YAML — это must have для современного разработчика. Кроме того, YAML легко интегрировать, благодаря поддержке Python (используя PyYAML библиотеку, Docker или Ansible) и других популярных технологий.
YAML vs JSON vs XML
YAML (.yml)
- понятный человеку код;
- минималистичный синтаксис;
- заточен под работу с данными;
- встроенный стиль, похожий на JSON (YAML является его надмножеством);
- поддерживает комментарии;
- поддерживает строки без кавычек;
- считается «чище», чем JSON;
- дополнительные возможности (расширяемые типы данных, относительные якоря и маппинг типов с сохранением порядка ключей).
Применение: YAML лучше всего подходит для приложений с большим объемом данных, которые используют DevOps конвейеры или виртуальные машины. Кроме того, улучшение читаемости данных пригодится в командах, где разработчики часто с ними взаимодействуют.
JSON
- труднее читать;
- явные, строгие требования к синтаксису;
- встроенный стиль, похожий на YAML (некоторые парсеры YAML могут читать JSON-файлы);
- нет комментариев;
- строкам нужны двойные кавычки.
Применение: JSON используется в веб-разработке — это лучший формат для сериализации и передачи данных через HTTP-соединение.
XML
- труднее читать;
- более многословный;
- действует как язык разметки, а YAML как язык для форматирования данных;
- больше возможностей чем у YAML, например атрибуты тегов;
- более жёсткая схема документа.
Применение: XML идеален для сложных проектов, которым требуется тонкий контроль над валидацией, схемой и пространством имён. Язык обладает плохой читаемостью, требует большей пропускной способности и ёмкости хранилища, но обеспечивает беспрецедентный контроль.
Характерные особенности YAML
Поддержка мультидокументов
Вы можете объединить несколько YAML-документов в один YAML-файл для облегчения организации файлов и парсинга данных.
Документы разделяются тремя дефисами (—):
--- player: playerOne action: attack (miss) --- player: playerTwo action: attack (hit) ---
Поддержка комментариев
YAML позволяет добавлять комментарии после символа #, как в Python:
key: #Это однострочный комментарий - value line 5 #Это #многострочный комментарий - value line 13
Легко читаемый синтаксис
В синтаксисе YAML-файлов используется система отступов, как в Python. Необходимо использовать пробелы, а не табуляцию, чтобы избежать путаницы.
Это избавляет от лишних символов, которые есть в JSON и XML (кавычки, скобки, фигурные скобки).
В итоге читаемость файла значительно повышается.
YAML
#YAML Imaro: author: Charles R. Saunders language: English publication-year: 1981 pages: 224
JSON
Явная и неявная типизация
YAML предлагает как автоопределение типов, так и возможность явно указать тип данных. Чтобы использовать конкретный тип, нужно написать !![тип] перед значением.
# Это значение преобразуется в int: is-an-int: !!int 14.10 # Превращает любое значение в строку: is-a-str: !!str 67.43 # Значение должно быть boolean: is-a-bool: !!bool yes
Отсутствие исполняемых файлов
YAML не содержит исполняемых файлов. Поэтому можно безопасно обмениваться YAML-файлами с третьей стороной.
Чтобы использовать исполняемые файлы, YAML нужно интегрировать с другими языками, например Perl или Java.
Синтаксис YAML
В языке есть несколько базовых концепций, которые позволяют обрабатывать большинство данных.
Пары ключ-значение
Большинство данных в YAML-файле хранятся в виде пары ключ-значение, где ключ — это имя пары, а значение — связанные данные.
Скаляры и маппинг
Скаляр представляет собой одно значение, которому соответствует имя.
YAML поддерживает стандартные типы: int и float, boolean, string и null.
Они могут быть представлены в разных видах: шестнадцатеричном, восьмеричном или экспоненциальном. Также существуют специальные типы для математических сущностей, такие как: бесконечность, -бесконечность и NAN.
integer: 25 hex: 0x12d4 #равно 4820 octal: 023332 #равно 9946 float: 25.0 exponent: 12.3015e+05 #равно 1230150.0 boolean: Yes string: "25" infinity: .inf # преобразуется в бесконечность neginf: -.Inf #преобразуется в минус бесконечность not: .NAN #Not a Number null: ~
Строки
Строка — это коллекция символов, которая может содержать слово или предложение. Можно использовать либо |, для отдельных строк, либо >, для параграфов.
Кавычки в YAML не нужны.
str: Hello World data: | Это Отдельные Строки data: > Это один параграф текста
Последовательности
Последовательности — это структуры данных похожие на списки или массивы, которые хранят несколько значений под одним ключом. Они определяются с помощью отступов или [].
shopping: - milk - eggs - juice
Однострочные последовательности выглядят лаконичнее, но хуже читаются.
shopping: [milk, eggs, juice]
Словари
Словари — это коллекции пар ключ-значение, которые хранятся под одним ключом. Они позволяют разделить данные на логические категории.
Employees: - dan: name: Dan D. Veloper job: Developer team: DevOps - dora: name: Dora D. Veloper job: Project Manager team: Web Subscriptions
Словари могут содержать более сложные структуры, что позволяет хранить сложные реляционные данные.
Что ещё может YAML?
- Anchors (якоря)
- Templates (шаблоны)
- Взаимодействие с Docker, Ansible и т. д.
- Расширенные последовательности и маппинг.
- Расширенные типы данных (timestamp, null и т. д.)
Сборник советов, как упростить работу с YAML-файлами

YAML (.yml) — популярный язык для конфигурационных файлов, широко используемый DevOps в подходе «Инфраструктура как Код» (IaC). Несмотря на то, что работать с ним бывает проще, чем с тем же JSON (особенно в контексте взаимодействия с большими объемами данных), иногда использовать его бывает трудно. В этой статье мы рассмотрим несколько советов, которые помогут упростить процесс создания и редактирования yml-файлов.
Используйте специализированные редакторы и плагины
Установка в текстовый редактор IDE плагина с поддержкой YAML может в корне изменить процесс работы с этим форматом. Ведь они предоставляют целый набор полезных функций:
- Подсветка синтаксиса. Все элементы YAML-файла (строки, числа, массивы и т.д.) выделяются разными цветами, что повышает читабельность и облегчает поиск ошибок.
- Автодополнение кода. Плагин будет автоматически предлагать варианты написания элементов и тегов по мере ввода, избавляя от необходимости постоянно держать правила синтаксиса YAML в голове.
- Проверка отступов. Плагины контролирует правильность и непротиворечивость структуры отступов в документе, не давая ошибиться со вложенностью.
- Сниппеты (шаблоны кода). Можно заранее определить и использовать шаблоны типовых фрагментов конфигурации (например, объявления службы в docker-compose.yml).
Популярные плагины для работы с YAML: YAML Support для VS Code, yaml-mode для Emacs, drawspaces для Gedit. Их использование сэкономит массу времени и избавит от головной боли при написании сложных конфигурационных файлов.
Придерживайтесь best practices
Вроде бы очевидный совет, но чтобы минимизировать типичные ошибки при написании YAML, рекомендуется придерживаться нескольких правил:
- Всегда заключайте строковые значения в кавычки. Если этого не сделать, YAML может неявно привести строку к числу, булевому значению или null, что приведет к неочевидным багам.
- Используйте последовательную структуру отступов. Например, только пробелы или только табы. Смешение табуляции и пробелов часто становится источником ошибок.
- Для логических значений применяйте только true/false. В YAML есть масса синонимов вроде yes/no, on/off, но это только добавляет путаницы.
- Комментируйте все нетривиальные решения и неочевидные моменты в YAML-файлах с помощью «# «. Это сэкономит вам время при последующем изучении конфигурации.
Генерируйте YAML из кода
Ручное написание сложных вложенных конфигураций на YAML задача не из приятных. Гораздо проще сначала определить нужную структуру данных в виде словарей и массивов в том же Python,а затем сгенерировать из нее YAML с помощью соответствующей библиотеки.
Например, нужно определить такую структуру данных:
python data = < "server": < "port": 8000, "enabled": true >, "clients": [ , ] >
Мы ее описали в Python, структурировали как нужно. Теперь с помощью библиотеки pyyaml легко конвертируем в YAML-файл:
python import yaml with open('config.yaml','w') as f: f.write(yaml.dump(data))
В результате получим желаемый результат без лишней возни с отступами и кавычками:
yaml server: port: 8000 enabled: true clients: - address: 192.168.1.100 name: Client1 - address: 192.168.1.101 name: Client2
Используйте валидаторы и линтеры
Специальные инструменты для анализа YAML-файлов помогут выявить множество потенциальных ошибок еще до запуска приложения.
- yamllint — линтер YAML, который может быть легко встроен в CI/CD pipelines. Выдает предупреждения о потенциально опасных конструкциях и нарушениях правил синтаксиса.
- drona — валидатор с уклоном на безопасность. Может проверить файлы на наличие уязвимых креденшалов, секретов и прочей скрытой информации.
- kubeval — специальный валидатор для файлов с описаниями Kubernetes-ресурсов (deployments, services). Проверяет их соответствие схеме Kubernetes API.
Многие из этих утилит можно легко встроить в CI/CD, например развернув как предварительный шаг перед запуском приложения из нового образа.
Разбивайте конфигурации на фрагменты
Если YAML-файлы приложения разрастаются, их сложно обслуживать и модифицировать. Можно разделить код на несколько файлов с фрагментами — общими параметрами, настройками подсистем. Затем в основной файл подключать их через якоря.
Например, есть такой кусок конфигурации mysql-сервера:
yaml mysql: image: mysql:8.0 ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=passwd - MYSQL_DATABASE=appdb volumes: - mysql-data:/var/lib/mysql volumes: mysql-data:
Параметры подключения к БД используются также в конфигах других сервисов. Выносим их в отдельный файл `mysql-creds.yml`:
yaml &default_conn user: 'root' pass: 'passwd' db: 'appdb'
Теперь подключаем в основном конфиге через якорь `*`:
yaml mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: *default_conn.pass MYSQL_DATABASE: *default_conn.db
Общие фрагменты теперь можно многократно использовать!
Создавайте шаблоны и заготовки
При работе с похожими конфигурационным файлами имеет смысл заготовить шаблоны. Намного проще взять существующую заготовку, подставить в нее данные приложения и получить готовый YAML-файл нужной структуры.
Например, при развертывании микросервисов в Kubernetes удобно для каждого из них иметь шаблон манифеста `deployment.yaml` :
yaml apiVersion: apps/v1 kind: Deployment metadata: name: labels: app: spec: replicas: 3 template: metadata: labels: app: spec: containers: - name: image: : ports: - containerPort: --- apiVersion: v1 kind: Service
Здесь уже заданы структура и все нужные поля, остается только заполнить значениями (в угловых скобках).
Пишите автоматические тесты
Еще один способ упростить поддержку YAML в актуальном состоянии — написать автоматические тесты с использованием фреймворков вроде pytest. В них каждый YAML-файл будет импортироваться, проверяться на валидность и соответствие бизнес-требованиям.
Например, можно протестировать, что в конфигурации запуска приложения присутствуют нужные параметры:
python import yaml import pytest def test_config_has_variables(yaml_config): config = yaml.safe_load(yaml_config) # Check properties assert config['app']['version'] == '1.3' assert config['database']['port'] == 3306 # More assertions of config schema.
Такие тесты гарантируют, что инфраструктурный код не сломается после очередных изменений. Их можно запускать автоматически в рамках CI после любых коммитов в репозиторий.
Используйте визуальные редакторы
Если не хочется разбираться в синтаксисе и писать все вручную, попробуйте визуальные редакторы YAML. В них вы создаете конфигурационный файл, перетаскивая элементы и выставляя связи на диаграммах.
Популярные графические редакторы YAML:
- Kui. Инструмент для создания манифестов ресурсов Kubernetes с помощью визуальных диаграмм
- YAML Editor. Онлайн-редактор для общих конфигураций YAML с компонентами пользовательского интерфейса.
Такой подход больше подходит для структурирования простых и средних по сложности файлов.
Заключение
Работу с YAML можно значительно упростить и ускорить с помощью специализированных инструментов и подходов. Главное — выбрать подходящий для вас набор методов и последовательно его применять. Комбинация нескольких указанных советов (линтеры, генерация кода, шаблоны) способна полностью автоматизировать рутинную работу с конфигурационными файлами и избавить разработчика от бесконечной головной боли. Надеемся это сборник совет был вам полезен и желаем, чтобы работа с YAML была для вас легкой и приятной!
- Блог компании ITSumma
- Системное администрирование
- DevOps