natal


Namenatal JSON
Version 0.7.6 PyPI version JSON
download
home_pagehttps://github.com/hoishing/natal
Summarycreate Natal Chart with ease
upload_time2024-11-13 17:47:55
maintainerNone
docs_urlNone
authorKelvin Ng
requires_python<4.0,>=3.12
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Natal

[![ci-badge]][ci-url] [![pypi-badge]][pypi-url] [![MIT-badge]][MIT-url] [![black-badge]][black-url]

> create Natal Chart with ease

## Features

- SVG natal chart generation in pure python
- composite chart (transit/synastry/sun return ... etc) generation
- highly configurable
    - all planets, asteroids, vertices can be enabled / disabled
    - orbs for each aspect
    - light, dark, or mono theme
    - light / dark theme color definitions
    - chart stroke, opacity, font, spacing between planets ...etc
- high precision astrological data with [Swiss Ephemeris]
- timezone, latitude and longitude database from [GeoNames]
    - auto aware of daylight saving for a given time and location
- natal chart data statistics
    - element, quality, and polarity counts
    - planets in each houses
    - quadrant and hemisphere distribution
    - aspect pair counts
    - composite chart aspects
    - aspects cross reference table
    - generate report in markdown or html
- thoroughly tested with `pytest`

## Sample Charts

- default dark theme

<img src="https://bit.ly/4eufbuW" width=600/>

- default light theme

<img src="https://bit.ly/3MT86Zl" width=600/>

- mono theme

<img src="https://bit.ly/3ZygoNw" width=600/>

[Swiss Ephemeris]: https://www.astro.com/swisseph/swephinfo_e.htm
[GeoNames]: https://www.geonames.org

## Quick Start

- installation

`pip install natal`

- generate a chart

```python
from natal import Data, Chart

# create chart data object
mimi = Data(
  name = "MiMi",
  city = "Taipei",
  dt = "1980-04-20 14:30"
)

# return natal chart in SVG string
Chart(mimi, width=600).svg

# create transit data object
current = Data(
  name = "Current",
  city = "Taipei",
  dt = datetime.now()
)

# create a transit chart
transit_chart = Chart(
    data1=mimi, 
    data2=current, 
    width=600
)

# view the composite chart in jupyter notebook
from IPython.display import HTML

HTML(transit_chart.svg)
```

following SVG chart will be produced:

<img src="https://bit.ly/3MX7H8e" width=600/>

## Data Object

```python
## -- retrieve natal chart properties -- ##

mimi.planets     # list[Planet]
mimi.houses      # list[House]
mimi.extras      # list[Extra]
mimi.vertices    # list[Vertex]
mimi.signs       # list[Sign]
mimi.aspects     # list[Aspect]
mimi.quadrants   # list[list[Aspectable]]

# Planet object 
sun = mimi.planets[0]

sun.degree # 30.33039116987769
sun.normalized_degree # 230.62043431588035 # degree relative to Asc
sun.color # fire
sun.speed # 0.9761994105153413
sun.retro # False
sun.dms # 00°19'
sun.signed_dms # 00°♉19'
sun.signed_deg # 0
sun.sign.name # taurus
sun.sign.symbol # ♉
sun.sign.value # 2
sun.sign.color # earth
sun.sign.ruler # venus
sun.sign.classic_ruler # venus
sun.sign.element # earth
sun.sign.quality # fixed
sun.sign.polarity # negative

# Aspect object
aspect = mimi.aspects[0]

aspect.body1 # sun Planet obj 
aspect.body2 # mars Planet obj
aspect.aspect_member # AspectMember(name='trine', symbol='△', value=120, color='air')
aspect.applying # False
aspect.orb # 3.3424
```

## Stats

- statistics of Data object in tabular form

```python
from natal import Data, Stats

mimi = Data(
    name = "MiMi",
    city = "Taipei",
    dt = "1980-04-20 14:30"
)

transit = Data(
    name = "Transit",
    city = "Taipei",
    dt = "2024-10-10 12:00"
)

stats = Stats(data1=mimi, data2=transit)

print(stats.full_report(kind="markdown"))
```

- following markdown report will be produced:

```markdown
# Element Distribution (MiMi)

| element   |  count  | bodies                                       |
|-----------|---------|----------------------------------------------|
| earth     |    4    | sun ♉, jupiter ♍, saturn ♍, asc ♍        |
| water     |    2    | moon ♋, uranus ♏                           |
| fire      |    4    | mercury ♈, mars ♌, neptune ♐, asc_node ♌ |
| air       |    3    | venus ♊, pluto ♎, mc ♊                    |


# Quality Distribution (MiMi)

| quality   |  count  | bodies                                                     |
|-----------|---------|------------------------------------------------------------|
| fixed     |    4    | sun ♉, mars ♌, uranus ♏, asc_node ♌                    |
| cardinal  |    3    | moon ♋, mercury ♈, pluto ♎                              |
| mutable   |    6    | venus ♊, jupiter ♍, saturn ♍, neptune ♐, asc ♍, mc ♊ |


# Polarity Distribution (MiMi)

| polarity   |  count  | bodies                                                                  |
|------------|---------|-------------------------------------------------------------------------|
| negative   |    6    | sun ♉, moon ♋, jupiter ♍, saturn ♍, uranus ♏, asc ♍               |
| positive   |    7    | mercury ♈, venus ♊, mars ♌, neptune ♐, pluto ♎, asc_node ♌, mc ♊ |


# Celestial Bodies (MiMi)

| body     | sign      |  house  |
|----------|-----------|---------|
| sun      | 00°♉19'  |    8    |
| moon     | 08°♋29'  |   10    |
| mercury  | 08°♈28'  |    8    |
| venus    | 15°♊12'  |   10    |
| mars     | 26°♌59'  |   12    |
| jupiter  | 00°♍17'℞ |   12    |
| saturn   | 21°♍03'℞ |    1    |
| uranus   | 24°♏31'℞ |    3    |
| neptune  | 22°♐29'℞ |    4    |
| pluto    | 20°♎06'℞ |    2    |
| asc_node | 26°♌03'℞ |   12    |
| asc      | 09°♍42'  |    1    |
| mc       | 09°♊13'  |   10    |


# Houses (MiMi)

|  house  | sign     | ruler   | ruler sign   |  ruler house  |
|---------|----------|---------|--------------|---------------|
|    1    | 09°♍41' | mercury | ♈           |       8       |
|    2    | 07°♎13' | venus   | ♊           |      10       |
|    3    | 07°♏38' | pluto   | ♎           |       2       |
|    4    | 09°♐13' | jupiter | ♍           |      12       |
|    5    | 10°♑25' | saturn  | ♍           |       1       |
|    6    | 10°♒44' | uranus  | ♏           |       3       |
|    7    | 09°♓41' | neptune | ♐           |       4       |
|    8    | 07°♈13' | mars    | ♌           |      12       |
|    9    | 07°♉38' | venus   | ♊           |      10       |
|   10    | 09°♊13' | mercury | ♈           |       8       |
|   11    | 10°♋25' | moon    | ♋           |      10       |
|   12    | 10°♌44' | sun     | ♉           |       8       |


# Quadrants (MiMi)

| quadrant   |  count  | bodies                               |
|------------|---------|--------------------------------------|
| 1st ◵      |    3    | saturn, uranus, pluto                |
| 2nd ◶      |    1    | neptune                              |
| 3rd ◷      |    2    | sun, mercury                         |
| 4th ◴      |    5    | moon, venus, mars, jupiter, asc_node |


# Hemispheres (MiMi)

| hemisphere   |  count  | bodies                                                      |
|--------------|---------|-------------------------------------------------------------|
| ←            |    8    | saturn, uranus, pluto, moon, venus, mars, jupiter, asc_node |
| →            |    3    | neptune, sun, mercury                                       |
| ↑            |    7    | sun, mercury, moon, venus, mars, jupiter, asc_node          |
| ↓            |    4    | saturn, uranus, pluto, neptune                              |


# Celestial Bodies of Transit in MiMi's chart

| Transit   | sign      |  house  |
|-----------|-----------|---------|
| sun       | 17°♎20'  |    2    |
| moon      | 09°♑49'  |    4    |
| mercury   | 24°♎04'  |    2    |
| venus     | 20°♏44'  |    3    |
| mars      | 19°♋29'  |   11    |
| jupiter   | 21°♊20'℞ |   10    |
| saturn    | 13°♓47'℞ |    7    |
| uranus    | 26°♉39'℞ |    9    |
| neptune   | 27°♓59'℞ |    7    |
| pluto     | 29°♑38'℞ |    5    |
| asc_node  | 05°♈52'℞ |    7    |
| asc       | 08°♑29'  |    4    |
| mc        | 22°♎28'  |    2    |


# Aspects of Transit vs MiMi

| Transit   |  aspect  | MiMi     |  phase  | orb    |
|-----------|----------|----------|---------|--------|
| sun       |    △     | venus    |   ← →   | 2° 08' |
| sun       |    ☌     | pluto    |   → ←   | 2° 46' |
| moon      |    ☍     | moon     |   → ←   | 1° 20' |
| moon      |    □     | mercury  |   ← →   | 1° 21' |
| moon      |    △     | asc      |   ← →   | 0° 07' |
| mercury   |    ⚹     | mars     |   → ←   | 2° 55' |
| mercury   |    ⚹     | neptune  |   ← →   | 1° 35' |
| mercury   |    ☌     | pluto    |   ← →   | 3° 58' |
| mercury   |    ⚹     | asc_node |   → ←   | 1° 59' |
| venus     |    ⚹     | saturn   |   → ←   | 0° 19' |
| venus     |    ☌     | uranus   |   → ←   | 3° 47' |
| venus     |    □     | asc_node |   → ←   | 5° 19' |
| mars      |    ⚹     | saturn   |   → ←   | 1° 34' |
| mars      |    △     | uranus   |   → ←   | 5° 02' |
| mars      |    □     | pluto    |   → ←   | 0° 38' |
| jupiter   |    ☌     | venus    |   → ←   | 6° 08' |
| jupiter   |    □     | saturn   |   ← →   | 0° 17' |
| jupiter   |    ☍     | neptune  |   → ←   | 1° 09' |
| jupiter   |    △     | pluto    |   ← →   | 1° 13' |
| jupiter   |    ⚹     | asc_node |   → ←   | 4° 43' |
| saturn    |    △     | moon     |   → ←   | 5° 18' |
| saturn    |    □     | venus    |   ← →   | 1° 25' |
| saturn    |    ☍     | asc      |   → ←   | 4° 05' |
| saturn    |    □     | mc       |   → ←   | 4° 34' |
| uranus    |    □     | mars     |   ← →   | 0° 20' |
| uranus    |    □     | jupiter  |   ← →   | 3° 38' |
| uranus    |    △     | saturn   |   ← →   | 5° 36' |
| uranus    |    ☍     | uranus   |   ← →   | 2° 08' |
| uranus    |    □     | asc_node |   ← →   | 0° 36' |
| neptune   |    △     | uranus   |   ← →   | 3° 28' |
| neptune   |    □     | neptune  |   → ←   | 5° 31' |
| pluto     |    □     | sun      |   ← →   | 0° 41' |
| asc_node  |    □     | moon     |   ← →   | 2° 36' |
| asc_node  |    ☌     | mercury  |   ← →   | 2° 35' |
| asc_node  |    ⚹     | mc       |   ← →   | 3° 20' |
| asc       |    ☍     | moon     |   → ←   | 0° 01' |
| asc       |    □     | mercury  |   → ←   | 0° 02' |
| asc       |    △     | asc      |   → ←   | 1° 13' |
| mc        |    ⚹     | mars     |   ← →   | 4° 31' |
| mc        |    ⚹     | neptune  |   → ←   | 0° 01' |
| mc        |    ☌     | pluto    |   ← →   | 2° 22' |
| mc        |    ⚹     | asc_node |   → ←   | 3° 35' |


# Aspect Cross Reference of Transit(cols) vs MiMi(rows)

|     |  ☉  |  ☽  |  ☿  |  ♀  |  ♂  |  ♃  |  ♄  |  ♅  |  ♆  |  ♇  |  ☊  |  Asc  |  MC  |  Total  |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-------|------|---------|
|  ☉  |     |     |     |     |     |     |     |     |     |  □  |     |       |      |    1    |
|  ☽  |     |  ☍  |     |     |     |     |  △  |     |     |     |  □  |   ☍   |      |    4    |
|  ☿  |     |  □  |     |     |     |     |     |     |     |     |  ☌  |   □   |      |    3    |
|  ♀  |  △  |     |     |     |     |  ☌  |  □  |     |     |     |     |       |      |    3    |
|  ♂  |     |     |  ⚹  |     |     |     |     |  □  |     |     |     |       |  ⚹   |    3    |
|  ♃  |     |     |     |     |     |     |     |  □  |     |     |     |       |      |    1    |
|  ♄  |     |     |     |  ⚹  |  ⚹  |  □  |     |  △  |     |     |     |       |      |    4    |
|  ♅  |     |     |     |  ☌  |  △  |     |     |  ☍  |  △  |     |     |       |      |    4    |
|  ♆  |     |     |  ⚹  |     |     |  ☍  |     |     |  □  |     |     |       |  ⚹   |    4    |
|  ♇  |  ☌  |     |  ☌  |     |  □  |  △  |     |     |     |     |     |       |  ☌   |    5    |
|  ☊  |     |     |  ⚹  |  □  |     |  ⚹  |     |  □  |     |     |     |       |  ⚹   |    5    |
| Asc |     |  △  |     |     |     |     |  ☍  |     |     |     |     |   △   |      |    3    |
| MC  |     |     |     |     |     |     |  □  |     |     |     |  ⚹  |       |      |    2    |
```

- see [demo.ipynb] for the HTML output

## Configuration

- create a `Config` object and assign it to `Data` object
- it will override the default settings in `config.py`
- a sample config as follow:

```py
from natal.config import Display, Config, Orb

# adjust which celestial bodies to display
display = Display(
    mc = False,
    asc_node = False,
    chiron = True
)

# adjust orbs for each aspect
orb = Orb(
    conjunction = 8,
    opposition = 8,
    trine = 6,
    square = 6,
    sextile = 6
)

# the complete config object
config = Config(
    theme_type = "light", # or "dark", "mono"
    display = display,
    orb = orb
)

# create data object with the config
data = Data(
    name = "MiMi",
    city = "Taipei",
    dt = "1980-04-20 14:30",
    config = config,
)
```

read the [docs] for complete references

[docs]: https://hoishing.github.io/natal

## Tech Stack

- [tagit] for creating and manipulating SVG
- [pyswisseph] python extension to the Swiss Ephemeris
- [mkdocs-material] for docs site generation

[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg
[black-url]: https://github.com/psf/black
[ci-badge]: https://github.com/hoishing/natal/actions/workflows/ci.yml/badge.svg
[ci-url]: https://github.com/hoishing/natal/actions/workflows/ci.yml
[demo.ipynb]: https://github.com/hoishing/natal/blob/main/demo.ipynb
[MIT-badge]: https://img.shields.io/github/license/hoishing/natal
[MIT-url]: https://opensource.org/licenses/MIT
[mkdocs-material]: https://github.com/squidfunk/mkdocs-material
[tagit]: https://github.com/hoishing/tagit
[pypi-badge]: https://img.shields.io/pypi/v/natal
[pypi-url]: https://pypi.org/project/natal
[pyswisseph]: https://github.com/astrorigin/pyswisseph

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hoishing/natal",
    "name": "natal",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.12",
    "maintainer_email": null,
    "keywords": null,
    "author": "Kelvin Ng",
    "author_email": "hoishing@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/1d/1b/480ba05ffefbb0d410654f51d0272588745cf012ea2b85af871fcbdd81d7/natal-0.7.6.tar.gz",
    "platform": null,
    "description": "# Natal\n\n[![ci-badge]][ci-url] [![pypi-badge]][pypi-url] [![MIT-badge]][MIT-url] [![black-badge]][black-url]\n\n> create Natal Chart with ease\n\n## Features\n\n- SVG natal chart generation in pure python\n- composite chart (transit/synastry/sun return ... etc) generation\n- highly configurable\n    - all planets, asteroids, vertices can be enabled / disabled\n    - orbs for each aspect\n    - light, dark, or mono theme\n    - light / dark theme color definitions\n    - chart stroke, opacity, font, spacing between planets ...etc\n- high precision astrological data with [Swiss Ephemeris]\n- timezone, latitude and longitude database from [GeoNames]\n    - auto aware of daylight saving for a given time and location\n- natal chart data statistics\n    - element, quality, and polarity counts\n    - planets in each houses\n    - quadrant and hemisphere distribution\n    - aspect pair counts\n    - composite chart aspects\n    - aspects cross reference table\n    - generate report in markdown or html\n- thoroughly tested with `pytest`\n\n## Sample Charts\n\n- default dark theme\n\n<img src=\"https://bit.ly/4eufbuW\" width=600/>\n\n- default light theme\n\n<img src=\"https://bit.ly/3MT86Zl\" width=600/>\n\n- mono theme\n\n<img src=\"https://bit.ly/3ZygoNw\" width=600/>\n\n[Swiss Ephemeris]: https://www.astro.com/swisseph/swephinfo_e.htm\n[GeoNames]: https://www.geonames.org\n\n## Quick Start\n\n- installation\n\n`pip install natal`\n\n- generate a chart\n\n```python\nfrom natal import Data, Chart\n\n# create chart data object\nmimi = Data(\n  name = \"MiMi\",\n  city = \"Taipei\",\n  dt = \"1980-04-20 14:30\"\n)\n\n# return natal chart in SVG string\nChart(mimi, width=600).svg\n\n# create transit data object\ncurrent = Data(\n  name = \"Current\",\n  city = \"Taipei\",\n  dt = datetime.now()\n)\n\n# create a transit chart\ntransit_chart = Chart(\n    data1=mimi, \n    data2=current, \n    width=600\n)\n\n# view the composite chart in jupyter notebook\nfrom IPython.display import HTML\n\nHTML(transit_chart.svg)\n```\n\nfollowing SVG chart will be produced:\n\n<img src=\"https://bit.ly/3MX7H8e\" width=600/>\n\n## Data Object\n\n```python\n## -- retrieve natal chart properties -- ##\n\nmimi.planets     # list[Planet]\nmimi.houses      # list[House]\nmimi.extras      # list[Extra]\nmimi.vertices    # list[Vertex]\nmimi.signs       # list[Sign]\nmimi.aspects     # list[Aspect]\nmimi.quadrants   # list[list[Aspectable]]\n\n# Planet object \nsun = mimi.planets[0]\n\nsun.degree # 30.33039116987769\nsun.normalized_degree # 230.62043431588035 # degree relative to Asc\nsun.color # fire\nsun.speed # 0.9761994105153413\nsun.retro # False\nsun.dms # 00\u00b019'\nsun.signed_dms # 00\u00b0\u264919'\nsun.signed_deg # 0\nsun.sign.name # taurus\nsun.sign.symbol # \u2649\nsun.sign.value # 2\nsun.sign.color # earth\nsun.sign.ruler # venus\nsun.sign.classic_ruler # venus\nsun.sign.element # earth\nsun.sign.quality # fixed\nsun.sign.polarity # negative\n\n# Aspect object\naspect = mimi.aspects[0]\n\naspect.body1 # sun Planet obj \naspect.body2 # mars Planet obj\naspect.aspect_member # AspectMember(name='trine', symbol='\u25b3', value=120, color='air')\naspect.applying # False\naspect.orb # 3.3424\n```\n\n## Stats\n\n- statistics of Data object in tabular form\n\n```python\nfrom natal import Data, Stats\n\nmimi = Data(\n    name = \"MiMi\",\n    city = \"Taipei\",\n    dt = \"1980-04-20 14:30\"\n)\n\ntransit = Data(\n    name = \"Transit\",\n    city = \"Taipei\",\n    dt = \"2024-10-10 12:00\"\n)\n\nstats = Stats(data1=mimi, data2=transit)\n\nprint(stats.full_report(kind=\"markdown\"))\n```\n\n- following markdown report will be produced:\n\n```markdown\n# Element Distribution (MiMi)\n\n| element   |  count  | bodies                                       |\n|-----------|---------|----------------------------------------------|\n| earth     |    4    | sun \u2649, jupiter \u264d, saturn \u264d, asc \u264d        |\n| water     |    2    | moon \u264b, uranus \u264f                           |\n| fire      |    4    | mercury \u2648, mars \u264c, neptune \u2650, asc_node \u264c |\n| air       |    3    | venus \u264a, pluto \u264e, mc \u264a                    |\n\n\n# Quality Distribution (MiMi)\n\n| quality   |  count  | bodies                                                     |\n|-----------|---------|------------------------------------------------------------|\n| fixed     |    4    | sun \u2649, mars \u264c, uranus \u264f, asc_node \u264c                    |\n| cardinal  |    3    | moon \u264b, mercury \u2648, pluto \u264e                              |\n| mutable   |    6    | venus \u264a, jupiter \u264d, saturn \u264d, neptune \u2650, asc \u264d, mc \u264a |\n\n\n# Polarity Distribution (MiMi)\n\n| polarity   |  count  | bodies                                                                  |\n|------------|---------|-------------------------------------------------------------------------|\n| negative   |    6    | sun \u2649, moon \u264b, jupiter \u264d, saturn \u264d, uranus \u264f, asc \u264d               |\n| positive   |    7    | mercury \u2648, venus \u264a, mars \u264c, neptune \u2650, pluto \u264e, asc_node \u264c, mc \u264a |\n\n\n# Celestial Bodies (MiMi)\n\n| body     | sign      |  house  |\n|----------|-----------|---------|\n| sun      | 00\u00b0\u264919'  |    8    |\n| moon     | 08\u00b0\u264b29'  |   10    |\n| mercury  | 08\u00b0\u264828'  |    8    |\n| venus    | 15\u00b0\u264a12'  |   10    |\n| mars     | 26\u00b0\u264c59'  |   12    |\n| jupiter  | 00\u00b0\u264d17'\u211e |   12    |\n| saturn   | 21\u00b0\u264d03'\u211e |    1    |\n| uranus   | 24\u00b0\u264f31'\u211e |    3    |\n| neptune  | 22\u00b0\u265029'\u211e |    4    |\n| pluto    | 20\u00b0\u264e06'\u211e |    2    |\n| asc_node | 26\u00b0\u264c03'\u211e |   12    |\n| asc      | 09\u00b0\u264d42'  |    1    |\n| mc       | 09\u00b0\u264a13'  |   10    |\n\n\n# Houses (MiMi)\n\n|  house  | sign     | ruler   | ruler sign   |  ruler house  |\n|---------|----------|---------|--------------|---------------|\n|    1    | 09\u00b0\u264d41' | mercury | \u2648           |       8       |\n|    2    | 07\u00b0\u264e13' | venus   | \u264a           |      10       |\n|    3    | 07\u00b0\u264f38' | pluto   | \u264e           |       2       |\n|    4    | 09\u00b0\u265013' | jupiter | \u264d           |      12       |\n|    5    | 10\u00b0\u265125' | saturn  | \u264d           |       1       |\n|    6    | 10\u00b0\u265244' | uranus  | \u264f           |       3       |\n|    7    | 09\u00b0\u265341' | neptune | \u2650           |       4       |\n|    8    | 07\u00b0\u264813' | mars    | \u264c           |      12       |\n|    9    | 07\u00b0\u264938' | venus   | \u264a           |      10       |\n|   10    | 09\u00b0\u264a13' | mercury | \u2648           |       8       |\n|   11    | 10\u00b0\u264b25' | moon    | \u264b           |      10       |\n|   12    | 10\u00b0\u264c44' | sun     | \u2649           |       8       |\n\n\n# Quadrants (MiMi)\n\n| quadrant   |  count  | bodies                               |\n|------------|---------|--------------------------------------|\n| 1st \u25f5      |    3    | saturn, uranus, pluto                |\n| 2nd \u25f6      |    1    | neptune                              |\n| 3rd \u25f7      |    2    | sun, mercury                         |\n| 4th \u25f4      |    5    | moon, venus, mars, jupiter, asc_node |\n\n\n# Hemispheres (MiMi)\n\n| hemisphere   |  count  | bodies                                                      |\n|--------------|---------|-------------------------------------------------------------|\n| \u2190            |    8    | saturn, uranus, pluto, moon, venus, mars, jupiter, asc_node |\n| \u2192            |    3    | neptune, sun, mercury                                       |\n| \u2191            |    7    | sun, mercury, moon, venus, mars, jupiter, asc_node          |\n| \u2193            |    4    | saturn, uranus, pluto, neptune                              |\n\n\n# Celestial Bodies of Transit in MiMi's chart\n\n| Transit   | sign      |  house  |\n|-----------|-----------|---------|\n| sun       | 17\u00b0\u264e20'  |    2    |\n| moon      | 09\u00b0\u265149'  |    4    |\n| mercury   | 24\u00b0\u264e04'  |    2    |\n| venus     | 20\u00b0\u264f44'  |    3    |\n| mars      | 19\u00b0\u264b29'  |   11    |\n| jupiter   | 21\u00b0\u264a20'\u211e |   10    |\n| saturn    | 13\u00b0\u265347'\u211e |    7    |\n| uranus    | 26\u00b0\u264939'\u211e |    9    |\n| neptune   | 27\u00b0\u265359'\u211e |    7    |\n| pluto     | 29\u00b0\u265138'\u211e |    5    |\n| asc_node  | 05\u00b0\u264852'\u211e |    7    |\n| asc       | 08\u00b0\u265129'  |    4    |\n| mc        | 22\u00b0\u264e28'  |    2    |\n\n\n# Aspects of Transit vs MiMi\n\n| Transit   |  aspect  | MiMi     |  phase  | orb    |\n|-----------|----------|----------|---------|--------|\n| sun       |    \u25b3     | venus    |   \u2190 \u2192   | 2\u00b0 08' |\n| sun       |    \u260c     | pluto    |   \u2192 \u2190   | 2\u00b0 46' |\n| moon      |    \u260d     | moon     |   \u2192 \u2190   | 1\u00b0 20' |\n| moon      |    \u25a1     | mercury  |   \u2190 \u2192   | 1\u00b0 21' |\n| moon      |    \u25b3     | asc      |   \u2190 \u2192   | 0\u00b0 07' |\n| mercury   |    \u26b9     | mars     |   \u2192 \u2190   | 2\u00b0 55' |\n| mercury   |    \u26b9     | neptune  |   \u2190 \u2192   | 1\u00b0 35' |\n| mercury   |    \u260c     | pluto    |   \u2190 \u2192   | 3\u00b0 58' |\n| mercury   |    \u26b9     | asc_node |   \u2192 \u2190   | 1\u00b0 59' |\n| venus     |    \u26b9     | saturn   |   \u2192 \u2190   | 0\u00b0 19' |\n| venus     |    \u260c     | uranus   |   \u2192 \u2190   | 3\u00b0 47' |\n| venus     |    \u25a1     | asc_node |   \u2192 \u2190   | 5\u00b0 19' |\n| mars      |    \u26b9     | saturn   |   \u2192 \u2190   | 1\u00b0 34' |\n| mars      |    \u25b3     | uranus   |   \u2192 \u2190   | 5\u00b0 02' |\n| mars      |    \u25a1     | pluto    |   \u2192 \u2190   | 0\u00b0 38' |\n| jupiter   |    \u260c     | venus    |   \u2192 \u2190   | 6\u00b0 08' |\n| jupiter   |    \u25a1     | saturn   |   \u2190 \u2192   | 0\u00b0 17' |\n| jupiter   |    \u260d     | neptune  |   \u2192 \u2190   | 1\u00b0 09' |\n| jupiter   |    \u25b3     | pluto    |   \u2190 \u2192   | 1\u00b0 13' |\n| jupiter   |    \u26b9     | asc_node |   \u2192 \u2190   | 4\u00b0 43' |\n| saturn    |    \u25b3     | moon     |   \u2192 \u2190   | 5\u00b0 18' |\n| saturn    |    \u25a1     | venus    |   \u2190 \u2192   | 1\u00b0 25' |\n| saturn    |    \u260d     | asc      |   \u2192 \u2190   | 4\u00b0 05' |\n| saturn    |    \u25a1     | mc       |   \u2192 \u2190   | 4\u00b0 34' |\n| uranus    |    \u25a1     | mars     |   \u2190 \u2192   | 0\u00b0 20' |\n| uranus    |    \u25a1     | jupiter  |   \u2190 \u2192   | 3\u00b0 38' |\n| uranus    |    \u25b3     | saturn   |   \u2190 \u2192   | 5\u00b0 36' |\n| uranus    |    \u260d     | uranus   |   \u2190 \u2192   | 2\u00b0 08' |\n| uranus    |    \u25a1     | asc_node |   \u2190 \u2192   | 0\u00b0 36' |\n| neptune   |    \u25b3     | uranus   |   \u2190 \u2192   | 3\u00b0 28' |\n| neptune   |    \u25a1     | neptune  |   \u2192 \u2190   | 5\u00b0 31' |\n| pluto     |    \u25a1     | sun      |   \u2190 \u2192   | 0\u00b0 41' |\n| asc_node  |    \u25a1     | moon     |   \u2190 \u2192   | 2\u00b0 36' |\n| asc_node  |    \u260c     | mercury  |   \u2190 \u2192   | 2\u00b0 35' |\n| asc_node  |    \u26b9     | mc       |   \u2190 \u2192   | 3\u00b0 20' |\n| asc       |    \u260d     | moon     |   \u2192 \u2190   | 0\u00b0 01' |\n| asc       |    \u25a1     | mercury  |   \u2192 \u2190   | 0\u00b0 02' |\n| asc       |    \u25b3     | asc      |   \u2192 \u2190   | 1\u00b0 13' |\n| mc        |    \u26b9     | mars     |   \u2190 \u2192   | 4\u00b0 31' |\n| mc        |    \u26b9     | neptune  |   \u2192 \u2190   | 0\u00b0 01' |\n| mc        |    \u260c     | pluto    |   \u2190 \u2192   | 2\u00b0 22' |\n| mc        |    \u26b9     | asc_node |   \u2192 \u2190   | 3\u00b0 35' |\n\n\n# Aspect Cross Reference of Transit(cols) vs MiMi(rows)\n\n|     |  \u2609  |  \u263d  |  \u263f  |  \u2640  |  \u2642  |  \u2643  |  \u2644  |  \u2645  |  \u2646  |  \u2647  |  \u260a  |  Asc  |  MC  |  Total  |\n|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-------|------|---------|\n|  \u2609  |     |     |     |     |     |     |     |     |     |  \u25a1  |     |       |      |    1    |\n|  \u263d  |     |  \u260d  |     |     |     |     |  \u25b3  |     |     |     |  \u25a1  |   \u260d   |      |    4    |\n|  \u263f  |     |  \u25a1  |     |     |     |     |     |     |     |     |  \u260c  |   \u25a1   |      |    3    |\n|  \u2640  |  \u25b3  |     |     |     |     |  \u260c  |  \u25a1  |     |     |     |     |       |      |    3    |\n|  \u2642  |     |     |  \u26b9  |     |     |     |     |  \u25a1  |     |     |     |       |  \u26b9   |    3    |\n|  \u2643  |     |     |     |     |     |     |     |  \u25a1  |     |     |     |       |      |    1    |\n|  \u2644  |     |     |     |  \u26b9  |  \u26b9  |  \u25a1  |     |  \u25b3  |     |     |     |       |      |    4    |\n|  \u2645  |     |     |     |  \u260c  |  \u25b3  |     |     |  \u260d  |  \u25b3  |     |     |       |      |    4    |\n|  \u2646  |     |     |  \u26b9  |     |     |  \u260d  |     |     |  \u25a1  |     |     |       |  \u26b9   |    4    |\n|  \u2647  |  \u260c  |     |  \u260c  |     |  \u25a1  |  \u25b3  |     |     |     |     |     |       |  \u260c   |    5    |\n|  \u260a  |     |     |  \u26b9  |  \u25a1  |     |  \u26b9  |     |  \u25a1  |     |     |     |       |  \u26b9   |    5    |\n| Asc |     |  \u25b3  |     |     |     |     |  \u260d  |     |     |     |     |   \u25b3   |      |    3    |\n| MC  |     |     |     |     |     |     |  \u25a1  |     |     |     |  \u26b9  |       |      |    2    |\n```\n\n- see [demo.ipynb] for the HTML output\n\n## Configuration\n\n- create a `Config` object and assign it to `Data` object\n- it will override the default settings in `config.py`\n- a sample config as follow:\n\n```py\nfrom natal.config import Display, Config, Orb\n\n# adjust which celestial bodies to display\ndisplay = Display(\n    mc = False,\n    asc_node = False,\n    chiron = True\n)\n\n# adjust orbs for each aspect\norb = Orb(\n    conjunction = 8,\n    opposition = 8,\n    trine = 6,\n    square = 6,\n    sextile = 6\n)\n\n# the complete config object\nconfig = Config(\n    theme_type = \"light\", # or \"dark\", \"mono\"\n    display = display,\n    orb = orb\n)\n\n# create data object with the config\ndata = Data(\n    name = \"MiMi\",\n    city = \"Taipei\",\n    dt = \"1980-04-20 14:30\",\n    config = config,\n)\n```\n\nread the [docs] for complete references\n\n[docs]: https://hoishing.github.io/natal\n\n## Tech Stack\n\n- [tagit] for creating and manipulating SVG\n- [pyswisseph] python extension to the Swiss Ephemeris\n- [mkdocs-material] for docs site generation\n\n[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg\n[black-url]: https://github.com/psf/black\n[ci-badge]: https://github.com/hoishing/natal/actions/workflows/ci.yml/badge.svg\n[ci-url]: https://github.com/hoishing/natal/actions/workflows/ci.yml\n[demo.ipynb]: https://github.com/hoishing/natal/blob/main/demo.ipynb\n[MIT-badge]: https://img.shields.io/github/license/hoishing/natal\n[MIT-url]: https://opensource.org/licenses/MIT\n[mkdocs-material]: https://github.com/squidfunk/mkdocs-material\n[tagit]: https://github.com/hoishing/tagit\n[pypi-badge]: https://img.shields.io/pypi/v/natal\n[pypi-url]: https://pypi.org/project/natal\n[pyswisseph]: https://github.com/astrorigin/pyswisseph\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "create Natal Chart with ease",
    "version": "0.7.6",
    "project_urls": {
        "Documentation": "https://hoishing.github.io/natal",
        "Homepage": "https://github.com/hoishing/natal",
        "Repository": "https://github.com/hoishing/natal"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98ef7cc1d425c02001bd517fd3bac95e08e7e9f8be715ed9b064accb155bab0c",
                "md5": "0fe8334f2ae3b5e1cf7796fe2716b9ba",
                "sha256": "91322b9d062088767f0dc2218f8d91b1e5fc469e99b0a0ef4a2d9adc6cc81e21"
            },
            "downloads": -1,
            "filename": "natal-0.7.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0fe8334f2ae3b5e1cf7796fe2716b9ba",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.12",
            "size": 1023475,
            "upload_time": "2024-11-13T17:47:53",
            "upload_time_iso_8601": "2024-11-13T17:47:53.057072Z",
            "url": "https://files.pythonhosted.org/packages/98/ef/7cc1d425c02001bd517fd3bac95e08e7e9f8be715ed9b064accb155bab0c/natal-0.7.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d1b480ba05ffefbb0d410654f51d0272588745cf012ea2b85af871fcbdd81d7",
                "md5": "011e8fa6c4d154e2a67a83b7287c9548",
                "sha256": "01dd9fe994b95f243e57c340e1927f6d482578dfdf57d90908deb9b29da8b9e6"
            },
            "downloads": -1,
            "filename": "natal-0.7.6.tar.gz",
            "has_sig": false,
            "md5_digest": "011e8fa6c4d154e2a67a83b7287c9548",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.12",
            "size": 1016714,
            "upload_time": "2024-11-13T17:47:55",
            "upload_time_iso_8601": "2024-11-13T17:47:55.199987Z",
            "url": "https://files.pythonhosted.org/packages/1d/1b/480ba05ffefbb0d410654f51d0272588745cf012ea2b85af871fcbdd81d7/natal-0.7.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-13 17:47:55",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hoishing",
    "github_project": "natal",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "natal"
}
        
Elapsed time: 0.41446s