diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 5b42d0e..2720eff 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -15,7 +15,7 @@ jobs: name: "Run tests with Python ${{ matrix.python-version }} on ${{ matrix.os }}" strategy: matrix: - python-version: [ '3.8', '3.12', '3.13.0-rc.1' ] + python-version: [ '3.8', '3.12', '3.13' ] os: [ "ubuntu-22.04", "ubuntu-24.04" ] fail-fast: false diff --git a/CHANGELOG.md b/CHANGELOG.md index fa4c7db..48362b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,121 +1,3 @@ -# CHANGELOG +# Change Log -### 0.3.1 (Not Released) - -### 0.3.0 - -* Improve list representations, unicode support and multiple threading usage, see: [97](https://github.com/yuce/pyswip/pull/97). Contributed by Guglielmo Gemignani. -* Added PL_STRINGS_MARK to getAtomChars, fixes [102](https://github.com/yuce/pyswip/issues/102). Contributed by Vince Jankovics. -* Backwards compatibility for Python 2 64bit, see: [104](https://github.com/yuce/pyswip/pull/104). Contributed by Tobias Grubenmann. -* Improved handling of lists, nested lists, strings, and atoms. see: [112](https://github.com/yuce/pyswip/pull/112). Contributed by Tobias Grubenmann. -* Fixes for changed constants, see: [125](https://github.com/yuce/pyswip/pull/125). Contributed by Arvid Norlander. -* Refactored SWI-Prolog discovery [commit](https://github.com/yuce/pyswip/commit/d399f0d049ff17200b1b7e1cd878faf3e48502dc) -* Dictionary support, see: [commit](https://github.com/yuce/pyswip/commit/59016e0841f56177d1b18ec08fd9b67792bd0a97). Contributed by Max Peltzer. -* Check `PILLIBSWIPL` environment variable for the `libswipl` library path [145](https://github.com/yuce/pyswip/pull/145). Contributed by Jan Wielemaker. -* Avoid AttributeError with PL_version_info in swipl <= 8.4.2 [154](https://github.com/yuce/pyswip/pull/154). Contributed by Jan DestyNova. -* Added hardcoded path for `libswipl.so` [43](https://github.com/yuce/pyswip/pull/43). Contributed by Kumar Abhinav. -* Fixed not finding swipl lib file when there are multiple options [153](https://github.com/yuce/pyswip/pull/153). Contributed by AdiHarif. - -### 0.2.10 - -* Synchronized type constants with SWI-Prolog.h - update for broken compatibility changes in SWI-Prolog.h up to 0.8.3. -* Fix incorrect REP_* constants. -* Fixed issue [#92](https://github.com/yuce/pyswip/issues/92) (C assert) -* Fixed issue [#90](https://github.com/yuce/pyswip/issues/90) (quoted string) -* Fixed Variables in foreign functions not unifiable. Contributed by Michael Kasch. -* Added support multibyte strings and atoms. Contributed by Nikolai Merinov. -* Updated core.py and easy.py for unifying strings properly. Contributed by rohanshekhar. -* Fixed issue [#71](https://github.com/yuce/pyswip/issues/71). Contributed by prologrules. -* Fixed compatibility with SWI-Prolog 8.2.0. Contributed by Stuart Reynolds. -* Fixed compatibility with MacOS. Contributed by prologrules and Dylan Lukes. - -### 0.2.9 - -* Added non deterministic foreign function support. Contributed by rmanhaeve. -* Fixed issue [#67](https://github.com/yuce/pyswip/pull/67). Contributed by Galileo Sartor. - -### 0.2.8 - -* Fixed issue [#35](https://github.com/yuce/pyswip/issues/35). Contributed by Robert Simione. - -### 0.2.7 - -* Works on FreeBSD. - -### 0.2.6 - -* Fixed issue [#9](https://github.com/yuce/pyswip/issues/9). -* Fixed issue [#10](https://github.com/yuce/pyswip/issues/10). - -### 0.2.5 - -* Project cleanup -* Updated the examples for Python 3. - -### 0.2.4 - -* Maintenance release of PySwip -* Added an error to avoid opening nested queries using PySwip (SWI-Prolog does - not allow that). The error is NestedQueryError. -* Added Tomasz Gryszkiewicz's patch for better finding the SWI-Prolog lib in - Darwin -* Solved issue 4 "Patch for a dynamic method" -* Solved issue 5 "Patch: hash and eq methods for Atom class" -* Solved issue 3: "Problem with variables in lists" -* Solved issue 17: "Can't find SWI-Prolog library in Homebrew's /usr/local" - -### 0.2.3 - -* Maintenance release of PySwip -* Solved issue "Segmentation fault when assertz-ing" (thanks to jpthompson23) -* Solved issue "pyswip doesn't work on cygwin" -* Solved issue "Callbacks can cause segv's" (thanks to jpthompson23) -* Solved issue "Improve library loading" -* Solved issue "sys.exit does not work when importing pyswip" - -### 0.2.2 - -* PySwip won't rely on the (id of the) functor handle of `=/2`. -* Sebastian Höhn's patch to enable PySwip to work on MAC OS-X is incorporated. - -### 0.2.1 - -* Importing `pyswip` automatically initializes SWI-Prolog. -* Fixed a bug with querying lists with the new interface. - -### 0.2.0 - -* All names are included with `from pyswip import ...` -* New *Pythonic* interface -* Prolog.query returns real Python datatypes -* Markus Triska's Sudoku Solver -* Prolog module support -* Foreign functions retrieve Python datatypes. - -### 0.1.3 - -* Renamed `pyswip/util.py` to `pyswip/prolog.py`. -* New module `pyswip.easy`. -* Now it is possible to register a Python function as a Prolog predicate - through SWI-Prolog's Foreign Function Interface. -* Additions to the core library. -* Added example, *register foreign* which shows how to register a Python - function as an SWI-Prolog predicate. -* Added example, *Towers of Hanoi* - -### 0.1.2 - -* Renamed `PrologRunner` to `Prolog`. -* Removed `query` method of `Prolog`, `queryGenerator` is renamed as `query`. -* Added `asserta`, `assertz` and `consult` methods to `Prolog`. -* The necessary cleanup is done even if the `query` generator doesn't run to the end. -* Errors during the execution of `query` is caught and `PrologError` is raised. -* Many new additions to the core library. -* Added `examples` directory. -* Added examples, *coins* and *draughts*. - -### 0.1.1 - -* Added `queryGenerator` to PrologRunner, `query` calls `queryGenerator`. -* Added example `send more money`. +This content has moved to [PySwip Change Log](https://pyswip.org/change-log.html) \ No newline at end of file diff --git a/INSTALL.md b/INSTALL.md index b06d208..18c067a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,152 +1,3 @@ # Installing PySwip -## Requirements - -* Python 3.8 or later -* SWI-Prolog 8.4.2 or later -* 64bit Intel or ARM processor - -> [!IMPORTANT] -> Make sure the SWI-Prolog architecture is the same as the Python architecture. -> If you are using a 64bit build of Python, use a 64bit build of SWI-Prolog, etc. - -## Installing on All Platforms - -PySwip is available to install from [Python Package Index](https://pypi.org/project/pyswip/). - -> [!NOTE] -> We recommend installing PySwip into a Python virtual environment. -> See: [Creation of virtual environments](https://docs.python.orgs/3/library/venv.html) - -You can install PySwip using: -``` -pip install pyswip -``` - -You will need to have SWI-Prolog installed on your system. -Some operating systems have packages for SWI-Prolog. -Otherwise, you can download it from [SWI-Prolog's website](https://www.swi-prolog.org/Download.html) or build from source. - -PySwip requires the location of the `libswpl` shared library and also the SWI-Prolog home directory. -In many cases, PySwip can find the shared library and the home directory automatically. -Otherwise, you can use the following environment variables: -* `SWI_HOME_DIR` - The SWI-Prolog home directory. -* `LIBSWIPL_PATH` - The location of the `libswipl` shared library. - -You can get the locations mentioned above using the following commands: -``` -swipl --dump-runtime-variables -``` - -That will output something like: -``` -PLBASE="/home/yuce/swipl-9.3.8/lib/swipl"; -... -PLLIBDIR="/home/yuce/swipl-9.3.8/lib/swipl/lib/x86_64-linux"; -``` -Use the value in the `PLBASE` variable as the value for the `SWI_HOME_DIR` environment variable. -Use the value in the `PLLIBDIR` variable as the value for the `LIBSWIPL_PATH` environment variable. - -## Installing on Linux - -### Arch Linux - -Installing SWI-Prolog: -``` -pacman -S swi-prolog -``` - -Installing PySwip: -(Alternative to the `pip install` way explained above) -``` -pacman -S python-pyswip -``` - -### Fedora Workstation - -Installing SWI-Prolog: -``` -dnf install pl -``` - -Installing PySwip: -(Alternative to the `pip install` way explained above) -``` -dnf install python3-pyswip -``` - -### Manjaro Linux - -Same as the Arch Linux instructions. -See: https://manjaristas.org/branch_compare?q=pyswip - -### Parabola GNU/Linux-libre - -Same as the Arch Linux instructions. -See: https://www.parabola.nu/packages/?q=python-pyswip - -### Debian, Ubuntu, Raspbian - -Ubuntu 22.04 has SWI-Prolog 8.4.3 in its repository. -Debian Bookworm, Ubuntu 24.04 and Raspberry Pi OS Bookworm have SWI-Prolog 9.0.4 in their repositories. - -To install PySwip, use the `pip install` way explained above. - -## Windows - -Download a recent version of SWI-Prolog from https://www.swi-prolog.org/Download.html and install it. - -To install PySwip, use the `pip install` way explained above. - -## MacOS - -The preferred way of installing SWI-Prolog on MacOS is using [Homebrew](https://brew.sh). - -### Homebrew - -Installing SWI-Prolog: -``` -brew install swi-prolog -``` - -To install PySwip, use the `pip install` way explained above. - -### Official SWI-Prolog App - -Install SWI-Prolog from https://www.swi-prolog.org/Download.html. - -If you get an error like `libgmp.X not found`, you have to set the `DYLD_FALLBACK_LIBRARY_PATH` environment variable before running Python: -``` -export DYLD_FALLBACK_LIBRARY_PATH=/Applications/SWI-Prolog.app/Contents/Frameworks -``` - -To install PySwip, use the `pip install` way explained above. - -## Other UNIX - -### OpenBSD - -Install SWI-Prolog using the following on OpenBSD 7.6 and later: -``` -pkg_add swi-prolog -``` - -To install PySwip, use the `pip install` way explained above. - -### FreeBSD - -SWI-Prolog can be installed using `pkg`: -``` -pkg install swi-pl -``` - -To install PySwip, use the `pip install` way explained above. - -## Test Drive - -Run a quick test by running following code at your Python console: -```python -from pyswip import Prolog -prolog = Prolog() -prolog.assertz("father(michael,john)") -``` +This content has moved to [PySwip Get Started](https://pyswip.org/get-started.html) diff --git a/LICENSE b/LICENSE index 31eb3ef..9be69dc 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2007-2020 Yüce Tekol and PySwip contributors +Copyright (c) 2007-2024 Yüce Tekol and PySwip contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/README.md b/README.md index dda87c6..8aed3d8 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,13 @@ # PySwip +
+ PySwip logo +
+ ## What's New? -See the [CHANGELOG](CHANGELOG.md). +See the [Change Log](https://pyswip.org/change-log.html). ## Install @@ -15,7 +19,7 @@ If you have SWI-Prolog installed, it's just: pip install pyswip ``` -See [INSTALL](INSTALL.md) for detailed instructions. +See [Get Started](https://pyswip.org/get-started.html) for detailed instructions. ## Introduction @@ -43,13 +47,14 @@ for soln in prolog.query("father(X,Y)"): # michael is the father of gina ``` -An existing knowledge base stored in a Prolog file can also be consulted, -and queried. Assuming the filename "knowledge_base.pl" and the Python is -being run in the same working directory, it is consulted like so: +An existing knowledge base stored in a Prolog file can also be consulted, and queried. +Assuming the filename "knowledge_base.pl" and the Python is being run in the same working directory, it is consulted like so: - >>> from pyswip import Prolog - >>> prolog = Prolog() - >>> prolog.consult("knowledge_base.pl") +```python +from pyswip import Prolog +prolog = Prolog() +prolog.consult("knowledge_base.pl") +``` ### Foreign Functions @@ -98,116 +103,20 @@ The core functionality of `Prolog.query` is based on Nathan Denny's public domai * [Support Forum](https://groups.google.com/forum/#!forum/pyswip) * [Stack Overflow](https://stackoverflow.com/search?q=pyswip) -## Projects/Publications that Use or Reference PySwip - -**Do you have a project, video or publication that uses/mentions PySwip? [file an issue](https://github.com/yuce/pyswip/issues/new?title=Powered%20by%20PySwip) or send a pull request.** - -If you would like to reference PySwip in a LaTeX document, you can use the provided [BibTeX file](pyswip.bibtex). - -### Books - -* [Beginning Artificial Intelligence with the Raspberry Pi](https://www.apress.com/gp/book/9781484227428) - -### Publications - -* [Assessment of Graph Databases as a Viable Materiel Solution for the Army's Dynamic Force Structure (DFS) Portal Implementation: Part 3, Risks, Mitigation Approach, and Roadmap](https://www.researchgate.net/publication/321977892_Assessment_of_Graph_Databases_as_a_Viable_Materiel_Solution_for_the_Army's_Dynamic_Force_Structure_DFS_Portal_Implementation_Part_3_Risks_Mitigation_Approach_and_Roadmap_Assessment_of_Graph_Databases_) -* [Tackling Complexity in High Performance Computing Applications](https://link.springer.com/article/10.1007/s10766-016-0422-9) -* [Social Human-Robot Interaction: A New Cognitive and Affective Interaction-Oriented Architecture](https://www.springer.com/gp/book/9783319474366) -* [A Planning Module for a ROS-Based Ubiquitous Robot Control System](https://dspace.library.uu.nl/bitstream/handle/1874/292669/2014-03-27%20MSc%20Thesis%20Pieterjan%20van%20Gastel.pdf) (PDF) -* [A pilot framework developed as a common platform integrating diverse elements of computer aided fixture design](https://www.tandfonline.com/doi/full/10.1080/00207543.2013.832000) -* [Integration von Prolog und ClioPatria in Python](http://www1.pub.informatik.uni-wuerzburg.de/pub/theses/2017-bodenlos-master.pdf) (PDF, German) -* [SELECTSCRIPT: A Query Language for Robotic World Models and Simulations](https://ieeexplore.ieee.org/document/7140077/) -* [A Concept for Declarative Information Acquisition in Smart Environments](https://d-nb.info/1122172583/34) (PDF) -* [Implementation on ADHD Diagnostic Expert System based on DSM Diagnostic Criteria](http://jse.or.kr/AJMAHS/papers/v7n11/50.pdf) (PDF, Korean) -* [Wie sehen Krebsmolekule aus? Vergleich der Gute der Klassifizierung potenziell krebserregender Molekule durch induktiv logische und merkmalsbasierte Lernverfahren](http://www.cogsys.wiai.uni-bamberg.de/teaching/ss17/pj_bama/ProjektberichtRelLearningFinzelGrabeHillebrandHornigRicci.pdf) (PDF, German) -* [Companion Robots Behaving with Style: Towards Plasticity in Social Human-Robot Interaction](https://tel.archives-ouvertes.fr/tel-01679314/document) (PDF) -* [Semi-automatically Augmenting Attack Trees using an Annotated Attack Tree Library](https://www.researchgate.net/publication/327985985_Semi-automatically_Augmenting_Attack_Trees_Using_an_Annotated_Attack_Tree_Library) -* [A Learning Framework for Tool Creation by a Robot](http://www.araa.asn.au/acra/acra2015/papers/pap145.pdf) (PDF) -* [Conceptual Maps as the First Step in an Ontology Construction Method](https://ieeexplore.ieee.org/abstract/document/5629027) -* [Fact-Based Expert System for Supplier Selection with ERP Data](https://link.springer.com/chapter/10.1007/978-981-15-1041-0_3) -* [Interactive Text Graph Mining with a Prolog-based Dialog Engine](https://link.springer.com/chapter/10.1007/978-3-030-39197-3_1) -* [The Detection Of Conflicts In The Requirements Specification Based On An Ontological Model And A Production Rule System](https://www.researchgate.net/publication/337655252_The_detection_of_conflicts_in_the_requirements_specification_based_on_an_ontological_model_and_a_production_rule_system) -* [Dependency-based Text Graphs for Keyphrase and Summary Extraction with Applications to Interactive Content Retrieval](https://arxiv.org/pdf/1909.09742.pdf) (PDF) -* [Information Retrieval Based on Knowledge-Enhanced Word Embedding Through Dialog: A Case Study](https://www.atlantis-press.com/journals/ijcis/125936225/view) -* [Exploring the world of declarative programming](https://fedoramagazine.org/exploring-the-world-of-declarative-programming/) -* [Development of a Prototype of a Medical Application Using a Type-2 Fuzzy Inference System](https://www.researchgate.net/publication/377771997_Development_of_a_Prototype_of_a_Medical_Application_Using_a_Type-2_Fuzzy_Inference_System) -* [Learning Where and When to Reason in Neuro-Symbolic Inference](https://openreview.net/pdf?id=en9V5F8PR) (PDF) -* [MMDect: Metamorphic Malware Detection Using Logic Programming](http://platon.etsii.urjc.es/~jarias/tfg/23-Luciana.pdf) (PDF) -* [Continuous QoS-compliant orchestration in the Cloud-Edge continuum](https://onlinelibrary.wiley.com/doi/10.1002/spe.3334) ([Code](https://github.com/di-unipi-socc/FogArm)) -* [ProPy: Prolog-based Fault Localization Tool for Python](https://ieeexplore.ieee.org/document/9825788) -* [Building a Fuzzy Expert System for Assessing the Severity of Pneumonia](https://www.researchgate.net/publication/363190862_Building_a_Fuzzy_Expert_System_for_Assessing_the_Severity_of_Pneumonia) - -### Videos - -* [AI - Blocks world solver interactive planner](https://www.youtube.com/watch?v=p1m8htUEHrc) -* [PySwip, Prolog, Javascript and HTML](https://www.youtube.com/watch?v=Oj8xsW2vaLA) (Spanish) -* [Get out of the maze with Prolog and Python](https://www.youtube.com/watch?v=MW3S0Jfa0LU) (Spanish) -* [Les robots deviennent (vraiment) intelligents ! (NAO discute avec Kylo Ren)](https://www.youtube.com/watch?v=JlfnpyIly-Y) -* [Connect Python and Prolog | Using Pyswip Module | Using Prolog as Backend](https://www.youtube.com/watch?v=1jwAHIz8WXc) -* [How to connect Prolog and Python Using Pyswip Module](https://www.youtube.com/watch?v=R_dpVolI7bg) -* [Praktikum Sistem Pakar 01 - Pengenalan Prolog, SWI-Prolog, PySwip](https://www.youtube.com/watch?v=wY5C48NMDp4) (Indonesian) -* [Curso Básico de Prolog: 4 - Interconectando Python con Prolog a través de PySwip](https://www.youtube.com/watch?v=5xDqp_lYlcM) (Spanish) - -### Projects - -* [noworkflow](https://github.com/gems-uff/noworkflow) Supporting infrastructure to run scientific experiments without a scientific workflow management system. http://gems-uff.github.io/noworkflow -* [Super Pacman](https://github.com/kajornsakp/prologProject) -* [Pokemon Weak Detector](https://github.com/ReiiYuki/PokemonWeakDetector) -* [Food Recommendations in Hyderabad, India](https://github.com/cindyleowtt/prolog_food) Food Recommendation AI Expert System using a GUI hosted on Flask and a backend developed with PYSWIP and native Prolog. -* [pyswip_envctrl](https://github.com/2rs2ts/pyswip_envctrl) An environment control module expert system written in PySwip. -* [tic-tac-toe](https://github.com/ivpusic/tic-tac-toe) Tic-tac-toe game with AI in Prolog and GUI in Python (kivy framework + pyswip). -* [TBM1 - "Getting to Know My Home"](http://thewiki.rockinrobotchallenge.eu/index.php?title=TBM1_-_“Getting_to_Know_My_Home”) -* [Prolog natural language parsing component to control a Scribbler II robot over bluetooth](http://justinmangue.com/blog/scribpro-py/) -* [Cosmos](https://github.com/mcsoto/cosmos) A new logic programming language. -* [lib-annotated-attack-trees](https://github.com/yramirezc/lib-annotated-attack-trees) Scripts and resources for creating a library of annotated attack trees and using it to refine an annotated attack tree. -* [ClIDE](https://github.com/skeledrew/clide) Command-line Intelligent Development Environment -* [Artificial Intelligence INF1771 @ PUC-Rio](https://github.com/leotok/INF1771) Projects for the Artificial Intelligence class @ PUC-Rio -* [AutomobileAdvisor](https://github.com/liscju/AutomobileAdvisor) Projekt na systemy ekspertowe pomagający wybrać odpowiedni samochód dla danego klienta na podstawie preferencji (Polish) -* [Prolog Tetris AI](https://sourceforge.net/projects/prologtetrisai/) -* [Jupyter SWI Prolog](https://github.com/targodan/jupyter-swi-prolog) A Jupyter Kernel for SWI-Prolog. -* [Blocks World Planner](https://github.com/davideiacobs/BlocksWorldPlanner) A program that allows users to solve the blocks world problem interacting only using the natural language. -* [DeepTalk](https://github.com/ptarau/DeepTalk) A Python+Prolog based Dialog Engine using the Python package text_graph_crafts that extracts the highest ranked sentences answering a query. -* [DeepRank](https://github.com/ptarau/DeepRank) The system uses dependency links for building Text Graphs, that with help of a centrality algorithm like PageRank, extract relevant keyphrases, summaries and relations from text documents. -* [Prolog Tic-tac-toe](https://github.com/guyzyl/prolog-tic-tac-toe) A full-stack tic-tac-toe game with AI in Prolog, backend in Python3 (+Flask) and frontend in Vue.js 3. -* [MIDSI Project](https://github.com/devdaniellima/midsi) Solution for data discovery in projects applicable to the - Semantic Web, enabling the loading of ontologies and inference of results using the WSML language. -* [Popper](https://github.com/logic-and-learning-lab/Popper) An inductive logic programming system. -* [Trabajo Final](https://github.com/NicolasLeidi/Trabajo-Final) Ingeniería para Sistemas de Información (Spanish) -* [norms-games](https://github.com/nmontesg/norms-games) Integration of normative systems and game theory -* [NAAV Language](https://github.com/atharva-date/SER502-NAAV-Team17) - -### Blog Posts - -* [Calling Prolog from Python](http://fernmac.blogspot.com.tr/2013/07/calling-prolog-from-python.html) -* [Python v. Prolog: Round 1: Fight!](http://www.kuliniewicz.org/blog/archives/2007/10/21/python-v-prolog-round-1-fight/) -* [Path Follower: Arduino+Rasp on ROS](http://blog.giacomocerquone.com/path-follower-maze-solving-car-arduino/) and its [Project code](https://github.com/giacomocerquone/robotics-MazeSolver) -* [10 minutes to make a GUI for your SWI-Prolog App via Python](http://pbrown.me/blog/quick_gui/) -* [Playing with Prolog – Prolog’s Role in the LLM Era, Part 3](https://eugeneasahara.com/2024/08/12/playing-with-prolog-prologs-role-in-the-llm-era-part-3/) -* [Prolog - Gateway to Logic Programming](https://sut-ai.github.io/supplementary/notebooks/logic_programming/) - -## Companies using PySwip - -* [Magazino GmbH](https://www.magazino.eu/?lang=en) Magazino develops and builds intelligent, mobile robots for intralogistics. +## PySwip Community Home + +PySwip was used in scientific articles, dissertations, and student projects over the years. +Head out to [PySwip Community](https://pyswip.org/community.html) for more information and community links. + +**Do you have a project, video or publication that uses/mentions PySwip?** +**[file an issue](https://github.com/yuce/pyswip/issues/new?title=Powered%20by%20PySwip) or send a pull request.** + +If you would like to reference PySwip in a LaTeX document, you can use the provided [BibTeX file](https://pyswip.org/pyswip.bibtex). +You can also use the following information to refer to PySwip: +* Author: Yüce Tekol and PySwip contributors +* Title: PySwip VERSION +* URL: https://pyswip.org ## License -``` -Copyright (c) 2007-2024 Yüce Tekol and PySwip contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -``` +PySwip is licensed under the [MIT license](LICENSE). diff --git a/pyproject.toml b/pyproject.toml index ba63ae7..cba1dc8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ classifiers = [ [project.urls] Download = "https://github.com/yuce/pyswip/releases" -Homepage = "https://github.com/yuce/pyswip" +Homepage = "https://pyswip.org" [tool.ruff.lint] ignore = ["F403", "F405", "E721"] diff --git a/tests/test_examples.py b/tests/test_examples.py index 7e96fa1..d48acf3 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -293,7 +293,7 @@ def test_large_db(self): Generates a large database, then runs query """ - num_facts = 1250000 + num_facts = 125000 prolog = Prolog() for i in range(num_facts): prolog.assertz("p(%s)" % i)