Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
.. image:: https://raw.githubusercontent.com/stan-dev/logos/master/logo.png :alt: Stan logo :height: 333px :width: 333px :scale: 40 %
|pypi|
HTTP-based REST interface to Stan, a package for Bayesian inference.
An HTTP 1.1 interface to the Stan_ C++ package, httpstan is a shim_ that allows users to interact with the Stan C++ library using a REST API. The package is intended for use as a universal backend for frontends which know how to make HTTP requests. The primary audience for this package is developers.
In addition to providing the essential functionality of the command-line interface to Stan (CmdStan_) over HTTP, httpstan provides the following features:
Documentation: https://httpstan.readthedocs.org <https://httpstan.readthedocs.org>
_.
httpstan is a shim_ allowing clients able to make HTTP-based requests to
call functions in the Stan C++ library's stan::services
namespace.
httpstan was originally developed as a "backend" for a Stan interface
written in Python, PyStan_.
Stability and maintainability are two overriding goals of this software package.
.. These instructions appear in both README.rst and installation.rst
::
$ python3 -m pip install httpstan
In order to install httpstan from PyPI make sure your system satisfies the requirements:
If your system uses a different kind of CPU, you should be able to install from source using the following commands:
::
# Build shared libraries
make
# Build the httpstan wheel on your system
python3 -m pip install poetry
python3 -m poetry build
# Install the wheel
python3 -m pip install dist/*.whl
After installing httpstan
, running the module will begin listening on
localhost, port 8080::
python3 -m httpstan
In a different terminal, make a POST request to
http://localhost:8080/v1/models
with Stan program code to compile the
program::
curl -H "Content-Type: application/json" \
--data '{"program_code":"parameters {real y;} model {y ~ normal(0,1);}"}' \
http://localhost:8080/v1/models
This request will return a model name along with all the compiler output::
{"compiler_output": "In file included from …", "stanc_warnings": "", "name": "models/xc2pdjb4"}
(The model name
depends on the platform and the version of Stan.)
Drawing samples from this model using default settings requires two steps: (1) launching the sampling operation and (2) retrieving the output of the operation (once it has finished).
First we make a request to launch the sampling operation::
curl -H "Content-Type: application/json" \
--data '{"function":"stan::services::sample::hmc_nuts_diag_e_adapt"}' \
http://localhost:8080/v1/models/xc2pdjb4/fits
This request instructs httpstan
to draw samples from the normal
distribution described in the model. The function name picks out a specific
function in the stan::services
namespace found in the Stan C++ library (see
the Stan C++ documentation for details). This request will return immediately
with a reference to a long-running fit operation::
{"name": "operations/gkf54axb", "done": false, "metadata": {"fit": {"name": "models/xc2pdjb4/fits/gkf54axb"}}}
Once the operation is complete, the "fit" can be retrieved. The name of the fit,
models/xc2pdjb4/fits/gkf54axb
, is included in the metadata
field of the operation.
The fit is saved as sequence of JSON-encoded messages. These messages are strung together
with newlines. To retrieve these messages, saving them locally in the file
myfit.jsonlines
, make the following request::
curl http://localhost:8080/v1/models/xc2pdjb4/fits/gkf54axb > myfit.jsonlines
The Stan "fit", saved in myfit.jsonlines
, aggregates all messages. By reading
them one by one you can recover all messages sent by the Stan C++ library.
We appreciate citations as they let us discover what people have been doing with the software. Citations also provide evidence of use which can help in obtaining grant funding.
To cite httpstan in publications use:
Riddell, A., Hartikainen, A., & Carter, M. (2021). httpstan (4.4.0). https://pypi.org/project/httpstan
Or use the following BibTeX entry::
@misc{httpstan,
title = {httpstan (4.4.0)},
author = {Riddell, Allen and Hartikainen, Ari and Carter, Matthew},
year = {2021},
month = mar,
howpublished = {PyPI}
}
Please also cite Stan.
ISC License.
.. _shim: https://en.wikipedia.org/wiki/Shim_%28computing%29
.. _CmdStan: http://mc-stan.org/interfaces/cmdstan.html
.. _PyStan: http://mc-stan.org/interfaces/pystan.html
.. _Stan: http://mc-stan.org/
.. _OpenAPI documentation for httpstan
: api.html
.. |pypi| image:: https://img.shields.io/pypi/v/httpstan.svg :target: https://pypi.org/project/httpstan/ :alt: pypi version
FAQs
HTTP-based interface to Stan, a package for Bayesian inference.
We found that httpstan demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.