%global _empty_manifest_terminate_build 0
Name:		python-pygcn
Version:	1.1.3
Release:	1
Summary:	Anonymous VOEvent client for receiving GCN/TAN notices in XML format
License:	GPL-2+
URL:		https://github.com/nasa-gcn/pygcn
Source0:	https://mirrors.nju.edu.cn/pypi/web/packages/27/e9/57246fe197bb9478742d601398796224aefe509bc7f00f39c276dfb2be8f/pygcn-1.1.3.tar.gz
BuildArch:	noarch

Requires:	python3-lxml

%description
# PyGCN

![Python Package Index status](https://img.shields.io/pypi/v/pygcn)
[![Code coverage status](https://codecov.io/gh/nasa-gcn/pygcn/branch/main/graph/badge.svg?token=QDu6W3LiF6)](https://codecov.io/gh/nasa-gcn/pygcn)

Anonymous VOEvent client for receiving GCN/TAN notices in XML format

The [Gamma-ray Coordinates Network/Transient Astronomy Network (GCN/TAN)][1] is
a system for distributing astronomical alerts, largely focused on operations of
and detections from high-energy satellite missions.

GCN/TAN disseminates both Notices (prompt, machine-readable alerts) and
Circulars (human-readable correspondence) through a handful of delivery methods
and formats.

This package implements a simple client that listens for [VOEvent][2] XML
format notices over the custom TCP/IP [VOEvent Transport Protocol][3]. By
default, it connects to one of the anonymous GCN/TAN server, so no sign-up
or configuration is necessary to begin receiving alerts.

## Installation

To install PyGCN, simply run:

    $ pip install --user pygcn

## Usage

PyGCN provides an example script called `pygcn-listen` that will simply write
all VOEvents that it receives to files in the current directory. To try it out,
simply run:

    $ pygcn-listen

and then type Control-C to quit.

## Writing a custom GCN handler

You can also write your own handler that performs a custom action for every GCN
that is received. A handler function takes two arguments: `payload`, the raw
content of the GCN, and `root`, the root element of the XML document as parsed
by [`lxml.etree`][5]. Here is a basic example:

```python
#!/usr/bin/env python
import gcn

# Define your custom handler here.
def handler(payload, root):
    # Get the IVORN, or unique VOEvent ID, and print it.
    print(root.attrib['ivorn'])

    # Print all of the event attributes.
    for param in root.findall('./What/Param'):
        name = param.attrib['name']
        value = param.attrib['value']
        print('{} = {}'.format(name, value))

# Listen for VOEvents until killed with Control-C.
gcn.listen(handler=handler)
```
## Filtering

You can also filter events by notice type using
`gcn.include_notice_types` or `gcn.exclude_notice_types`.
Here is an example:

```python
#!/usr/bin/env python
import gcn

# Define your custom handler here.
@gcn.include_notice_types(
    gcn.notice_types.FERMI_GBM_FLT_POS,  # Fermi GBM localization (flight)
    gcn.notice_types.FERMI_GBM_GND_POS,  # Fermi GBM localization (ground)
    gcn.notice_types.FERMI_GBM_FIN_POS)  # Fermi GBM localization (final)
def handler(payload, root):
    # Look up right ascension, declination, and error radius fields.
    pos2d = root.find('.//{*}Position2D')
    ra = float(pos2d.find('.//{*}C1').text)
    dec = float(pos2d.find('.//{*}C2').text)
    radius = float(pos2d.find('.//{*}Error2Radius').text)

    # Print.
    print('ra = {:g}, dec={:g}, radius={:g}'.format(ra, dec, radius))

# Listen for VOEvents until killed with Control-C.
gcn.listen(handler=handler)
```


[1]: http://gcn.gsfc.nasa.gov
[2]: http://www.ivoa.net/documents/VOEvent
[3]: http://www.ivoa.net/documents/Notes/VOEventTransport
[4]: https://docs.python.org/2/library/xml.etree.elementtree.html
[5]: http://lxml.de


%package -n python3-pygcn
Summary:	Anonymous VOEvent client for receiving GCN/TAN notices in XML format
Provides:	python-pygcn
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-pygcn
# PyGCN

![Python Package Index status](https://img.shields.io/pypi/v/pygcn)
[![Code coverage status](https://codecov.io/gh/nasa-gcn/pygcn/branch/main/graph/badge.svg?token=QDu6W3LiF6)](https://codecov.io/gh/nasa-gcn/pygcn)

Anonymous VOEvent client for receiving GCN/TAN notices in XML format

The [Gamma-ray Coordinates Network/Transient Astronomy Network (GCN/TAN)][1] is
a system for distributing astronomical alerts, largely focused on operations of
and detections from high-energy satellite missions.

GCN/TAN disseminates both Notices (prompt, machine-readable alerts) and
Circulars (human-readable correspondence) through a handful of delivery methods
and formats.

This package implements a simple client that listens for [VOEvent][2] XML
format notices over the custom TCP/IP [VOEvent Transport Protocol][3]. By
default, it connects to one of the anonymous GCN/TAN server, so no sign-up
or configuration is necessary to begin receiving alerts.

## Installation

To install PyGCN, simply run:

    $ pip install --user pygcn

## Usage

PyGCN provides an example script called `pygcn-listen` that will simply write
all VOEvents that it receives to files in the current directory. To try it out,
simply run:

    $ pygcn-listen

and then type Control-C to quit.

## Writing a custom GCN handler

You can also write your own handler that performs a custom action for every GCN
that is received. A handler function takes two arguments: `payload`, the raw
content of the GCN, and `root`, the root element of the XML document as parsed
by [`lxml.etree`][5]. Here is a basic example:

```python
#!/usr/bin/env python
import gcn

# Define your custom handler here.
def handler(payload, root):
    # Get the IVORN, or unique VOEvent ID, and print it.
    print(root.attrib['ivorn'])

    # Print all of the event attributes.
    for param in root.findall('./What/Param'):
        name = param.attrib['name']
        value = param.attrib['value']
        print('{} = {}'.format(name, value))

# Listen for VOEvents until killed with Control-C.
gcn.listen(handler=handler)
```
## Filtering

You can also filter events by notice type using
`gcn.include_notice_types` or `gcn.exclude_notice_types`.
Here is an example:

```python
#!/usr/bin/env python
import gcn

# Define your custom handler here.
@gcn.include_notice_types(
    gcn.notice_types.FERMI_GBM_FLT_POS,  # Fermi GBM localization (flight)
    gcn.notice_types.FERMI_GBM_GND_POS,  # Fermi GBM localization (ground)
    gcn.notice_types.FERMI_GBM_FIN_POS)  # Fermi GBM localization (final)
def handler(payload, root):
    # Look up right ascension, declination, and error radius fields.
    pos2d = root.find('.//{*}Position2D')
    ra = float(pos2d.find('.//{*}C1').text)
    dec = float(pos2d.find('.//{*}C2').text)
    radius = float(pos2d.find('.//{*}Error2Radius').text)

    # Print.
    print('ra = {:g}, dec={:g}, radius={:g}'.format(ra, dec, radius))

# Listen for VOEvents until killed with Control-C.
gcn.listen(handler=handler)
```


[1]: http://gcn.gsfc.nasa.gov
[2]: http://www.ivoa.net/documents/VOEvent
[3]: http://www.ivoa.net/documents/Notes/VOEventTransport
[4]: https://docs.python.org/2/library/xml.etree.elementtree.html
[5]: http://lxml.de


%package help
Summary:	Development documents and examples for pygcn
Provides:	python3-pygcn-doc
%description help
# PyGCN

![Python Package Index status](https://img.shields.io/pypi/v/pygcn)
[![Code coverage status](https://codecov.io/gh/nasa-gcn/pygcn/branch/main/graph/badge.svg?token=QDu6W3LiF6)](https://codecov.io/gh/nasa-gcn/pygcn)

Anonymous VOEvent client for receiving GCN/TAN notices in XML format

The [Gamma-ray Coordinates Network/Transient Astronomy Network (GCN/TAN)][1] is
a system for distributing astronomical alerts, largely focused on operations of
and detections from high-energy satellite missions.

GCN/TAN disseminates both Notices (prompt, machine-readable alerts) and
Circulars (human-readable correspondence) through a handful of delivery methods
and formats.

This package implements a simple client that listens for [VOEvent][2] XML
format notices over the custom TCP/IP [VOEvent Transport Protocol][3]. By
default, it connects to one of the anonymous GCN/TAN server, so no sign-up
or configuration is necessary to begin receiving alerts.

## Installation

To install PyGCN, simply run:

    $ pip install --user pygcn

## Usage

PyGCN provides an example script called `pygcn-listen` that will simply write
all VOEvents that it receives to files in the current directory. To try it out,
simply run:

    $ pygcn-listen

and then type Control-C to quit.

## Writing a custom GCN handler

You can also write your own handler that performs a custom action for every GCN
that is received. A handler function takes two arguments: `payload`, the raw
content of the GCN, and `root`, the root element of the XML document as parsed
by [`lxml.etree`][5]. Here is a basic example:

```python
#!/usr/bin/env python
import gcn

# Define your custom handler here.
def handler(payload, root):
    # Get the IVORN, or unique VOEvent ID, and print it.
    print(root.attrib['ivorn'])

    # Print all of the event attributes.
    for param in root.findall('./What/Param'):
        name = param.attrib['name']
        value = param.attrib['value']
        print('{} = {}'.format(name, value))

# Listen for VOEvents until killed with Control-C.
gcn.listen(handler=handler)
```
## Filtering

You can also filter events by notice type using
`gcn.include_notice_types` or `gcn.exclude_notice_types`.
Here is an example:

```python
#!/usr/bin/env python
import gcn

# Define your custom handler here.
@gcn.include_notice_types(
    gcn.notice_types.FERMI_GBM_FLT_POS,  # Fermi GBM localization (flight)
    gcn.notice_types.FERMI_GBM_GND_POS,  # Fermi GBM localization (ground)
    gcn.notice_types.FERMI_GBM_FIN_POS)  # Fermi GBM localization (final)
def handler(payload, root):
    # Look up right ascension, declination, and error radius fields.
    pos2d = root.find('.//{*}Position2D')
    ra = float(pos2d.find('.//{*}C1').text)
    dec = float(pos2d.find('.//{*}C2').text)
    radius = float(pos2d.find('.//{*}Error2Radius').text)

    # Print.
    print('ra = {:g}, dec={:g}, radius={:g}'.format(ra, dec, radius))

# Listen for VOEvents until killed with Control-C.
gcn.listen(handler=handler)
```


[1]: http://gcn.gsfc.nasa.gov
[2]: http://www.ivoa.net/documents/VOEvent
[3]: http://www.ivoa.net/documents/Notes/VOEventTransport
[4]: https://docs.python.org/2/library/xml.etree.elementtree.html
[5]: http://lxml.de


%prep
%autosetup -n pygcn-1.1.3

%build
%py3_build

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

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

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

%changelog
* Wed May 31 2023 Python_Bot <Python_Bot@openeuler.org> - 1.1.3-1
- Package Spec generated