{
    "type": "array",
    "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
            "module-name": {
                "type": "string",
                "pattern": "^[A-Za-z0-9\\.\\_\\-]+$"
            },
            "parameters": {
                "type": "array",
                "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "name": {
                            "type": "string"
                        },
                        "values": {
                            "type": "string"
                        },
                        "default": {
                            "type": "string"
                        }
                    },
                    "required" : ["name", "values"]
                }
            },
            "variables": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "setup_code": {
                        "type": "string"
                    },
                    "declarations": {
                        "type": "object",
                        "additionalProperties": {
                                "type": "string"
                        }
                    }
                }
            },
            "data-files": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "dest_path": {
                        "type": "string"
                    },
                    "dirs": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "patterns": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "empty_dirs": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "empty_dir_structures": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "include-pyi-file": {
                        "type": "string",
                        "enum": ["yes", "no"]                    },
                    "include-metadata": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "when": {
                        "type": "string"
                    }
                }
            },
            "dlls": {
                "type": "array",
                "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "from_filenames": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "relative_path": {
                                    "type": "string"
                                },
                                "prefixes": {
                                    "type": "array"
                                },
                                "suffixes": {
                                    "type": "array",
                                    "items": {
                                        "type": "string",
                                        "pattern": "^[^.]\\w*$"
                                    }
                                },
                                "executable": {
                                    "type": "string",
                                    "enum": ["yes", "no"]
                                }
                            },
                            "required" : ["prefixes"]
                        },
                        "by_code": {
                            "additionalProperties": false,
                            "type": "object",
                            "properties": {
                                "setup_code": {
                                    "type": "string"
                                },
                                "filename_code": {
                                    "type": "string"
                                },
                                "executable": {
                                    "type": "string",
                                    "enum": ["yes", "no"]
                                }
                            }
                        },
                        "dest_path": {
                            "type": "string"
                        },
                        "when": {
                            "type": "string"
                        }
                    }
                }
            },
            "anti-bloat": {
                "type": "array",
                "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "description": {
                            "type": "string"
                        },
                        "context": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "module_code": {
                            "type": "string"
                        },
                        "replacements_plain": {
                            "type": "object",
                            "additionalProperties": {
                                 "type": "string"
                            }
                        },
                        "replacements_re": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                           }
                       },
                        "replacements": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                           }
                       },
                        "change_function": {
                            "type": "object"
                        },
                        "append_result": {
                            "type": "string"
                        },
                        "append_plain": {
                            "type": "string"
                        },
                        "no-follow": {
                            "type": "object"
                        },
                        "no-auto-follow": {
                            "type": "object"
                        },
                        "bloat-mode-overrides": {
                            "type": "object"
                        },
                        "when": {
                            "type": "string"
                        }
                    }
                }
            },
            "implicit-imports": {
                "type": "array",
                "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "depends": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "pre-import-code": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "post-import-code": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "when": {
                            "type": "string"
                        }
                    }
                }
            },
            "options": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                    "checks": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "additionalProperties": false,
                            "properties": {
                                "description": {
                                    "type": "string"
                                },
                                "console": {
                                    "type": "string",
                                    "enum": ["yes", "no", "recommend"]
                                },
                                "macos_bundle": {
                                    "type": "string",
                                    "enum": ["yes", "no", "recommend"]
                                },
                                "macos_bundle_as_onefile": {
                                    "type": "string",
                                    "enum": ["yes", "no"]
                                },
                                "support_info": {
                                    "type": "string",
                                    "enum": ["error", "warning", "info", "parameter"]
                                },
                                "when": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            },
            "import-hacks": {
                "type": "array",
                "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                        "overridden-environment-variables": {
                            "type": "object",
                            "additionalProperties": {
                                 "type": "string"
                            }
                        },
                        "force-environment-variables": {
                            "type": "object",
                            "additionalProperties": {
                                 "type": "string"
                            }
                        },
                        "package-paths": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "package-dirs": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "find-dlls-near-module": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "acceptable-missing-dlls": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "global-sys-path": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "package-system-dlls": {
                            "type": "string",
                            "enum": ["yes", "no"]
                        },
                        "when": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    }
}
