Details
-
Task
-
Status: Closed
-
Major
-
Resolution: Duplicate
-
0.13
-
None
Description
Following the discussion in
it would be great if "https://" is supported in Apache licence. Currently the license with modified link is not detected properly.
How to reproduce
- Checkout apache airflow https://github.com/apache/airflow/
- Modify airflow/templates.py and change http:// in license into https://
- Run java -jar apache-rat-0.13.jar -E .rat-excludes -d .
- Observe error produced:
Printing headers for text files without a valid license header...=====================================================
== File: ./airflow/templates.py
=====================================================
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.import jinja2.nativetypes
import jinja2.sandbox
class _AirflowEnvironmentMixin:
def _init_(self, **kwargs):
super()._init_(**kwargs) self.filters.update(FILTERS) def is_safe_attribute(self, obj, attr, value):
"""
Allow access to ```` prefix vars (but not ``_``). Unlike the stock SandboxedEnvironment, we allow access to "private" attributes (ones starting with
````) whilst still blocking internal or truly private attributes (``_`` prefixed ones).
"""
return not jinja2.sandbox.is_internal_attribute(obj, attr)
class NativeEnvironment(_AirflowEnvironmentMixin, jinja2.nativetypes.NativeEnvironment):
"""NativeEnvironment for Airflow task templates."""
class SandboxedEnvironment(_AirflowEnvironmentMixin, jinja2.sandbox.SandboxedEnvironment):
"""SandboxedEnvironment for Airflow task templates."""
def ds_filter(value):
return value.strftime('%Y-%m-%d')