%global _empty_manifest_terminate_build 0
Name:		python-2ppy
Version:	0.4.0
Release:	1
Summary:	Python-based implementation of tuProlog -- the open ecosystem for symbolic AI --, based on 2P-Kt
License:	Apache 2.0 License
URL:		https://github.com/tuProlog/2ppy
Source0:	https://mirrors.nju.edu.cn/pypi/web/packages/02/9d/eb6fc52e24599cb44da3840acc68eef59a2c88a1658b81014f11866986ab/2ppy-0.4.0.tar.gz
BuildArch:	noarch

Requires:	python3-JPype1

%description
# 2PPy (tuProlog in Python)

Experimental porting of [2P-Kt](https://github.com/tuProlog/2p-kt) on Python, via [JPype](https://jpype.readthedocs.io).

> This is a __work in progress__. 2PPy is not ready for general availability, yet.

## Introduction

Object-oriented and modular ecosystem for symbolic AI and logic programming, currently featuring:

* a module for logic terms and clauses representation, namely `tuprolog.core`,

* a module for logic unification, namely `tuprolog.unify`,

* a module for in-memory indexing and storing logic theories, as well as other sorts of collections of logic clauses, namely `tuprolog.theory`,

* a module providing generic API for resolution of logic queries, namely `tuprolog.solve`, currently implementing a Prolog solver

* two parsing modules: one aimed at parsing terms, namely `tuprolog.core.parsing`, and the other aimed at parsing theories, namely `tuprolog.theory.parsing`,

* two serialisation-related modules: one aimed at (de)serialising terms and clauses, namely `tuprolog.core.serialize`, and the 
other aimed at  (de)serialising terms theories, namely `tuprolog.theory.serialize`,

* a module for using Prolog via a command-line interface, namely `tuprolog.repl`.

## How to do stuff

### Prerequisites

1. Install Python 3 (look into the `.python-version` to know the exact version)
    * I suggest using [Pyenv](https://github.com/pyenv/pyenv) to easily handle multiple Python versions on the same machine
    * Ensure PIP works fine

2. Install Java (JDK preferred), and **ensure the `JAVA_HOME` variable is correctly set**

3. Ensure Java and Python are both either 64bit or 32bit

4. If you have installed some prior development version of 2PPy (e.g. `tuppy` or `tuprolog`), uninstall them via
    ```bash
    pip uninstall tuppy tuprolog
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip uninstall tuppy tuprolog
    ```

### How to develop 2PPy

5. Restore Python dependencies via PIP, by running:
    ```bash
    pip install -r requirements.txt
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip -r requirements.txt
    ```

6. Restore JVM dependencies via `download-jars.sh`, by running:
    ```bash
    ./download-jars.sh
    ```
    Notice that this command requires `curl` and `wget` to be installed on your system (`wget` may be lacking on __Mac OS__ and Windows)

### How to use 2PPy as a library

5. Install 2PPy from Pypi by running:
    ```bash
    pip install 2ppy
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip install 2ppy
    ```
   
6. Import `tuprolog.*` modules in your Python scripts

7. Profit

### How to use 2PPy as an executable

5. Install 2PPy from Pypi by running:
    ```bash
    pip install 2ppy
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip install 2ppy
    ```
   
6. Run `tuprolog` module via
   ```bash
   python -m tuprolog
   ```

For the moment, running 2PPy means starting an interactive Python shell with pre-loaded `tuprolog.*` modules.

Eventually `python -m tuprolog` will launch a command-line logic solver.




%package -n python3-2ppy
Summary:	Python-based implementation of tuProlog -- the open ecosystem for symbolic AI --, based on 2P-Kt
Provides:	python-2ppy
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-2ppy
# 2PPy (tuProlog in Python)

Experimental porting of [2P-Kt](https://github.com/tuProlog/2p-kt) on Python, via [JPype](https://jpype.readthedocs.io).

> This is a __work in progress__. 2PPy is not ready for general availability, yet.

## Introduction

Object-oriented and modular ecosystem for symbolic AI and logic programming, currently featuring:

* a module for logic terms and clauses representation, namely `tuprolog.core`,

* a module for logic unification, namely `tuprolog.unify`,

* a module for in-memory indexing and storing logic theories, as well as other sorts of collections of logic clauses, namely `tuprolog.theory`,

* a module providing generic API for resolution of logic queries, namely `tuprolog.solve`, currently implementing a Prolog solver

* two parsing modules: one aimed at parsing terms, namely `tuprolog.core.parsing`, and the other aimed at parsing theories, namely `tuprolog.theory.parsing`,

* two serialisation-related modules: one aimed at (de)serialising terms and clauses, namely `tuprolog.core.serialize`, and the 
other aimed at  (de)serialising terms theories, namely `tuprolog.theory.serialize`,

* a module for using Prolog via a command-line interface, namely `tuprolog.repl`.

## How to do stuff

### Prerequisites

1. Install Python 3 (look into the `.python-version` to know the exact version)
    * I suggest using [Pyenv](https://github.com/pyenv/pyenv) to easily handle multiple Python versions on the same machine
    * Ensure PIP works fine

2. Install Java (JDK preferred), and **ensure the `JAVA_HOME` variable is correctly set**

3. Ensure Java and Python are both either 64bit or 32bit

4. If you have installed some prior development version of 2PPy (e.g. `tuppy` or `tuprolog`), uninstall them via
    ```bash
    pip uninstall tuppy tuprolog
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip uninstall tuppy tuprolog
    ```

### How to develop 2PPy

5. Restore Python dependencies via PIP, by running:
    ```bash
    pip install -r requirements.txt
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip -r requirements.txt
    ```

6. Restore JVM dependencies via `download-jars.sh`, by running:
    ```bash
    ./download-jars.sh
    ```
    Notice that this command requires `curl` and `wget` to be installed on your system (`wget` may be lacking on __Mac OS__ and Windows)

### How to use 2PPy as a library

5. Install 2PPy from Pypi by running:
    ```bash
    pip install 2ppy
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip install 2ppy
    ```
   
6. Import `tuprolog.*` modules in your Python scripts

7. Profit

### How to use 2PPy as an executable

5. Install 2PPy from Pypi by running:
    ```bash
    pip install 2ppy
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip install 2ppy
    ```
   
6. Run `tuprolog` module via
   ```bash
   python -m tuprolog
   ```

For the moment, running 2PPy means starting an interactive Python shell with pre-loaded `tuprolog.*` modules.

Eventually `python -m tuprolog` will launch a command-line logic solver.




%package help
Summary:	Development documents and examples for 2ppy
Provides:	python3-2ppy-doc
%description help
# 2PPy (tuProlog in Python)

Experimental porting of [2P-Kt](https://github.com/tuProlog/2p-kt) on Python, via [JPype](https://jpype.readthedocs.io).

> This is a __work in progress__. 2PPy is not ready for general availability, yet.

## Introduction

Object-oriented and modular ecosystem for symbolic AI and logic programming, currently featuring:

* a module for logic terms and clauses representation, namely `tuprolog.core`,

* a module for logic unification, namely `tuprolog.unify`,

* a module for in-memory indexing and storing logic theories, as well as other sorts of collections of logic clauses, namely `tuprolog.theory`,

* a module providing generic API for resolution of logic queries, namely `tuprolog.solve`, currently implementing a Prolog solver

* two parsing modules: one aimed at parsing terms, namely `tuprolog.core.parsing`, and the other aimed at parsing theories, namely `tuprolog.theory.parsing`,

* two serialisation-related modules: one aimed at (de)serialising terms and clauses, namely `tuprolog.core.serialize`, and the 
other aimed at  (de)serialising terms theories, namely `tuprolog.theory.serialize`,

* a module for using Prolog via a command-line interface, namely `tuprolog.repl`.

## How to do stuff

### Prerequisites

1. Install Python 3 (look into the `.python-version` to know the exact version)
    * I suggest using [Pyenv](https://github.com/pyenv/pyenv) to easily handle multiple Python versions on the same machine
    * Ensure PIP works fine

2. Install Java (JDK preferred), and **ensure the `JAVA_HOME` variable is correctly set**

3. Ensure Java and Python are both either 64bit or 32bit

4. If you have installed some prior development version of 2PPy (e.g. `tuppy` or `tuprolog`), uninstall them via
    ```bash
    pip uninstall tuppy tuprolog
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip uninstall tuppy tuprolog
    ```

### How to develop 2PPy

5. Restore Python dependencies via PIP, by running:
    ```bash
    pip install -r requirements.txt
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip -r requirements.txt
    ```

6. Restore JVM dependencies via `download-jars.sh`, by running:
    ```bash
    ./download-jars.sh
    ```
    Notice that this command requires `curl` and `wget` to be installed on your system (`wget` may be lacking on __Mac OS__ and Windows)

### How to use 2PPy as a library

5. Install 2PPy from Pypi by running:
    ```bash
    pip install 2ppy
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip install 2ppy
    ```
   
6. Import `tuprolog.*` modules in your Python scripts

7. Profit

### How to use 2PPy as an executable

5. Install 2PPy from Pypi by running:
    ```bash
    pip install 2ppy
    ```
    On __Mac OS__ this may not work as expected.
    Consider running the following command instead:
    ```bash
    python3 -m pip install 2ppy
    ```
   
6. Run `tuprolog` module via
   ```bash
   python -m tuprolog
   ```

For the moment, running 2PPy means starting an interactive Python shell with pre-loaded `tuprolog.*` modules.

Eventually `python -m tuprolog` will launch a command-line logic solver.




%prep
%autosetup -n 2ppy-0.4.0

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-2ppy -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.4.0-1
- Package Spec generated