natal


Namenatal JSON
Version 0.8.12 PyPI version JSON
download
home_pagehttps://github.com/hoishing/natal
Summarycreate Natal Chart with ease
upload_time2024-12-13 04:31:08
maintainerNone
docs_urlNone
authorKelvin Ng
requires_python<3.13,>=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, modality, 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/>

## 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
transit = Data(
    name="Transit",
    city="Taipei",
    dt="2024-01-01 13:30",
)

# create a transit chart
transit_chart = Chart(
    data1=mimi, 
    data2=transit, 
    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.modality # 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 Stats

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

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

- following markdown report will be produced:

```markdown
# Element Distribution (MiMi)

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


# Modality Distribution (MiMi)

| modality   |  sum  | 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   |  sum  | 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  | dignity   |
|----------|--------------|---------|-----------|
| sun      | 00° ♉ 19'   |    8    |           |
| moon     | 08° ♋ 29'   |   10    | domicile  |
| mercury  | 08° ♈ 28'   |    8    |           |
| venus    | 15° ♊ 12'   |   10    |           |
| mars     | 26° ♌ 59'   |   12    |           |
| jupiter  | 00° ♍ 17' ℞ |   12    | detriment |
| 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   |    cusp    | 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   |  sum  | bodies                               |
|------------|-------|--------------------------------------|
| 1st ◵      |   3   | saturn, uranus, pluto                |
| 2nd ◶      |   1   | neptune                              |
| 3rd ◷      |   2   | sun, mercury                         |
| 4th ◴      |   5   | moon, venus, mars, jupiter, asc_node |


# Hemispheres (MiMi)

| hemisphere   |  sum  | 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  | dignity   |
|-----------|--------------|---------|-----------|
| sun       | 10° ♑ 16'   |    4    |           |
| moon      | 08° ♍ 42'   |   12    |           |
| mercury   | 22° ♐ 14' ℞ |    4    | detriment |
| venus     | 02° ♐ 53'   |    3    |           |
| mars      | 27° ♐ 28'   |    4    |           |
| jupiter   | 05° ♉ 34'   |    8    |           |
| saturn    | 03° ♓ 15'   |    6    |           |
| uranus    | 19° ♉ 22' ℞ |    9    |           |
| neptune   | 25° ♓ 04'   |    7    |           |
| pluto     | 29° ♑ 21'   |    5    |           |
| asc_node  | 20° ♈ 51' ℞ |    8    |           |
| asc       | 14° ♉ 41'   |    9    |           |
| mc        | 02° ♒ 08'   |    5    |           |


# Aspects of Transit vs MiMi

| Transit   |  aspect  | MiMi     |  phase  | orb    |
|-----------|----------|----------|---------|--------|
| sun       |    ☍     | moon     |   → ←   | 1° 47' |
| sun       |    □     | mercury  |   → ←   | 1° 48' |
| sun       |    △     | asc      |   ← →   | 0° 34' |
| moon      |    ⚹     | moon     |   → ←   | 0° 13' |
| moon      |    ☌     | asc      |   → ←   | 1° 00' |
| moon      |    □     | mc       |   → ←   | 0° 31' |
| mercury   |    □     | saturn   |   → ←   | 1° 11' |
| mercury   |    ☌     | neptune  |   ← →   | 0° 15' |
| mars      |    △     | mars     |   ← →   | 0° 29' |
| mars      |    △     | asc_node |   ← →   | 1° 25' |
| uranus    |    △     | saturn   |   → ←   | 1° 41' |
| neptune   |    △     | uranus   |   ← →   | 0° 33' |
| pluto     |    □     | sun      |   ← →   | 0° 58' |
| asc_node  |    △     | neptune  |   ← →   | 1° 37' |
| asc_node  |    ☍     | pluto    |   → ←   | 0° 45' |
| mc        |    □     | sun      |   → ←   | 1° 49' |


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

|     |  ☉  |  ☽  |  ☿  |  ♀  |  ♂  |  ♃  |  ♄  |  ♅  |  ♆  |  ♇  |  ☊  |  Asc  |  MC  |  sum  |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-------|------|-------|
|  ☉  |     |     |     |     |     |     |     |     |     |  □  |     |       |  □   |   2   |
|  ☽  |  ☍  |  ⚹  |     |     |     |     |     |     |     |     |     |       |      |   2   |
|  ☿  |  □  |     |     |     |     |     |     |     |     |     |     |       |      |   1   |
|  ♀  |     |     |     |     |     |     |     |     |     |     |     |       |      |   0   |
|  ♂  |     |     |     |     |  △  |     |     |     |     |     |     |       |      |   1   |
|  ♃  |     |     |     |     |     |     |     |     |     |     |     |       |      |   0   |
|  ♄  |     |     |  □  |     |     |     |     |  △  |     |     |     |       |      |   2   |
|  ♅  |     |     |     |     |     |     |     |     |  △  |     |     |       |      |   1   |
|  ♆  |     |     |  ☌  |     |     |     |     |     |     |     |  △  |       |      |   2   |
|  ♇  |     |     |     |     |     |     |     |     |     |     |  ☍  |       |      |   1   |
|  ☊  |     |     |     |     |  △  |     |     |     |     |     |     |       |      |   1   |
| Asc |  △  |  ☌  |     |     |     |     |     |     |     |     |     |       |      |   2   |
| MC  |     |  □  |     |     |     |     |     |     |     |     |     |       |      |   1   |
```

- see [demo.ipynb] for the HTML output

## PDF Report

- generate PDF report as file-like object (BytesIO)

```python
from natal import Report

report = Report(data1=mimi, data2=transit)
html = report.full_report
report.create_pdf(html) # returns BytesIO
```

- see [demo_report_light.pdf] for light theme with Birth Chart
- see [demo_report_mono.pdf] for mono theme with Transit Chart

## 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

## Tech Stack

- [tagit]: SVG / HTML generation and manipulation
- [pyswisseph]: astrological data - Swiss Ephemeris
- [mkdocs-material]: docs site generation
- [weasyprint]: PDF generation (refer weasyprint docs for installing OS dependencies)

[black-badge]: https://img.shields.io/badge/formatter-Black-black
[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_report_light.pdf]: https://github.com/hoishing/natal/blob/main/demo_report_light.pdf
[demo_report_mono.pdf]: https://github.com/hoishing/natal/blob/main/demo_report_mono.pdf
[demo.ipynb]: https://github.com/hoishing/natal/blob/main/demo.ipynb
[docs]: https://hoishing.github.io/natal
[GeoNames]: https://www.geonames.org
[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
[pypi-badge]: https://img.shields.io/pypi/v/natal
[pypi-url]: https://pypi.org/project/natal
[pyswisseph]: https://github.com/astrorigin/pyswisseph
[Swiss Ephemeris]: https://www.astro.com/swisseph/swephinfo_e.htm
[tagit]: https://github.com/hoishing/tagit
[weasyprint]: https://weasyprint.org

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hoishing/natal",
    "name": "natal",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.12",
    "maintainer_email": null,
    "keywords": null,
    "author": "Kelvin Ng",
    "author_email": "hoishing@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/6d/3f/fad15058433302a5f4a27e2ec0c99a4160eec5cc3333077368545c06b236/natal-0.8.12.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, modality, 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## 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\ntransit = Data(\n    name=\"Transit\",\n    city=\"Taipei\",\n    dt=\"2024-01-01 13:30\",\n)\n\n# create a transit chart\ntransit_chart = Chart(\n    data1=mimi, \n    data2=transit, \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.modality # 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 Stats\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   |  sum  | 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# Modality Distribution (MiMi)\n\n| modality   |  sum  | 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   |  sum  | 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  | dignity   |\n|----------|--------------|---------|-----------|\n| sun      | 00\u00b0 \u2649 19'   |    8    |           |\n| moon     | 08\u00b0 \u264b 29'   |   10    | domicile  |\n| mercury  | 08\u00b0 \u2648 28'   |    8    |           |\n| venus    | 15\u00b0 \u264a 12'   |   10    |           |\n| mars     | 26\u00b0 \u264c 59'   |   12    |           |\n| jupiter  | 00\u00b0 \u264d 17' \u211e |   12    | detriment |\n| saturn   | 21\u00b0 \u264d 03' \u211e |    1    |           |\n| uranus   | 24\u00b0 \u264f 31' \u211e |    3    |           |\n| neptune  | 22\u00b0 \u2650 29' \u211e |    4    |           |\n| pluto    | 20\u00b0 \u264e 06' \u211e |    2    |           |\n| asc_node | 26\u00b0 \u264c 03' \u211e |   12    |           |\n| asc      | 09\u00b0 \u264d 42'   |    1    |           |\n| mc       | 09\u00b0 \u264a 13'   |   10    |           |\n\n\n# Houses (MiMi)\n\n| house   |    cusp    | ruler   |  ruler sign  |  ruler house  |\n|---------|------------|---------|--------------|---------------|\n| 1       | 09\u00b0 \u264d 41' | mercury |      \u2648      |       8       |\n| 2       | 07\u00b0 \u264e 13' | venus   |      \u264a      |      10       |\n| 3       | 07\u00b0 \u264f 38' | pluto   |      \u264e      |       2       |\n| 4       | 09\u00b0 \u2650 13' | jupiter |      \u264d      |      12       |\n| 5       | 10\u00b0 \u2651 25' | saturn  |      \u264d      |       1       |\n| 6       | 10\u00b0 \u2652 44' | uranus  |      \u264f      |       3       |\n| 7       | 09\u00b0 \u2653 41' | neptune |      \u2650      |       4       |\n| 8       | 07\u00b0 \u2648 13' | mars    |      \u264c      |      12       |\n| 9       | 07\u00b0 \u2649 38' | venus   |      \u264a      |      10       |\n| 10      | 09\u00b0 \u264a 13' | mercury |      \u2648      |       8       |\n| 11      | 10\u00b0 \u264b 25' | moon    |      \u264b      |      10       |\n| 12      | 10\u00b0 \u264c 44' | sun     |      \u2649      |       8       |\n\n\n# Quadrants (MiMi)\n\n| quadrant   |  sum  | 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   |  sum  | 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  | dignity   |\n|-----------|--------------|---------|-----------|\n| sun       | 10\u00b0 \u2651 16'   |    4    |           |\n| moon      | 08\u00b0 \u264d 42'   |   12    |           |\n| mercury   | 22\u00b0 \u2650 14' \u211e |    4    | detriment |\n| venus     | 02\u00b0 \u2650 53'   |    3    |           |\n| mars      | 27\u00b0 \u2650 28'   |    4    |           |\n| jupiter   | 05\u00b0 \u2649 34'   |    8    |           |\n| saturn    | 03\u00b0 \u2653 15'   |    6    |           |\n| uranus    | 19\u00b0 \u2649 22' \u211e |    9    |           |\n| neptune   | 25\u00b0 \u2653 04'   |    7    |           |\n| pluto     | 29\u00b0 \u2651 21'   |    5    |           |\n| asc_node  | 20\u00b0 \u2648 51' \u211e |    8    |           |\n| asc       | 14\u00b0 \u2649 41'   |    9    |           |\n| mc        | 02\u00b0 \u2652 08'   |    5    |           |\n\n\n# Aspects of Transit vs MiMi\n\n| Transit   |  aspect  | MiMi     |  phase  | orb    |\n|-----------|----------|----------|---------|--------|\n| sun       |    \u260d     | moon     |   \u2192 \u2190   | 1\u00b0 47' |\n| sun       |    \u25a1     | mercury  |   \u2192 \u2190   | 1\u00b0 48' |\n| sun       |    \u25b3     | asc      |   \u2190 \u2192   | 0\u00b0 34' |\n| moon      |    \u26b9     | moon     |   \u2192 \u2190   | 0\u00b0 13' |\n| moon      |    \u260c     | asc      |   \u2192 \u2190   | 1\u00b0 00' |\n| moon      |    \u25a1     | mc       |   \u2192 \u2190   | 0\u00b0 31' |\n| mercury   |    \u25a1     | saturn   |   \u2192 \u2190   | 1\u00b0 11' |\n| mercury   |    \u260c     | neptune  |   \u2190 \u2192   | 0\u00b0 15' |\n| mars      |    \u25b3     | mars     |   \u2190 \u2192   | 0\u00b0 29' |\n| mars      |    \u25b3     | asc_node |   \u2190 \u2192   | 1\u00b0 25' |\n| uranus    |    \u25b3     | saturn   |   \u2192 \u2190   | 1\u00b0 41' |\n| neptune   |    \u25b3     | uranus   |   \u2190 \u2192   | 0\u00b0 33' |\n| pluto     |    \u25a1     | sun      |   \u2190 \u2192   | 0\u00b0 58' |\n| asc_node  |    \u25b3     | neptune  |   \u2190 \u2192   | 1\u00b0 37' |\n| asc_node  |    \u260d     | pluto    |   \u2192 \u2190   | 0\u00b0 45' |\n| mc        |    \u25a1     | sun      |   \u2192 \u2190   | 1\u00b0 49' |\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  |  sum  |\n|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-------|------|-------|\n|  \u2609  |     |     |     |     |     |     |     |     |     |  \u25a1  |     |       |  \u25a1   |   2   |\n|  \u263d  |  \u260d  |  \u26b9  |     |     |     |     |     |     |     |     |     |       |      |   2   |\n|  \u263f  |  \u25a1  |     |     |     |     |     |     |     |     |     |     |       |      |   1   |\n|  \u2640  |     |     |     |     |     |     |     |     |     |     |     |       |      |   0   |\n|  \u2642  |     |     |     |     |  \u25b3  |     |     |     |     |     |     |       |      |   1   |\n|  \u2643  |     |     |     |     |     |     |     |     |     |     |     |       |      |   0   |\n|  \u2644  |     |     |  \u25a1  |     |     |     |     |  \u25b3  |     |     |     |       |      |   2   |\n|  \u2645  |     |     |     |     |     |     |     |     |  \u25b3  |     |     |       |      |   1   |\n|  \u2646  |     |     |  \u260c  |     |     |     |     |     |     |     |  \u25b3  |       |      |   2   |\n|  \u2647  |     |     |     |     |     |     |     |     |     |     |  \u260d  |       |      |   1   |\n|  \u260a  |     |     |     |     |  \u25b3  |     |     |     |     |     |     |       |      |   1   |\n| Asc |  \u25b3  |  \u260c  |     |     |     |     |     |     |     |     |     |       |      |   2   |\n| MC  |     |  \u25a1  |     |     |     |     |     |     |     |     |     |       |      |   1   |\n```\n\n- see [demo.ipynb] for the HTML output\n\n## PDF Report\n\n- generate PDF report as file-like object (BytesIO)\n\n```python\nfrom natal import Report\n\nreport = Report(data1=mimi, data2=transit)\nhtml = report.full_report\nreport.create_pdf(html) # returns BytesIO\n```\n\n- see [demo_report_light.pdf] for light theme with Birth Chart\n- see [demo_report_mono.pdf] for mono theme with Transit Chart\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## Tech Stack\n\n- [tagit]: SVG / HTML generation and manipulation\n- [pyswisseph]: astrological data - Swiss Ephemeris\n- [mkdocs-material]: docs site generation\n- [weasyprint]: PDF generation (refer weasyprint docs for installing OS dependencies)\n\n[black-badge]: https://img.shields.io/badge/formatter-Black-black\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_report_light.pdf]: https://github.com/hoishing/natal/blob/main/demo_report_light.pdf\n[demo_report_mono.pdf]: https://github.com/hoishing/natal/blob/main/demo_report_mono.pdf\n[demo.ipynb]: https://github.com/hoishing/natal/blob/main/demo.ipynb\n[docs]: https://hoishing.github.io/natal\n[GeoNames]: https://www.geonames.org\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[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[Swiss Ephemeris]: https://www.astro.com/swisseph/swephinfo_e.htm\n[tagit]: https://github.com/hoishing/tagit\n[weasyprint]: https://weasyprint.org\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "create Natal Chart with ease",
    "version": "0.8.12",
    "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": "0cfadf26292fcf227c919db6efbe35145818b94d7026550365b7cee052511d84",
                "md5": "afc76bd2092d15fbe9fb028fa47aa227",
                "sha256": "dbf14e2d3c5749195bc9acc06d7bf6b653e36690ab376d7498fe38be940fea32"
            },
            "downloads": -1,
            "filename": "natal-0.8.12-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "afc76bd2092d15fbe9fb028fa47aa227",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.12",
            "size": 326618,
            "upload_time": "2024-12-13T04:31:06",
            "upload_time_iso_8601": "2024-12-13T04:31:06.666998Z",
            "url": "https://files.pythonhosted.org/packages/0c/fa/df26292fcf227c919db6efbe35145818b94d7026550365b7cee052511d84/natal-0.8.12-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d3ffad15058433302a5f4a27e2ec0c99a4160eec5cc3333077368545c06b236",
                "md5": "3577d10db2a9ab5c1ea909d71bebe658",
                "sha256": "49c08ff64cc2629ffb09f5b1607b576afa709728ecb910cefb49e66467a8e58e"
            },
            "downloads": -1,
            "filename": "natal-0.8.12.tar.gz",
            "has_sig": false,
            "md5_digest": "3577d10db2a9ab5c1ea909d71bebe658",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.12",
            "size": 319918,
            "upload_time": "2024-12-13T04:31:08",
            "upload_time_iso_8601": "2024-12-13T04:31:08.047651Z",
            "url": "https://files.pythonhosted.org/packages/6d/3f/fad15058433302a5f4a27e2ec0c99a4160eec5cc3333077368545c06b236/natal-0.8.12.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-13 04:31:08",
    "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.92426s