sopel-wolfram 0.6.1
Wolfram|Alpha plugin for the Sopel IRC bot framework
Requires Python: <4,>=3.8
Keywords: sopel, plugin, bot, irc

# sopel-wolfram

Wolfram|Alpha plugin for the Sopel IRC bot framework

## Installing

Releases are hosted on PyPI, so after installing Sopel, all you need is `pip`:

```shell
$ pip install sopel-wolfram
```

### Requirements

* Sopel 8.x
* wolframalpha 5.x*

You will also need a Wolfram|Alpha App ID; see details below in the
"Configuring" section.

\* — _The MIT-licensed `wolframalpha` library is vendored in this release, to
work around [this bug][wa-gh35]. Doing it this way is safest; the best
alternative was pinning to the Git branch of [a pull request fixing it][wa-gh36]
that could be deleted at any time._

[wa-gh35]: https://github.com/jaraco/wolframalpha/issues/35
[wa-gh36]: https://github.com/jaraco/wolframalpha/pull/36


## Configuring

The easiest way to configure `sopel-wolfram` is via Sopel's
configuration wizard—simply run `sopel-plugins configure wolfram`
and enter the values for which it prompts you.

However, you can manually add the following section to your Sopel bot's
configuration file if desired:

```ini
[wolfram]
app_id = yourappidgoeshere
```

The `app_id` setting is required, and you will need to get your own App ID from
Wolfram|Alpha at https://developer.wolframalpha.com/

Optional settings:

* `max_public`: the number of lines over which results will be sent in NOTICE
  instead of to the channel (default: 5)
* `units`: measurement system displayed in results, either `metric` (the
  default) or `nonmetric`


## Example usage

```
<User> .wa 2+2
<Sopel> [W|A] 2+2 = 4

<User> .wa python language release date
<Sopel> [W|A] Python | date introduced = 1991

<User> .wa airspeed velocity of an unladen swallow
<Sopel> [W|A] estimated average cruising airspeed of an unladen European
        swallow = 25 mph  (miles per hour)(asked, but not answered, about a
        general swallow in the 1975 film Monty Python and the Holy Grail)
```

## Changelog

Ticket numbers in changelog entries can be looked up by visiting
`https://github.com/dgw/sopel-wolfram/issue/<number>`


### 0.6.1 "Mirai to wa?"

Updated:

* `wolframalpha` library now bundled, for [bug-fixing reasons][]\
  Should upstream resume development, `sopel-wolfram` will switch back.

Meta:

* Future-proofed, PEP639-compliant license metadata (#27)
* Updated build/publish workflow (#27)

[bug-fixing reasons]: https://github.com/jaraco/wolframalpha/issues/35


### 0.6.0 "Bocchi de Skip"

First release as `sopel-wolfram`, replacing the old `sopel_modules.wolfram`
package for Sopel 7 and older.

Updated:

* Sopel 8.x and Python 3.8+ now required (#25)
* Upgraded to `wolframalpha` 5.x (#25)
* Modernized packaging & package metadata (#25)
* Streamlined documentation (#25)


### 0.5.0 "ALIVE"

That's "ALIVE" as in "This project isn't DEAD" (despite the last release being
over two years old).

Updated:

* Sopel 7.x now supported & required (#23)
* Dropped support for Sopel 6.x (#23)
* Dropped support for wolframalpha 2.x (#23)
* Internal refactoring to take advantage of new Sopel features (#23)

Meta:

* No more ZIP releases; PyPI only allows one file type now (#22)


### 0.4.1 "Kibou ni tsuite"

This release named in memory of LuckyNumber78, who changed lives every day simply
by being her excitable, fun-loving self. She is missed by many.

Fixed:

* `max_public` setting could cause errors because it was treated as a string (#21)


### 0.4.0 "Mirai no kajitsu"

Added:

* Support for wolframalpha 3.0 with transitional fallback to 2.4 (#11, #19; see
  README notes)
* New configuration option `max_public`, a number defining the maximum number of
  lines that can be sent without using NOTICEs. Default: 5 (#13)
* New configuration option `units`, to specify whether the API should return
  `metric` (default) or `nonmetric` measurements (#18; see #16)

Updated:

* Threshold for using NOTICEs is now 5 lines, up from the previous default of 3

Fixed:

* Non-ASCII text in output is no longer `\:encoded` (#15)


### 0.3.1 "Nusumareta kuchibiru"

Updates:

* Unicode-encode query to avoid UnicodeEncodeError on non-ASCII characters (#10)


### 0.3.0 "So long!"

Updates:

* Results longer than 3 lines will be sent via NOTICE instead of flooding
  channels (#8)


### 0.2.1 "Mae shika mukanee"

Updates:

* Output now split into multiple messages when line breaks are present (#4)
* Tell pip we do not want wolframalpha 3.0 yet (#6)


### 0.2.0 "Miraibashi"

Updates:

* Try a lot harder to give useful output (#3)
* Tell user to try again if an unspecified error occurs (empty error message)

Meta:

* Cleanup: PEP8 & unused imports
* Refactor to make future addition of integration tests easier


### 0.1.2 "Switch"

Updates:

* Shorten some error messages
* Identify as "[W|A]" instead of "[Wolfram]" in output for brevity
* Ensure all module output is prefixed
* Add more examples to help output and README

Meta:

* README now includes installation instructions and where to get help/report
  bugs


### 0.1.1 "Already"

Updates:

* Now outputs error if `app_id` is missing (#1)

Meta:

* README reformatted (thanks @[maxpowa](https://github.com/maxpowa))
* Begin maintaining version history in NEWS file


### 0.1.0 "Beginner"
-------------------------------

* Initial release
* Adopted with permission from
  https://github.com/maxpowa/inumuta-modules/blob/e0b195c/wolfram.py