You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by qu...@apache.org on 2022/02/22 23:39:26 UTC

[arrow-julia] branch main updated: Introduce Release audit tool (Rat) (#289)

This is an automated email from the ASF dual-hosted git repository.

quinnj pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-julia.git


The following commit(s) were added to refs/heads/main by this push:
     new 84b959f  Introduce Release audit tool (Rat) (#289)
84b959f is described below

commit 84b959f4abf37b2b2d5ede14b1aab9102db6f39d
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Wed Feb 23 08:39:22 2022 +0900

    Introduce Release audit tool (Rat) (#289)
    
    fix #286
    
    * dev/release/: Add scripts for Rat related
    * *: Add missing license header
    * scripts/update_apache_arrow_code.jl: Remove because it's no longer needed
    
    Add a CI job that audits licenses.
---
 .github/workflows/ci.yml            | 10 +++++++
 .gitignore                          | 17 +++++++++++
 Project.toml                        | 17 +++++++++++
 README.md                           | 19 ++++++++++++
 codecov.yaml                        | 17 +++++++++++
 dev/release/.dir-locals.el          | 19 ++++++++++++
 dev/release/.gitignore              | 20 +++++++++++++
 dev/release/check_rat_report.py     | 59 +++++++++++++++++++++++++++++++++++++
 dev/release/rat_exclude_files.txt   | 22 ++++++++++++++
 dev/release/run_rat.sh              | 50 +++++++++++++++++++++++++++++++
 docs/.gitignore                     | 17 +++++++++++
 docs/Project.toml                   | 17 +++++++++++
 docs/make.jl                        | 17 +++++++++++
 docs/src/index.md                   | 21 ++++++++++++-
 docs/src/manual.md                  | 19 ++++++++++++
 docs/src/reference.md               | 21 ++++++++++++-
 scripts/update_apache_arrow_code.jl | 58 ------------------------------------
 src/ArrowTypes/Project.toml         | 17 +++++++++++
 src/ArrowTypes/test/runtests.jl     | 17 +++++++++++
 src/ArrowTypes/test/tests.jl        | 17 +++++++++++
 src/append.jl                       | 19 +++++++++++-
 src/show.jl                         | 17 +++++++++++
 test/arrowjson/datetime.json        |  2 +-
 test/testappend.jl                  | 19 +++++++++++-
 24 files changed, 465 insertions(+), 63 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4dfd50a..639cf59 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -5,6 +5,16 @@ on:
     branches: [main]
     tags: ['*']
 jobs:
+  rat:
+    name: Audit licenses
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      - uses: actions/setup-python@v2
+        with:
+          python-version: '3.x'
+      - name: Run Release audit tool (Rat)
+        run: dev/release/run_rat.sh .
   test:
     name: ${{ matrix.pkg.name }} - Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
     runs-on: ${{ matrix.os }}
diff --git a/.gitignore b/.gitignore
index c841c99..6027399 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 Manifest.toml
 .DS_STORE
 *.jl.cov
diff --git a/Project.toml b/Project.toml
index 36f79ef..9274741 100644
--- a/Project.toml
+++ b/Project.toml
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 name = "Arrow"
 uuid = "69666777-d1a9-59fb-9406-91d4454c9d45"
 authors = ["quinnj <qu...@gmail.com>"]
diff --git a/README.md b/README.md
index 40a2f50..8dee78a 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,22 @@
+<!---
+  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
+
+    http://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.
+-->
+
 # Arrow
 
 [![docs](https://img.shields.io/badge/docs-latest-blue&logo=julia)](https://arrow.juliadata.org/dev/)
diff --git a/codecov.yaml b/codecov.yaml
index 43a7d70..a7b3fb5 100644
--- a/codecov.yaml
+++ b/codecov.yaml
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 ---
 codecov:
   notify:
diff --git a/dev/release/.dir-locals.el b/dev/release/.dir-locals.el
new file mode 100644
index 0000000..7fe05a8
--- /dev/null
+++ b/dev/release/.dir-locals.el
@@ -0,0 +1,19 @@
+;;; 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
+;;;
+;;;   http://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.
+
+((sh-mode . ((indent-tabs-mode . nil)
+             (sh-basic-offset  . 2))))
diff --git a/dev/release/.gitignore b/dev/release/.gitignore
new file mode 100644
index 0000000..2f6b73b
--- /dev/null
+++ b/dev/release/.gitignore
@@ -0,0 +1,20 @@
+# 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
+#
+#   http://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.
+
+/apache-rat-*.jar
+/filtered_rat.txt
+/rat.xml
diff --git a/dev/release/check_rat_report.py b/dev/release/check_rat_report.py
new file mode 100755
index 0000000..c45baa0
--- /dev/null
+++ b/dev/release/check_rat_report.py
@@ -0,0 +1,59 @@
+#!/usr/bin/env python3
+#
+# 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
+#
+#   http://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 fnmatch
+import re
+import sys
+import xml.etree.ElementTree as ET
+
+if len(sys.argv) != 3:
+    sys.stderr.write("Usage: %s exclude_globs.lst rat_report.xml\n" %
+                     sys.argv[0])
+    sys.exit(1)
+
+exclude_globs_filename = sys.argv[1]
+xml_filename = sys.argv[2]
+
+globs = [line.strip() for line in open(exclude_globs_filename, "r")]
+
+tree = ET.parse(xml_filename)
+root = tree.getroot()
+resources = root.findall('resource')
+
+all_ok = True
+for r in resources:
+    approvals = r.findall('license-approval')
+    if not approvals or approvals[0].attrib['name'] == 'true':
+        continue
+    clean_name = re.sub('^[^/]+/', '', r.attrib['name'])
+    excluded = False
+    for g in globs:
+        if fnmatch.fnmatch(clean_name, g):
+            excluded = True
+            break
+    if not excluded:
+        sys.stdout.write("NOT APPROVED: %s (%s): %s\n" % (
+            clean_name, r.attrib['name'], approvals[0].attrib['name']))
+        all_ok = False
+
+if not all_ok:
+    sys.exit(1)
+
+print('OK')
+sys.exit(0)
diff --git a/dev/release/rat_exclude_files.txt b/dev/release/rat_exclude_files.txt
new file mode 100644
index 0000000..6e32d07
--- /dev/null
+++ b/dev/release/rat_exclude_files.txt
@@ -0,0 +1,22 @@
+# 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
+#
+#   http://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.
+
+Manifest.toml
+dev/release/apache-rat-*.jar
+dev/release/filtered_rat.txt
+dev/release/rat.xml
+test/arrowjson/*.json
diff --git a/dev/release/run_rat.sh b/dev/release/run_rat.sh
new file mode 100755
index 0000000..5cb6b91
--- /dev/null
+++ b/dev/release/run_rat.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# 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
+#
+#   http://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.
+
+set -eu
+
+RELEASE_DIR=$(cd "$(dirname "$BASH_SOURCE")"; pwd)
+
+RAT_VERSION=0.13
+
+RAT_JAR="${RELEASE_DIR}/apache-rat-${RAT_VERSION}.jar"
+if [ ! -f "${RAT_JAR}" ]; then
+  curl \
+    --fail \
+    --output "${RAT_JAR}" \
+    --silent \
+    https://repo1.maven.org/maven2/org/apache/rat/apache-rat/${RAT_VERSION}/apache-rat-${RAT_VERSION}.jar
+fi
+
+RAT="java -jar ${RAT_JAR} -x "
+RAT_XML="${RELEASE_DIR}/rat.xml"
+$RAT $1 > "${RAT_XML}"
+FILTERED_RAT_TXT="${RELEASE_DIR}/filtered_rat.txt"
+if ${PYTHON:-python3} \
+     "${RELEASE_DIR}/check_rat_report.py" \
+     "${RELEASE_DIR}/rat_exclude_files.txt" \
+     "${RAT_XML}" > \
+     "${FILTERED_RAT_TXT}"; then
+  echo "No unapproved licenses"
+else
+  cat "${FILTERED_RAT_TXT}"
+  N_UNAPPROVED=$(grep "NOT APPROVED" "${FILTERED_RAT_TXT}" | wc -l)
+  echo "${N_UNAPPROVED} unapproved licenses. Check Rat report: ${RAT_XML}"
+  exit 1
+fi
diff --git a/docs/.gitignore b/docs/.gitignore
index a303fff..8f413cd 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -1,2 +1,19 @@
+# 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
+#
+#   http://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.
+
 build/
 site/
diff --git a/docs/Project.toml b/docs/Project.toml
index 623cab2..246ba9d 100644
--- a/docs/Project.toml
+++ b/docs/Project.toml
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 [deps]
 Arrow = "69666777-d1a9-59fb-9406-91d4454c9d45"
 Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
diff --git a/docs/make.jl b/docs/make.jl
index 8ee7425..56ef8b9 100644
--- a/docs/make.jl
+++ b/docs/make.jl
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 using Documenter
 using Arrow
 
diff --git a/docs/src/index.md b/docs/src/index.md
index ee4d141..1d5119c 100644
--- a/docs/src/index.md
+++ b/docs/src/index.md
@@ -1,3 +1,22 @@
+<!---
+  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
+
+    http://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.
+-->
+
 # Arrow.jl
 
 ```@contents
@@ -7,4 +26,4 @@ Depth = 3
 
 ```@docs
 Arrow
-```
\ No newline at end of file
+```
diff --git a/docs/src/manual.md b/docs/src/manual.md
index 5c5ce49..9db4403 100644
--- a/docs/src/manual.md
+++ b/docs/src/manual.md
@@ -1,3 +1,22 @@
+<!---
+  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
+
+    http://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.
+-->
+
 # User Manual
 
 The goal of this documentation is to provide a brief introduction to the arrow data format, then provide a walk-through of the functionality provided in the Arrow.jl Julia package, with an aim to expose a little of the machinery "under the hood" to help explain how things work and how that influences real-world use-cases for the arrow data format.
diff --git a/docs/src/reference.md b/docs/src/reference.md
index 9130082..9e395e4 100644
--- a/docs/src/reference.md
+++ b/docs/src/reference.md
@@ -1,6 +1,25 @@
+<!---
+  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
+
+    http://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.
+-->
+
 # API Reference
 
 ```@autodocs
 Modules = [Arrow]
 Order   = [:type, :function]
-```
\ No newline at end of file
+```
diff --git a/scripts/update_apache_arrow_code.jl b/scripts/update_apache_arrow_code.jl
deleted file mode 100644
index af59c80..0000000
--- a/scripts/update_apache_arrow_code.jl
+++ /dev/null
@@ -1,58 +0,0 @@
-
-files = [
-    "Arrow/docs/src/index.md",
-    "Arrow/docs/src/manual.md",
-    "Arrow/docs/src/reference.md",
-    "Arrow/docs/make.jl",
-    "Arrow/docs/Project.toml",
-    "Arrow/src/arraytypes/arraytypes.jl",
-    "Arrow/src/arraytypes/bool.jl",
-    "Arrow/src/arraytypes/compressed.jl",
-    "Arrow/src/arraytypes/dictencoding.jl",
-    "Arrow/src/arraytypes/fixedsizelist.jl",
-    "Arrow/src/arraytypes/list.jl",
-    "Arrow/src/arraytypes/map.jl",
-    "Arrow/src/arraytypes/primitive.jl",
-    "Arrow/src/arraytypes/struct.jl",
-    "Arrow/src/arraytypes/unions.jl",
-    "Arrow/src/FlatBuffers/builder.jl",
-    "Arrow/src/FlatBuffers/builder.jl",
-    "Arrow/src/FlatBuffers/FlatBuffers.jl",
-    "Arrow/src/FlatBuffers/table.jl",
-    "Arrow/src/metadata/File.jl",
-    "Arrow/src/metadata/Flatbuf.jl",
-    "Arrow/src/metadata/Message.jl",
-    "Arrow/src/metadata/Schema.jl",
-    "Arrow/src/Arrow.jl",
-    "Arrow/src/arrowtypes.jl",
-    "Arrow/src/eltypes.jl",
-    "Arrow/src/table.jl",
-    "Arrow/src/utils.jl",
-    "Arrow/src/write.jl",
-    "Arrow/test/arrowjson/datetime.json",
-    "Arrow/test/arrowjson/decimal.json",
-    "Arrow/test/arrowjson/dictionary_unsigned.json",
-    "Arrow/test/arrowjson/dictionary.json",
-    "Arrow/test/arrowjson/map.json",
-    "Arrow/test/arrowjson/nested.json",
-    "Arrow/test/arrowjson/primitive_no_batches.json",
-    "Arrow/test/arrowjson/primitive-empty.json",
-    "Arrow/test/arrowjson/primitive.json",
-    "Arrow/test/arrowjson.jl",
-    "Arrow/test/dates.jl",
-    "Arrow/test/integrationtest.jl",
-    "Arrow/test/pyarrow_roundtrip.jl",
-    "Arrow/test/runtests.jl",
-    "Arrow/test/testtables.jl",
-    "Arrow/.gitignore",
-    "Arrow/LICENSE.md",
-    "Arrow/Project.toml",
-    # "Arrow/README.md", READMEs are slightly different between officially apache/arrow julia code and JuliaData/Arrow.jl
-]
-
-sourcedir = "/Users/jacobquinn/.julia/dev/"
-destdir = "/Users/jacobquinn/arrow/julia/"
-
-for file in files
-    cp(joinpath(sourcedir, file), joinpath(destdir, file); force=true)
-end
\ No newline at end of file
diff --git a/src/ArrowTypes/Project.toml b/src/ArrowTypes/Project.toml
index 96012d8..deb1b36 100644
--- a/src/ArrowTypes/Project.toml
+++ b/src/ArrowTypes/Project.toml
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 name = "ArrowTypes"
 uuid = "31f734f8-188a-4ce0-8406-c8a06bd891cd"
 authors = ["quinnj <qu...@gmail.com>"]
diff --git a/src/ArrowTypes/test/runtests.jl b/src/ArrowTypes/test/runtests.jl
index 83ff6be..7c9ab35 100644
--- a/src/ArrowTypes/test/runtests.jl
+++ b/src/ArrowTypes/test/runtests.jl
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 using Test, ArrowTypes, UUIDs
 
 include("tests.jl")
diff --git a/src/ArrowTypes/test/tests.jl b/src/ArrowTypes/test/tests.jl
index 6d3b3d6..eeeb2e2 100644
--- a/src/ArrowTypes/test/tests.jl
+++ b/src/ArrowTypes/test/tests.jl
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 primitive type MyInt 32 end
 
 struct Person
diff --git a/src/append.jl b/src/append.jl
index 8fc24dd..1d1d8ef 100644
--- a/src/append.jl
+++ b/src/append.jl
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 """
     Arrow.append(io::IO, tbl)
     Arrow.append(file::String, tbl)
@@ -166,4 +183,4 @@ function is_equivalent_schema(sch1::Tables.Schema, sch2::Tables.Schema)
         (t1 === t2) || (return false)
     end
     true
-end
\ No newline at end of file
+end
diff --git a/src/show.jl b/src/show.jl
index 9839599..2aea3a5 100644
--- a/src/show.jl
+++ b/src/show.jl
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 # 2-arg show: show schema and list # of metadata entries if non-zero
 function Base.show(io::IO, table::Table)
     ncols = length(Tables.columnnames(table))
diff --git a/test/arrowjson/datetime.json b/test/arrowjson/datetime.json
index 35eace4..f690783 100644
--- a/test/arrowjson/datetime.json
+++ b/test/arrowjson/datetime.json
@@ -908,4 +908,4 @@
       ]
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/test/testappend.jl b/test/testappend.jl
index f3de532..0b43784 100644
--- a/test/testappend.jl
+++ b/test/testappend.jl
@@ -1,3 +1,20 @@
+# 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
+#
+#   http://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.
+
 function testappend(nm, t, writekw, readkw, extratests)
     println("testing append: $nm")
     io = Arrow.tobuffer(t; writekw...)
@@ -122,4 +139,4 @@ function testappend_partitions()
         @test length(Tables.columns(arrow_table2)[1]) == 30
         @test length(collect(Tables.partitions(Arrow.Stream(file1)))) == 2 * length(collect(Tables.partitions(Arrow.Stream(file2))))
     end
-end
\ No newline at end of file
+end