%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 - 1.1.3-1 - Package Spec generated