home / content / repos

repos: 291339086

This data as json

id node_id name full_name private owner html_url description fork created_at updated_at pushed_at homepage size stargazers_count watchers_count language has_issues has_projects has_downloads has_wiki has_pages forks_count archived disabled open_issues_count license topics forks open_issues watchers default_branch permissions temp_clone_token organization network_count subscribers_count readme readme_html allow_forking visibility is_template template_repository web_commit_signoff_required has_discussions
291339086 MDEwOlJlcG9zaXRvcnkyOTEzMzkwODY= airtable-export simonw/airtable-export 0 9599 https://github.com/simonw/airtable-export Export Airtable data to YAML, JSON or SQLite files on disk 0 2020-08-29T19:51:37Z 2021-06-08T17:30:30Z 2021-04-09T23:41:52Z https://datasette.io/tools/airtable-export 41 33 33 Python 1 1 1 1 0 5 0 0 6 apache-2.0 ["yaml", "airtable", "airtable-api", "datasette-io", "datasette-tool"] 5 6 33 main {"admin": false, "push": false, "pull": false}     5 3 # airtable-export [![PyPI](https://img.shields.io/pypi/v/airtable-export.svg)](https://pypi.org/project/airtable-export/) [![Changelog](https://img.shields.io/github/v/release/simonw/airtable-export?include_prereleases&label=changelog)](https://github.com/simonw/airtable-export/releases) [![Tests](https://github.com/simonw/airtable-export/workflows/Test/badge.svg)](https://github.com/simonw/airtable-export/actions?query=workflow%3ATest) [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/airtable-export/blob/master/LICENSE) Export Airtable data to files on disk ## Installation Install this tool using `pip`: $ pip install airtable-export ## Usage You will need to know the following information: - Your Airtable base ID - this is a string starting with `app...` - Your Airtable API key - this is a string starting with `key...` - The names of each of the tables that you wish to export You can export all of your data to a folder called `export/` by running the following: airtable-export export base_id table1 table2 --key=key This example would create two files: `export/table1.yml` and `export/table2.yml`. Rather than passing the API key using the `--key` option you can set it as an environment variable called `AIRTABLE_KEY`. ## Export options By default the tool exports your data as YAML. You can also export as JSON or as [newline delimited JSON](http://ndjson.org/) using the `--json` or `--ndjson` options: airtable-export export base_id table1 table2 --key=key --ndjson You can pass multiple format options at once. This command will create a `.json`, `.yml` and `.ndjson` file for each exported table: airtable-export export base_id table1 table2 \ --key=key --ndjson --yaml --json ### SQLite database export You can export tables to a SQLite database file using the `--sqlite database.db` option: airtable-export export base_id table1 table2 \ --key=key --sqlite database.db This can be combined with other format options. If you only specify `--sqlite` the export directory argument will be ignored. The SQLite database will have a table created for each table you export. Those tables will have a primary key column called `airtable_id`. If you run this command against an existing SQLite database records with matching primary keys will be over-written by new records from the export. ## Request options By default the tool uses [python-httpx](https://www.python-httpx.org)'s default configurations. You can override the `user-agent` using the `--user-agent` option: airtable-export export base_id table1 table2 --key=key --user-agent "Airtable Export Robot" You can override the [timeout during a network read operation](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) using the `--http-read-timeout` option. If not set, this defaults to 5s. airtable-export export base_id table1 table2 --key=key --http-read-timeout 60 ## Running this using GitHub Actions [GitHub Actions](https://github.com/features/actions) is GitHub's workflow automation product. You can use it to run `airtable-export` in order to back up your Airtable data to a GitHub repository. Doing this gives you a visible commit history of changes you make to your Airtable data - like [this one](https://github.com/natbat/rockybeaches/commits/main/airtable). To run this for your own Airtable database you'll first need to add the following secrets to your GitHub repository: <dl> <dt>AIRTABLE_BASE_ID</dt> <dd>The base ID, a string beginning `app...`</dd> <dt>AIRTABLE_KEY</dt> <dd>Your Airtable API key</dd> <dt>AIRTABLE_TABLES</dt> <dd>A space separated list of the Airtable tables that you want to backup. If any of these contain spaces you will need to enclose them in single quotes, e.g. <samp>'My table with spaces in the name' OtherTableWithNoSpaces</samp></dd> </dl> Once you have set those secrets, add the following as a file called `.github/workflows/backup-airtable.yml`: ```yaml name: Backup Airtable on: workflow_dispatch: schedule: - cron: '32 0 * * *' jobs: build: runs-on: ubuntu-latest steps: - name: Check out repo uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.8 - uses: actions/cache@v2 name: Configure pip caching with: path: ~/.cache/pip key: ${{ runner.os }}-pip- restore-keys: | ${{ runner.os }}-pip- - name: Install airtable-export run: | pip install airtable-export - name: Backup Airtable to backups/ env: AIRTABLE_BASE_ID: ${{ secrets.AIRTABLE_BASE_ID }} AIRTABLE_KEY: ${{ secrets.AIRTABLE_KEY }} AIRTABLE_TABLES: ${{ secrets.AIRTABLE_TABLES }} run: |- airtable-export backups $AIRTABLE_BASE_ID $AIRTABLE_TABLES -v - name: Commit and push if it changed run: |- git config user.name "Automated" git config user.email "actions@users.noreply.github.com" git add -A timestamp=$(date -u) git commit -m "Latest data: ${timestamp}" || exit 0 git push ``` This will run once a day (at 32 minutes past midnight UTC) and will also run if you manually click the "Run workflow" button, see [GitHub Actions: Manual triggers with workflow_dispatch](https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/). ## Development To contribute to this tool, first checkout the code. Then create a new virtual environment: cd airtable-export python -mvenv venv source venv/bin/activate Or if you are using `pipenv`: pipenv shell Now install the dependencies and tests: pip install -e '.[test]' To run the tests: pytest <div id="readme" class="md" data-path="README.md"><article class="markdown-body entry-content container-lg" itemprop="text"><h1><a id="user-content-airtable-export" class="anchor" aria-hidden="true" href="#user-content-airtable-export"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>airtable-export</h1> <p><a href="https://pypi.org/project/airtable-export/" rel="nofollow"><img src="https://camo.githubusercontent.com/2635595699cd87784148506d703996615d75d6e8d6d0eba3928a886a5ebac963/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f6169727461626c652d6578706f72742e737667" alt="PyPI" data-canonical-src="https://img.shields.io/pypi/v/airtable-export.svg" style="max-width:100%;"></a> <a href="https://github.com/simonw/airtable-export/releases"><img src="https://camo.githubusercontent.com/361aa58985cc1f5841b899de85bedd6e7ced2a253334b4dc390bd1762b2f8be5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f73696d6f6e772f6169727461626c652d6578706f72743f696e636c7564655f70726572656c6561736573266c6162656c3d6368616e67656c6f67" alt="Changelog" data-canonical-src="https://img.shields.io/github/v/release/simonw/airtable-export?include_prereleases&amp;label=changelog" style="max-width:100%;"></a> <a href="https://github.com/simonw/airtable-export/actions?query=workflow%3ATest"><img src="https://github.com/simonw/airtable-export/workflows/Test/badge.svg" alt="Tests" style="max-width:100%;"></a> <a href="https://github.com/simonw/airtable-export/blob/master/LICENSE"><img src="https://camo.githubusercontent.com/1698104e976c681143eb0841f9675c6f802bb7aa832afc0c7a4e719b1f3cf955/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865253230322e302d626c75652e737667" alt="License" data-canonical-src="https://img.shields.io/badge/license-Apache%202.0-blue.svg" style="max-width:100%;"></a></p> <p>Export Airtable data to files on disk</p> <h2><a id="user-content-installation" class="anchor" aria-hidden="true" href="#user-content-installation"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Installation</h2> <p>Install this tool using <code>pip</code>:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="$ pip install airtable-export "><pre><code>$ pip install airtable-export </code></pre></div> <h2><a id="user-content-usage" class="anchor" aria-hidden="true" href="#user-content-usage"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Usage</h2> <p>You will need to know the following information:</p> <ul> <li>Your Airtable base ID - this is a string starting with <code>app...</code></li> <li>Your Airtable API key - this is a string starting with <code>key...</code></li> <li>The names of each of the tables that you wish to export</li> </ul> <p>You can export all of your data to a folder called <code>export/</code> by running the following:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="airtable-export export base_id table1 table2 --key=key "><pre><code>airtable-export export base_id table1 table2 --key=key </code></pre></div> <p>This example would create two files: <code>export/table1.yml</code> and <code>export/table2.yml</code>.</p> <p>Rather than passing the API key using the <code>--key</code> option you can set it as an environment variable called <code>AIRTABLE_KEY</code>.</p> <h2><a id="user-content-export-options" class="anchor" aria-hidden="true" href="#user-content-export-options"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Export options</h2> <p>By default the tool exports your data as YAML.</p> <p>You can also export as JSON or as <a href="http://ndjson.org/" rel="nofollow">newline delimited JSON</a> using the <code>--json</code> or <code>--ndjson</code> options:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="airtable-export export base_id table1 table2 --key=key --ndjson "><pre><code>airtable-export export base_id table1 table2 --key=key --ndjson </code></pre></div> <p>You can pass multiple format options at once. This command will create a <code>.json</code>, <code>.yml</code> and <code>.ndjson</code> file for each exported table:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="airtable-export export base_id table1 table2 \ --key=key --ndjson --yaml --json "><pre><code>airtable-export export base_id table1 table2 \ --key=key --ndjson --yaml --json </code></pre></div> <h3><a id="user-content-sqlite-database-export" class="anchor" aria-hidden="true" href="#user-content-sqlite-database-export"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>SQLite database export</h3> <p>You can export tables to a SQLite database file using the <code>--sqlite database.db</code> option:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="airtable-export export base_id table1 table2 \ --key=key --sqlite database.db "><pre><code>airtable-export export base_id table1 table2 \ --key=key --sqlite database.db </code></pre></div> <p>This can be combined with other format options. If you only specify <code>--sqlite</code> the export directory argument will be ignored.</p> <p>The SQLite database will have a table created for each table you export. Those tables will have a primary key column called <code>airtable_id</code>.</p> <p>If you run this command against an existing SQLite database records with matching primary keys will be over-written by new records from the export.</p> <h2><a id="user-content-request-options" class="anchor" aria-hidden="true" href="#user-content-request-options"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Request options</h2> <p>By default the tool uses <a href="https://www.python-httpx.org" rel="nofollow">python-httpx</a>'s default configurations.</p> <p>You can override the <code>user-agent</code> using the <code>--user-agent</code> option:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="airtable-export export base_id table1 table2 --key=key --user-agent &quot;Airtable Export Robot&quot; "><pre><code>airtable-export export base_id table1 table2 --key=key --user-agent "Airtable Export Robot" </code></pre></div> <p>You can override the <a href="https://www.python-httpx.org/advanced/#fine-tuning-the-configuration" rel="nofollow">timeout during a network read operation</a> using the <code>--http-read-timeout</code> option. If not set, this defaults to 5s.</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="airtable-export export base_id table1 table2 --key=key --http-read-timeout 60 "><pre><code>airtable-export export base_id table1 table2 --key=key --http-read-timeout 60 </code></pre></div> <h2><a id="user-content-running-this-using-github-actions" class="anchor" aria-hidden="true" href="#user-content-running-this-using-github-actions"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Running this using GitHub Actions</h2> <p><a href="https://github.com/features/actions">GitHub Actions</a> is GitHub's workflow automation product. You can use it to run <code>airtable-export</code> in order to back up your Airtable data to a GitHub repository. Doing this gives you a visible commit history of changes you make to your Airtable data - like <a href="https://github.com/natbat/rockybeaches/commits/main/airtable">this one</a>.</p> <p>To run this for your own Airtable database you'll first need to add the following secrets to your GitHub repository:</p> <dl> <dt>AIRTABLE_BASE_ID</dt> <dd>The base ID, a string beginning `app...`</dd> <dt>AIRTABLE_KEY</dt> <dd>Your Airtable API key</dd> <dt>AIRTABLE_TABLES</dt> <dd>A space separated list of the Airtable tables that you want to backup. If any of these contain spaces you will need to enclose them in single quotes, e.g. <samp>'My table with spaces in the name' OtherTableWithNoSpaces</samp></dd> </dl> <p>Once you have set those secrets, add the following as a file called <code>.github/workflows/backup-airtable.yml</code>:</p> <div class="highlight highlight-source-yaml position-relative" data-snippet-clipboard-copy-content="name: Backup Airtable on: workflow_dispatch: schedule: - cron: '32 0 * * *' jobs: build: runs-on: ubuntu-latest steps: - name: Check out repo uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: 3.8 - uses: actions/cache@v2 name: Configure pip caching with: path: ~/.cache/pip key: ${{ runner.os }}-pip- restore-keys: | ${{ runner.os }}-pip- - name: Install airtable-export run: | pip install airtable-export - name: Backup Airtable to backups/ env: AIRTABLE_BASE_ID: ${{ secrets.AIRTABLE_BASE_ID }} AIRTABLE_KEY: ${{ secrets.AIRTABLE_KEY }} AIRTABLE_TABLES: ${{ secrets.AIRTABLE_TABLES }} run: |- airtable-export backups $AIRTABLE_BASE_ID $AIRTABLE_TABLES -v - name: Commit and push if it changed run: |- git config user.name &quot;Automated&quot; git config user.email &quot;actions@users.noreply.github.com&quot; git add -A timestamp=$(date -u) git commit -m &quot;Latest data: ${timestamp}&quot; || exit 0 git push "><pre><span class="pl-ent">name</span>: <span class="pl-s">Backup Airtable</span> <span class="pl-ent">on</span>: <span class="pl-ent">workflow_dispatch</span>: <span class="pl-ent">schedule</span>: - <span class="pl-ent">cron</span>: <span class="pl-s"><span class="pl-pds">'</span>32 0 * * *<span class="pl-pds">'</span></span> <span class="pl-ent">jobs</span>: <span class="pl-ent">build</span>: <span class="pl-ent">runs-on</span>: <span class="pl-s">ubuntu-latest</span> <span class="pl-ent">steps</span>: - <span class="pl-ent">name</span>: <span class="pl-s">Check out repo</span> <span class="pl-ent">uses</span>: <span class="pl-s">actions/checkout@v2</span> - <span class="pl-ent">name</span>: <span class="pl-s">Set up Python</span> <span class="pl-ent">uses</span>: <span class="pl-s">actions/setup-python@v2</span> <span class="pl-ent">with</span>: <span class="pl-ent">python-version</span>: <span class="pl-c1">3.8</span> - <span class="pl-ent">uses</span>: <span class="pl-s">actions/cache@v2</span> <span class="pl-ent">name</span>: <span class="pl-s">Configure pip caching</span> <span class="pl-ent">with</span>: <span class="pl-ent">path</span>: <span class="pl-s">~/.cache/pip</span> <span class="pl-ent">key</span>: <span class="pl-s">${{ runner.os }}-pip-</span> <span class="pl-ent">restore-keys</span>: <span class="pl-s">|</span> <span class="pl-s"> ${{ runner.os }}-pip-</span> <span class="pl-s"></span> - <span class="pl-ent">name</span>: <span class="pl-s">Install airtable-export</span> <span class="pl-ent">run</span>: <span class="pl-s">|</span> <span class="pl-s"> pip install airtable-export</span> <span class="pl-s"></span> - <span class="pl-ent">name</span>: <span class="pl-s">Backup Airtable to backups/</span> <span class="pl-ent">env</span>: <span class="pl-ent">AIRTABLE_BASE_ID</span>: <span class="pl-s">${{ secrets.AIRTABLE_BASE_ID }}</span> <span class="pl-ent">AIRTABLE_KEY</span>: <span class="pl-s">${{ secrets.AIRTABLE_KEY }}</span> <span class="pl-ent">AIRTABLE_TABLES</span>: <span class="pl-s">${{ secrets.AIRTABLE_TABLES }}</span> <span class="pl-ent">run</span>: <span class="pl-s">|-</span> <span class="pl-s"> airtable-export backups $AIRTABLE_BASE_ID $AIRTABLE_TABLES -v</span> <span class="pl-s"></span> - <span class="pl-ent">name</span>: <span class="pl-s">Commit and push if it changed</span> <span class="pl-ent">run</span>: <span class="pl-s">|-</span> <span class="pl-s"> git config user.name "Automated"</span> <span class="pl-s"> git config user.email "actions@users.noreply.github.com"</span> <span class="pl-s"> git add -A</span> <span class="pl-s"> timestamp=$(date -u)</span> <span class="pl-s"> git commit -m "Latest data: ${timestamp}" || exit 0</span> <span class="pl-s"> git push</span></pre></div> <p>This will run once a day (at 32 minutes past midnight UTC) and will also run if you manually click the "Run workflow" button, see <a href="https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/" rel="nofollow">GitHub Actions: Manual triggers with workflow_dispatch</a>.</p> <h2><a id="user-content-development" class="anchor" aria-hidden="true" href="#user-content-development"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Development</h2> <p>To contribute to this tool, first checkout the code. Then create a new virtual environment:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="cd airtable-export python -mvenv venv source venv/bin/activate "><pre><code>cd airtable-export python -mvenv venv source venv/bin/activate </code></pre></div> <p>Or if you are using <code>pipenv</code>:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="pipenv shell "><pre><code>pipenv shell </code></pre></div> <p>Now install the dependencies and tests:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="pip install -e '.[test]' "><pre><code>pip install -e '.[test]' </code></pre></div> <p>To run the tests:</p> <div class="snippet-clipboard-content position-relative" data-snippet-clipboard-copy-content="pytest "><pre><code>pytest </code></pre></div> </article></div>            

Links from other tables

  • 10 rows from repo in releases
Powered by Datasette · Queries took 3.897ms