Skip to content

Commit

Permalink
Add Python bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
pemistahl committed Nov 6, 2023
1 parent 9f2f49a commit 00ff891
Show file tree
Hide file tree
Showing 19 changed files with 1,555 additions and 8 deletions.
83 changes: 83 additions & 0 deletions .github/workflows/python-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#
# Copyright © 2020-present Peter M. Stahl [email protected]
#
# Licensed 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 expressed or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Python Build

on:
push:
branches:
- main
paths:
- 'Cargo.lock'
- 'Cargo.toml'
- 'pyproject.toml'
- 'requirements.txt'
- 'src/**'
- 'tests/**'
- '**.yml'
pull_request:
branches:
- main
paths:
- 'Cargo.lock'
- 'Cargo.toml'
- 'pyproject.toml'
- 'requirements.txt'
- 'src/**'
- 'tests/**'
- '**.yml'

jobs:
python-build:
name: Python ${{ matrix.python-version }} on ${{ matrix.name }}

runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ]
include:
- os: ubuntu-latest
name: Linux 64-Bit

- os: macos-latest
name: MacOS 64-Bit

- os: windows-latest
name: Windows 64-Bit

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'

- name: Install maturin and pytest
run: pip install -r requirements.txt

- name: Build Python extension
run: maturin build

- name: Install Python extension
run: pip install --find-links=target/wheels lingua-language-detector

- name: Run Python unit tests
run: pytest tests/python
10 changes: 5 additions & 5 deletions .github/workflows/build.yml → .github/workflows/rust-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

name: build
name: Rust Build

on:
push:
Expand All @@ -36,8 +36,8 @@ on:
- '**.yml'

jobs:
build-and-test:
name: ${{ matrix.name }}
rust-build:
name: Rust on ${{ matrix.name }}

runs-on: ${{ matrix.os }}

Expand Down Expand Up @@ -100,10 +100,10 @@ jobs:
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

- name: Build in debug mode
- name: Build target in debug mode
run: cargo build --target ${{ matrix.target }} --locked

- name: Run unit tests
- name: Test default target in debug mode
run: cargo test --target ${{ matrix.target }}

- name: Run WASM integration tests on NodeJS
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
*.launch
.settings/
.metadata/
.venv
*.sublime-workspace
tmp/
out/
Expand Down
115 changes: 114 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ members = ["language-models/*"]

[package]
name = "lingua"
version = "1.5.0"
version = "1.6.0"
authors = ["Peter M. Stahl <[email protected]>"]
description = """
An accurate natural language detection library, suitable for long and short text alike
Expand Down Expand Up @@ -144,6 +144,7 @@ lingua-zulu-language-model = { path = "language-models/zu", version = "1.1.0", o
ahash = "0.8.6"
cld2 = { version = "1.0.2", optional = true }
indoc = { version = "2.0.4", optional = true }
pyo3 = { version = "0.20.0", optional = true }
rayon = "1.8.0"
titlecase = { version = "2.2.0", optional = true }
whatlang = { version = "0.16.2", optional = true }
Expand Down Expand Up @@ -183,6 +184,7 @@ default = [
]
accuracy-reports = ["cld2", "indoc", "titlecase", "whatlang", "whichlang"]
benchmark = ["cld2", "whatlang", "whichlang"]
python = ["pyo3"]
afrikaans = ["lingua-afrikaans-language-model"]
albanian = ["lingua-albanian-language-model"]
arabic = ["lingua-arabic-language-model"]
Expand Down
Loading

0 comments on commit 00ff891

Please sign in to comment.