kerykeion


Namekerykeion JSON
Version 4.4.2 PyPI version JSON
download
home_pagehttps://github.com/g-battaglia/kerykeion
SummaryA python library for astrology.
upload_time2024-03-25 11:28:35
maintainerNone
docs_urlNone
authorGiacomo Battaglia
requires_python<4.0,>=3.9
licenseAGPL-3.0
keywords astrology ephemeris astrology library birtchart svg zodiac zodiac-sing astronomical-algorithms synastry astrology-calculator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align=center>Kerykeion</h1>
<div align="center">
    <a href="#">
        <img src="https://img.shields.io/github/contributors/g-battaglia/kerykeion?color=blue&logo=github" alt="contributors">
    </a>
    <a href="#">
        <img src="https://img.shields.io/github/stars/g-battaglia/kerykeion.svg?logo=github" alt="stars">
    </a>
    <a href="#">
        <img src="https://img.shields.io/github/forks/g-battaglia/kerykeion.svg?logo=github" alt="forks">
    </a>
    <a href="https://pypi.org/project/kerykeion" target="_blank">
        <img src="https://visitor-badge.laobi.icu/badge?page_id=g-battaglia.kerykeion" alt="visitors"/>
    </a>    
    <a href="https://pypi.org/project/kerykeion" target="_blank">
        <img src="https://img.shields.io/pypi/v/kerykeion?label=pypi%20package" alt="Package version">
    </a>
    <a href="https://pypi.org/project/kerykeion" target="_blank">
        <img src="https://img.shields.io/pypi/pyversions/kerykeion.svg" alt="Supported Python versions">
    </a>
</div>

&nbsp;

Kerykeion is a python library for Astrology.
It can calculate all the planet and house position,
also it can calculate the aspects of a single persone or between two, you can set how many planets you
need in the settings in the utility module.
It also can generate an SVG of a birthchart, a synastry chart or a transit chart.

The core goal of this project is to provide a simple and easy approach to astrology in a data driven way.

Here's an example of a birthchart:

![Kanye Birth Chart](http://centuryboy.altervista.org/KanyeNatalChart.svg)

## Web API

If you want to use Kerykeion in a web application, I've created a web API for this purpose, you can find it here:

**[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/)**

It's [open source](https://github.com/g-battaglia/Astrologer-API), it's a way to support me and the project.

## Donate

Maintaining this project is a lot of work, the Astrologer API doesn't nearly cover the costs of a software engineer working on this project full time. I do this because I love it, but until I can make this my full time job, I won't be able to spend as much time on it.

If you want to support me, you can do it here:

[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/kerykeion)

## Installation

Kerykeion is a _Python 3.9_ package, make sure you have _Python 3.9_ or above installed on your system.

```bash
pip3 install kerykeion
```

## Usage

Here some examples:

```python

# Import the main class for creating a kerykeion instance:
from kerykeion import AstrologicalSubject

# Create a kerykeion instance:
# Args: Name, year, month, day, hour, minuts, city, nation(optional)
kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")

# Get the information about the sun in the chart:
# (The position of the planets always starts at 0)
kanye.sun

#> {'name': 'Sun', 'quality': 'Mutable', 'element': 'Air', 'sign': 'Gem', 'sign_num': 2, 'pos': 17.598992059774275, 'abs_pos': 77.59899205977428, 'emoji': '♊️', 'house': '12th House', 'retrograde': False}

# Get information about the first house:
kanye.first_house

#> {'name': 'First_House', 'quality': 'Cardinal', 'element': 'Water', 'sign': 'Can', 'sign_num': 3, 'pos': 17.995779673209114, 'abs_pos': 107.99577967320911, 'emoji': '♋️'}

# Get element of the moon sign:
kanye.moon.element

#> 'Water'

```

**To avoid connecting to GeoNames (eg. avoiding hourly limit or no internet connection) you should instance kerykeion like this:**

```python
kanye = AstrologicalSubject(
    "Kanye", 1977, 6, 8, 8, 45, lng=50, lat=50, tz_str="Europe/Rome", city="Rome"
)
```

The difference is that you have to pass the longitude, latitude and the timezone string, instead of the city and nation.
If you omit the nation, it will be set to "GB" by default, but the value is not used for calculations. It's better to set it to the correct value though.

## Generate a SVG Chart:

```python
from kerykeion import AstrologicalSubject, KerykeionChartSVG

first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma")
second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma")

# Set the type, it can be Natal, Synastry or Transit

name = KerykeionChartSVG(first, chart_type="Synastry", second_obj=second)
name.makeSVG()
print(len(name.aspects_list))

#> Generating kerykeion object for Jack...
#> Generating kerykeion object for Jane...
#> Jack birth location: Roma, 41.89193, 12.51133
#> SVG Generated Correctly
#> 38

```

![Synastry Chart](http://centuryboy.altervista.org/JackComposite_Chart.svg)

# Report

To print a report of all the data:

```python
from kerykeion import Report, AstrologicalSubject

kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")
report = Report(kanye)
report.print_report()

```

Returns:

```
+- Kerykeion report for Kanye -+
+----------+------+-------------+-----------+----------+
| Date     | Time | Location    | Longitude | Latitude |
+----------+------+-------------+-----------+----------+
| 8/6/1977 | 8:45 | Atlanta, US | -84.38798 | 33.749   |
+----------+------+-------------+-----------+----------+
+-----------+------+-------+------+----------------+
| Planet    | Sign | Pos.  | Ret. | House          |
+-----------+------+-------+------+----------------+
| Sun       | Gem  | 17.6  | -    | Twelfth_House  |
| Moon      | Pis  | 16.43 | -    | Ninth_House    |
| Mercury   | Tau  | 26.29 | -    | Eleventh_House |
| Venus     | Tau  | 2.03  | -    | Tenth_House    |
| Mars      | Tau  | 1.79  | -    | Tenth_House    |
| Jupiter   | Gem  | 14.61 | -    | Eleventh_House |
| Saturn    | Leo  | 12.8  | -    | Second_House   |
| Uranus    | Sco  | 8.27  | R    | Fourth_House   |
| Neptune   | Sag  | 14.69 | R    | Fifth_House    |
| Pluto     | Lib  | 11.45 | R    | Fourth_House   |
| Mean_Node | Lib  | 21.49 | R    | Fourth_House   |
| True_Node | Lib  | 22.82 | R    | Fourth_House   |
| Chiron    | Tau  | 4.17  | -    | Tenth_House    |
+-----------+------+-------+------+----------------+
+----------------+------+----------+
| House          | Sign | Position |
+----------------+------+----------+
| First_House    | Can  | 18.0     |
| Second_House   | Leo  | 9.51     |
| Third_House    | Vir  | 4.02     |
| Fourth_House   | Lib  | 3.98     |
| Fifth_House    | Sco  | 9.39     |
| Sixth_House    | Sag  | 15.68    |
| Seventh_House  | Cap  | 18.0     |
| Eighth_House   | Aqu  | 9.51     |
| Ninth_House    | Pis  | 4.02     |
| Tenth_House    | Ari  | 3.98     |
| Eleventh_House | Tau  | 9.39     |
| Twelfth_House  | Gem  | 15.68    |
+----------------+------+----------+

```

And if you want to export it to a file:

```bash
$ python3 your_script_name.py > file.txt
```

## Other exeples of possibles usecase

```python
# Get all aspects between two persons:

from kerykeion import SynastryAspects, AstrologicalSubject
first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma")
second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma")

name = SynastryAspects(first, second)
aspect_list = name.get_relevant_aspects()
print(aspect_list[0])

#> Generating kerykeion object for Jack...
#> Generating kerykeion object for Jane...
#> {'p1_name': 'Sun', 'p1_abs_pos': 84.17867971515636, 'p2_name': 'Sun', 'p2_abs_pos': 211.90472999502984, 'aspect': 'trine', 'orbit': 7.726050279873476, 'aspect_degrees': 120, 'color': '#36d100', 'aid': 6, 'diff': 127.72605027987348, 'p1': 0, 'p2': 0}

```

## Documentation

Most of the functions and the classes are self documented by the types and have docstrings.
An auto-generated documentation [is available here](https://g-battaglia.github.io/kerykeion).

Sooner or later I'll try to write an extensive documentation.

## Development

You can clone this repository or download a zip file using the right side buttons.

## Contributing

Feel free to contribute to the code!

## License

This project is licensed under the AGPL-3.0 License.
To understand how this impacts your use of the software, please see the [LICENSE](LICENSE) file for details.
If you have questions, you can reach out to me at my [email](mailto:battaglia.giacomo@yahoo.it?subject=Kerykeion) address.
As a rule of thumb, if you are using this library in a project, you should open source the code of the project with a compatible license.

You can implement the logic of kerkeion in your project and also keep it closed source by using a third party API, like the [AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/). The AstrologerAPI is AGPL-3.0 compliant. Subscribing to the API is also, currently, the best way to support the project.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/g-battaglia/kerykeion",
    "name": "kerykeion",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "astrology, ephemeris, astrology library, birtchart, svg, zodiac, zodiac-sing, astronomical-algorithms, synastry, astrology-calculator",
    "author": "Giacomo Battaglia",
    "author_email": "battaglia.giacomo@yahoo.it",
    "download_url": "https://files.pythonhosted.org/packages/b8/02/7b1b1fdb35924facaf531b89c0e45ea6db3c10d98206f9b5ca5fc8f98bb8/kerykeion-4.4.2.tar.gz",
    "platform": null,
    "description": "<h1 align=center>Kerykeion</h1>\n<div align=\"center\">\n    <a href=\"#\">\n        <img src=\"https://img.shields.io/github/contributors/g-battaglia/kerykeion?color=blue&logo=github\" alt=\"contributors\">\n    </a>\n    <a href=\"#\">\n        <img src=\"https://img.shields.io/github/stars/g-battaglia/kerykeion.svg?logo=github\" alt=\"stars\">\n    </a>\n    <a href=\"#\">\n        <img src=\"https://img.shields.io/github/forks/g-battaglia/kerykeion.svg?logo=github\" alt=\"forks\">\n    </a>\n    <a href=\"https://pypi.org/project/kerykeion\" target=\"_blank\">\n        <img src=\"https://visitor-badge.laobi.icu/badge?page_id=g-battaglia.kerykeion\" alt=\"visitors\"/>\n    </a>    \n    <a href=\"https://pypi.org/project/kerykeion\" target=\"_blank\">\n        <img src=\"https://img.shields.io/pypi/v/kerykeion?label=pypi%20package\" alt=\"Package version\">\n    </a>\n    <a href=\"https://pypi.org/project/kerykeion\" target=\"_blank\">\n        <img src=\"https://img.shields.io/pypi/pyversions/kerykeion.svg\" alt=\"Supported Python versions\">\n    </a>\n</div>\n\n&nbsp;\n\nKerykeion is a python library for Astrology.\nIt can calculate all the planet and house position,\nalso it can calculate the aspects of a single persone or between two, you can set how many planets you\nneed in the settings in the utility module.\nIt also can generate an SVG of a birthchart, a synastry chart or a transit chart.\n\nThe core goal of this project is to provide a simple and easy approach to astrology in a data driven way.\n\nHere's an example of a birthchart:\n\n![Kanye Birth Chart](http://centuryboy.altervista.org/KanyeNatalChart.svg)\n\n## Web API\n\nIf you want to use Kerykeion in a web application, I've created a web API for this purpose, you can find it here:\n\n**[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/)**\n\nIt's [open source](https://github.com/g-battaglia/Astrologer-API), it's a way to support me and the project.\n\n## Donate\n\nMaintaining this project is a lot of work, the Astrologer API doesn't nearly cover the costs of a software engineer working on this project full time. I do this because I love it, but until I can make this my full time job, I won't be able to spend as much time on it.\n\nIf you want to support me, you can do it here:\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/kerykeion)\n\n## Installation\n\nKerykeion is a _Python 3.9_ package, make sure you have _Python 3.9_ or above installed on your system.\n\n```bash\npip3 install kerykeion\n```\n\n## Usage\n\nHere some examples:\n\n```python\n\n# Import the main class for creating a kerykeion instance:\nfrom kerykeion import AstrologicalSubject\n\n# Create a kerykeion instance:\n# Args: Name, year, month, day, hour, minuts, city, nation(optional)\nkanye = AstrologicalSubject(\"Kanye\", 1977, 6, 8, 8, 45, \"Atlanta\")\n\n# Get the information about the sun in the chart:\n# (The position of the planets always starts at 0)\nkanye.sun\n\n#> {'name': 'Sun', 'quality': 'Mutable', 'element': 'Air', 'sign': 'Gem', 'sign_num': 2, 'pos': 17.598992059774275, 'abs_pos': 77.59899205977428, 'emoji': '\u264a\ufe0f', 'house': '12th House', 'retrograde': False}\n\n# Get information about the first house:\nkanye.first_house\n\n#> {'name': 'First_House', 'quality': 'Cardinal', 'element': 'Water', 'sign': 'Can', 'sign_num': 3, 'pos': 17.995779673209114, 'abs_pos': 107.99577967320911, 'emoji': '\u264b\ufe0f'}\n\n# Get element of the moon sign:\nkanye.moon.element\n\n#> 'Water'\n\n```\n\n**To avoid connecting to GeoNames (eg. avoiding hourly limit or no internet connection) you should instance kerykeion like this:**\n\n```python\nkanye = AstrologicalSubject(\n    \"Kanye\", 1977, 6, 8, 8, 45, lng=50, lat=50, tz_str=\"Europe/Rome\", city=\"Rome\"\n)\n```\n\nThe difference is that you have to pass the longitude, latitude and the timezone string, instead of the city and nation.\nIf you omit the nation, it will be set to \"GB\" by default, but the value is not used for calculations. It's better to set it to the correct value though.\n\n## Generate a SVG Chart:\n\n```python\nfrom kerykeion import AstrologicalSubject, KerykeionChartSVG\n\nfirst = AstrologicalSubject(\"Jack\", 1990, 6, 15, 15, 15, \"Roma\")\nsecond = AstrologicalSubject(\"Jane\", 1991, 10, 25, 21, 00, \"Roma\")\n\n# Set the type, it can be Natal, Synastry or Transit\n\nname = KerykeionChartSVG(first, chart_type=\"Synastry\", second_obj=second)\nname.makeSVG()\nprint(len(name.aspects_list))\n\n#> Generating kerykeion object for Jack...\n#> Generating kerykeion object for Jane...\n#> Jack birth location: Roma, 41.89193, 12.51133\n#> SVG Generated Correctly\n#> 38\n\n```\n\n![Synastry Chart](http://centuryboy.altervista.org/JackComposite_Chart.svg)\n\n# Report\n\nTo print a report of all the data:\n\n```python\nfrom kerykeion import Report, AstrologicalSubject\n\nkanye = AstrologicalSubject(\"Kanye\", 1977, 6, 8, 8, 45, \"Atlanta\")\nreport = Report(kanye)\nreport.print_report()\n\n```\n\nReturns:\n\n```\n+- Kerykeion report for Kanye -+\n+----------+------+-------------+-----------+----------+\n| Date     | Time | Location    | Longitude | Latitude |\n+----------+------+-------------+-----------+----------+\n| 8/6/1977 | 8:45 | Atlanta, US | -84.38798 | 33.749   |\n+----------+------+-------------+-----------+----------+\n+-----------+------+-------+------+----------------+\n| Planet    | Sign | Pos.  | Ret. | House          |\n+-----------+------+-------+------+----------------+\n| Sun       | Gem  | 17.6  | -    | Twelfth_House  |\n| Moon      | Pis  | 16.43 | -    | Ninth_House    |\n| Mercury   | Tau  | 26.29 | -    | Eleventh_House |\n| Venus     | Tau  | 2.03  | -    | Tenth_House    |\n| Mars      | Tau  | 1.79  | -    | Tenth_House    |\n| Jupiter   | Gem  | 14.61 | -    | Eleventh_House |\n| Saturn    | Leo  | 12.8  | -    | Second_House   |\n| Uranus    | Sco  | 8.27  | R    | Fourth_House   |\n| Neptune   | Sag  | 14.69 | R    | Fifth_House    |\n| Pluto     | Lib  | 11.45 | R    | Fourth_House   |\n| Mean_Node | Lib  | 21.49 | R    | Fourth_House   |\n| True_Node | Lib  | 22.82 | R    | Fourth_House   |\n| Chiron    | Tau  | 4.17  | -    | Tenth_House    |\n+-----------+------+-------+------+----------------+\n+----------------+------+----------+\n| House          | Sign | Position |\n+----------------+------+----------+\n| First_House    | Can  | 18.0     |\n| Second_House   | Leo  | 9.51     |\n| Third_House    | Vir  | 4.02     |\n| Fourth_House   | Lib  | 3.98     |\n| Fifth_House    | Sco  | 9.39     |\n| Sixth_House    | Sag  | 15.68    |\n| Seventh_House  | Cap  | 18.0     |\n| Eighth_House   | Aqu  | 9.51     |\n| Ninth_House    | Pis  | 4.02     |\n| Tenth_House    | Ari  | 3.98     |\n| Eleventh_House | Tau  | 9.39     |\n| Twelfth_House  | Gem  | 15.68    |\n+----------------+------+----------+\n\n```\n\nAnd if you want to export it to a file:\n\n```bash\n$ python3 your_script_name.py > file.txt\n```\n\n## Other exeples of possibles usecase\n\n```python\n# Get all aspects between two persons:\n\nfrom kerykeion import SynastryAspects, AstrologicalSubject\nfirst = AstrologicalSubject(\"Jack\", 1990, 6, 15, 15, 15, \"Roma\")\nsecond = AstrologicalSubject(\"Jane\", 1991, 10, 25, 21, 00, \"Roma\")\n\nname = SynastryAspects(first, second)\naspect_list = name.get_relevant_aspects()\nprint(aspect_list[0])\n\n#> Generating kerykeion object for Jack...\n#> Generating kerykeion object for Jane...\n#> {'p1_name': 'Sun', 'p1_abs_pos': 84.17867971515636, 'p2_name': 'Sun', 'p2_abs_pos': 211.90472999502984, 'aspect': 'trine', 'orbit': 7.726050279873476, 'aspect_degrees': 120, 'color': '#36d100', 'aid': 6, 'diff': 127.72605027987348, 'p1': 0, 'p2': 0}\n\n```\n\n## Documentation\n\nMost of the functions and the classes are self documented by the types and have docstrings.\nAn auto-generated documentation [is available here](https://g-battaglia.github.io/kerykeion).\n\nSooner or later I'll try to write an extensive documentation.\n\n## Development\n\nYou can clone this repository or download a zip file using the right side buttons.\n\n## Contributing\n\nFeel free to contribute to the code!\n\n## License\n\nThis project is licensed under the AGPL-3.0 License.\nTo understand how this impacts your use of the software, please see the [LICENSE](LICENSE) file for details.\nIf you have questions, you can reach out to me at my [email](mailto:battaglia.giacomo@yahoo.it?subject=Kerykeion) address.\nAs a rule of thumb, if you are using this library in a project, you should open source the code of the project with a compatible license.\n\nYou can implement the logic of kerkeion in your project and also keep it closed source by using a third party API, like the [AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/). The AstrologerAPI is AGPL-3.0 compliant. Subscribing to the API is also, currently, the best way to support the project.\n",
    "bugtrack_url": null,
    "license": "AGPL-3.0",
    "summary": "A python library for astrology.",
    "version": "4.4.2",
    "project_urls": {
        "Homepage": "https://github.com/g-battaglia/kerykeion",
        "Repository": "https://github.com/g-battaglia/kerykeion"
    },
    "split_keywords": [
        "astrology",
        " ephemeris",
        " astrology library",
        " birtchart",
        " svg",
        " zodiac",
        " zodiac-sing",
        " astronomical-algorithms",
        " synastry",
        " astrology-calculator"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5dc74afa83cba7de36b818e1435aefe796339a6876cd3798afdbd85280a5d8f4",
                "md5": "2d6b75d208cb2e603e436ea3a12cee9f",
                "sha256": "f16defbea693341d6ec8e6a621690961042e00bccd6171758e96d7024fd68be6"
            },
            "downloads": -1,
            "filename": "kerykeion-4.4.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2d6b75d208cb2e603e436ea3a12cee9f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.9",
            "size": 303896,
            "upload_time": "2024-03-25T11:28:32",
            "upload_time_iso_8601": "2024-03-25T11:28:32.739953Z",
            "url": "https://files.pythonhosted.org/packages/5d/c7/4afa83cba7de36b818e1435aefe796339a6876cd3798afdbd85280a5d8f4/kerykeion-4.4.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8027b1b1fdb35924facaf531b89c0e45ea6db3c10d98206f9b5ca5fc8f98bb8",
                "md5": "225a487fcb7bd383de634400409136a9",
                "sha256": "653f5c7ddf822bd692b698daa86824751fd00329b37d794fee2b81610d974cad"
            },
            "downloads": -1,
            "filename": "kerykeion-4.4.2.tar.gz",
            "has_sig": false,
            "md5_digest": "225a487fcb7bd383de634400409136a9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 289218,
            "upload_time": "2024-03-25T11:28:35",
            "upload_time_iso_8601": "2024-03-25T11:28:35.032604Z",
            "url": "https://files.pythonhosted.org/packages/b8/02/7b1b1fdb35924facaf531b89c0e45ea6db3c10d98206f9b5ca5fc8f98bb8/kerykeion-4.4.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-25 11:28:35",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "g-battaglia",
    "github_project": "kerykeion",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "kerykeion"
}
        
Elapsed time: 0.21362s