{"record":{"id":"8c4933ba20584265","repo":"kestra-io/kestra","slug":"the-ispublicholiday-function-expects-a-countr","errorCode":null,"errorMessage":"The 'isPublicHoliday()' function expects a 'countryCode' argument.","messagePattern":"The 'isPublicHoliday\\(\\)' function expects a 'countryCode' argument\\.","errorType":"validation","errorClass":"PebbleException","httpStatus":null,"severity":"critical","filePath":"core/src/main/java/io/kestra/core/runners/pebble/functions/IsPublicHolidayFunction.java","lineNumber":49,"sourceCode":" *\n * @param date any valid ISO 8601 date or datetime string\n * @param countryCode ISO 3166-1 alpha-2 country code (e.g. {@code \"FR\"})\n * @param subDivision optional ISO 3166-2 sub-division code (e.g. {@code \"IDF\"})\n */\npublic class IsPublicHolidayFunction implements KestraFunction {\n    public static final String NAME = \"isPublicHoliday\";\n\n    @Override\n    public Object execute(Map<String, Object> args, PebbleTemplate self, EvaluationContext context, int lineNumber) {\n        Object dateArg = args.get(\"date\");\n        Object countryCodeArg = args.get(\"countryCode\");\n        Object subDivisionArg = args.get(\"subDivision\");\n\n        if (dateArg == null) {\n            throw new PebbleException(null, \"The 'isPublicHoliday()' function expects a 'date' argument.\", lineNumber, self.getName());\n        }\n        if (countryCodeArg == null) {\n            throw new PebbleException(null, \"The 'isPublicHoliday()' function expects a 'countryCode' argument.\", lineNumber, self.getName());\n        }\n\n        String countryCode = countryCodeArg.toString();\n        String subDivision = subDivisionArg != null && !subDivisionArg.toString().isBlank()\n            ? subDivisionArg.toString()\n            : null;\n\n        LocalDate localDate;\n        try {\n            localDate = DateUtils.parseLocalDate(dateArg.toString());\n        } catch (InternalException e) {\n            throw new PebbleException(e, \"The 'isPublicHoliday()' function could not parse 'date': \" + e.getMessage(), lineNumber, self.getName());\n        }\n\n        HolidayManager holidayManager = HolidayManager.getInstance(ManagerParameters.create(countryCode));\n\n        return subDivision == null\n            ? holidayManager.isHoliday(localDate)","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/kestra-io/kestra/blob/823fada9274c4f9c251ea0a516460a4f7d958032/core/src/main/java/io/kestra/core/runners/pebble/functions/IsPublicHolidayFunction.java#L31-L67","documentation":"The isPublicHoliday() function requires a 'countryCode' argument (ISO 3166-1 alpha-2); there is no locale-based fallback. This fires when countryCode is null or missing.","triggerScenarios":"Calling isPublicHoliday(date='2024-07-14') without a countryCode.","commonSituations":"Assuming the country is inferred from the system locale or from the date.","solutions":["Pass an ISO 3166-1 alpha-2 country code, e.g. isPublicHoliday(date='2024-07-14', countryCode='FR').","Optionally add a subDivision (ISO 3166-2) for regional holidays."],"exampleFix":"// before\n{{ isPublicHoliday(date='2024-07-14') }}\n// after\n{{ isPublicHoliday(date='2024-07-14', countryCode='FR') }}","handlingStrategy":"validation","validationCode":"{% if myCountry is not empty %}{{ isPublicHoliday(date=myDate, countryCode=myCountry) }}{% endif %}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pass an ISO 3166-1 alpha-2 countryCode; there is no locale fallback.","Guard templated countryCode values with 'is not empty' before calling.","Use a subDivision (ISO 3166-2) only when you need regional holidays."],"tags":["pebble","date","holiday","jollyday","required-arg"],"backgroundTag":null,"analyzedSha":"823fada9274c4f9c251ea0a516460a4f7d958032","analyzedAt":"2026-08-14T06:15:17.947Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}