This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. Always make sure to check the latest version of the README on the master branch.
This repository contains the software for the https://www.djangoproject.com/-based source code for the Dark Reactions Project Software. If you are looking to contribute to the chemistry aspects of the project, please visit the main project site at http://darkreactions.haverford.edu. If you are looking to contribute to the source code of the project and are not a member of haverford college, please fork this repository and issue a pull request with any changes or fixes you may have made. A list of known bugs can be found at [http://bugs.darkreactions.haverford.edu] (our instance of Mantis Bug Tracker). Please note that you will to sign up for an account, and that the authentication credentials for the bug reporting page and the main project page are separate.
The following setup methods are suitable for use with Ubuntu 16.04.
This software supports development using https://www.vagrantup.com, and has a Vagrantfile included in the root directory.
Vagrant can be installed on Linux machines using
sudo apt-get install vagrant virtualbox
Then setting up a virtual machine should be as simple as issuing the command vagrant up from anywhere in the repository.
The following instructions are written to work with Ubuntu 14 and 16 and have (mostly) been tested. These instructions assume familiarity with Linux and a Command Line, and that you are using nginx as your webserver.
Download or clone the DRP from our git repo
``` git clone https://github.com/darkreactions/DRP ````
Install necessary dependencies. Note that dependencies will go off most screens, so be careful when copy/pasting.
sudo apt-get install python3 python3-dev python3-pip mailutils mysql-server libmysqlclient-dev nginx uwsgi uwsgi-plugin-python3 python-rdkit git weka graphviz memcached python-memcache python3-scipy python3-pillow cmake libboost-all-dev python3-cffi graphviz-dev pkg-config pwgen dnsmasq
sudo python3 -m pip install numpy pygraphviz mysqlclient
sudo -H python3 -m pip install chemspipy requests pep8 pep257 xxhash sqlparse
Install Django. Please note that the current version of DRP is designed to work with Django 1.8
``` sudo python3 -m pip install django==1.8 ````
Login to your account:
mysql -u root -p
The user is initialized as root and the password is blank in Ubuntu. This may vary depending on your setup.
Once you login to mysql, and create two databases:
CREATE DATABASE DRP CHARACTER SET utf8 COLLATE utf8_bin;
You should see: Query OK, 1 row affected (0.00 sec)
CREATE DATABASE DRP_test CHARACTER SET utf8 COLLATE utf8_bin;
You should see: Query OK, 1 row affected (0.00 sec)
Exit out of MySQL my typing “exit.”
You will also need a chemspider token. Follow the directions on the website for webservices:
“Some operations require a security token; to obtain a token please complete the registration process –when you are registered the Security Token is listed on the Profilepage. For web services which require a “Service Subscriber” role, then email us above to discuss upgrading your user account.”
Visit http://www.chemspider.com/AboutServices.aspx
In the DRP repository, copy the settings_example.py to settings.py.
cp settings_example.py settings.py
In the settings.py file, you will need to edit:
SERVER_NAME (full name of PC)
CHEMSPIDER\_TOKEN
MAIN\_SERVER
MAIN\_SERVER\_USER
MAIN\_SERVER\_PASS
EMAIL\_HOST
EMAIL\_HOST\_USER
EMAIL\_HOST\_PASS
EMAIL\_IMAP\_HOST
ADMINS
These have placeholders that indicate their use.
You will also need to set the standard database settings as per the https://docs.djangoproject.com/en/1.8/.
Note that ALLOWED_HOSTS should be empty.
To pass the unit tests, at least one ADMIN_EMAILS should be provided
Copy DRP_nginx from the DRP folder to the /etc/nginx/sites-available folder.
cp DRP/DRP_nginx /etc/nginx/sites-available
Create a symlink between /etc/nginx/sites-available/DRP_nginx and /etc/nginx/sites-enabled/DRP_nginx
ln -s sites-available/DRP_nginx sites-enabled/DRP_nginx
Copy DRP_uwsgi.ini file to the /etc/uwsgi/apps-available folder.
cp DRP/DRP_uwsgi.ini /etc/uwsgi/apps-available
Create a symlink between apps-available/DRP_uwsgi.ini to apps-enabled/DRP_uwsgi.ini
ln -s /etc/uwsgi/apps-available/DRP_uwsgi.ini /etc/uwsgi/apps-enabled/DRP_uwsgi.ini
Note that for symlinks, you may need to create the directory before linking it.
Now, edit each fine. Replace the placeholders with the relevant values. Ex: log path.
Note that the “location” paths in the nginx DRP_nginx file will need to be changed if you are not working on the server.
Now restart both Uwsgi and Nginx:
sudo service uwsgi restart
sudo service nginx restart
Option 1 (Recommended):
We have a repo setup for a python3 specific build of rdkit which should not clash with other packages in the ubuntu repositories, however, we make no guarantees to that effect, and installation is at your own risk.
In the file /etc/apt/sources.list add the line:
deb [trusted=yes] https://darkreactions.haverford.edu/software ./
If you need to change the permissions on the /etc/apt/sources.list using chmod to edit the file, be sure to change it back and execute
sudo apt-get update
sudo apt-get install python3-rdkit
Option 2 (Manual):
Run
sudo apt-get install bison cmake flux build-essential sqlite3 libsqlite3-dev libboost-all-dev
sudo pip3 install cairocffi
Then, in a directory that is not your main installation directory for DRP.
git clone https://github.com/darkreactions/rdkit.git
Change into the rdkit repository directory and then
export RDBASE=$(pwd)
export LD_LIBRARY_PATH="$(pwd)/lib"
export PYTHONPATH="$(pwd)/lib"
mkdir build
cd build
cmake -DRDK_BUILD_INCHI_SUPPORT=ON -D PYTHON_LIBRARY=/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu/libpython3.4.so -D PYTHON_INCLUDE_DIR=/usr/include/python3.4/ -D PYTHON_EXECUTABLE=/usr/bin/python3.4 -DBOOST_ROOT=/usr/lib/x86_64-linux-gnu/ ..
make install
ctest
If any of this generates an error, unless you are very familiar with compiling new code for linux operating systems, seek the assistance of Philip Adler via the rdkit repository provided in this document.
Otherwise:
unset LD_LIBRARY_PATH unset RDBASE unset PYTHONPATH
cd ../rdkit
`sudo ln -s "$(pwd)" /usr/lib/python3.4/rdkit
cd ../lib
sudo cp -i *.so.2 /usr/lib
python3.4 -c "import rdkit.Chem"
If that runs without error messages, congratulations, you have compiled and installed rdkit for use with DRP.
Follow the documentation to install and validate your license for * Chemaxon.
In order to install the license files (.cxl), you must open one of the ChemAxon programs (e.g. MarvinView, MarvinSketch) and navigate to the help > licenses tab. From there you can install the license files.
The deb package can be installed as follows:
sudo apt install ./packagename.deb (or /path/to/package/name.deb)
Chemaxon can then be found at:
/opt/chemaxon
When setting the Chemaxon directory in settings.py, make sure to point to the bin file, ie:
CHEMAXON_DIR = {version:/path/to/marvinsuite/bin/}
Make sure you run the command:
./manage.py migrate
If you are experiencing errors with management commands, make sure you are in the right directory and try putting Python3 or whichever Python is relevant before the command. Additionally, try restarting nginx and uwsgi.
Logging in
When first registering through the website on a server, the user is default inactive.
You must run:
./manage.py createsuperuser
Enter your new username and password.
Login to the website with /admin at the end of the URL
Go into the users and change the new user to active and whatever permissions you deem necessary.
Release Versions:
DRP is distributed in release versions. To use a specific version of the code, use the following template command:
git checkout
DRP comes distributed with a number of useful git hooks in the drp_hooks directory in this repo. These warn you if the expected structure of the settings.py file changes, or if you need to run database migrations for the DRP Django application. They also remove orphaned .pyc files, which have been known to confuse the test suite historically. These should be added to your local git repository as per the git documentation.
In the DRP repository there is a file DRP_uwsgi.ini and another DRP_nginx. Both should be modified to suit your local server after having been placed in the relevant locations:
/etc/uwsgi/apps-enabled/DRP_uwsgi.ini /etc/nginx/sites-enabled/DRP_nginx
It should be noted that the uwsgi.ini is backwards compatible with older version of this repo, but that an old DRP_uwsgi file will need replacing. Both uwsgi and nginx must be restarted (in that order) for the server to work.
If you are setting up a publicly viewable instance of DRP, there are additional settings for these protocols present in the configuration file for nginx, and the Django settings_example.py file, which have been left commented out. Setting up https access varies greatly depending on your local server environment and organisation so there will be no further documentation here. Additional information for a simple method to set up https can be found at https://letsencrypt.org.
In order to run tests you must have the following environment variables set up in your shell session:
export PYTHONPATH=/path/to/DRP/
export DJANGO_SETTINGS_MODULE=DRP.settings
You must also have TESTING set to True in your settings.py file.
In addition, its useful to restart nginx and uwsgi before running tests.
To run specific tests, provided the test is conformant to the template test (which they should be if you are writing new tests!), one can simply execute the test:
path/to/DRP/test.py
Else, one can run the entire test suite from the management script:
./manage.py run_tests
In developing the DRP in the Dataquacs lab, it may be the case that you want to add a new field. To do this successfully and to have the tests pass successfully, follow this development cycle.
Add the new field to the model, make migrations, and run migrations. This will update the version of the drp database specified in the settings.py file for the new field.
Make sure the tests pass locally. To do this, the schema of the test database must match the local database. If there's only a few new additions, manually go into mysql and add the new column to the appropriate tables.
A useful way to figure out all the appropriate tables is by looking at the recent migrations file. The name of the models where the field was added will be the tables you must add the new column to. Once you've added the field to the tests, you should be able to run the tests. Of course, it still remains to be seen if the tests pass but this should eliminate errors due to the new field you've added not being recognized.
The ALLOWED_HOSTS option in 'settings.py' should be set to an iterable containing only the localhost ip address as a string.
In the '/etc/nginx/sites-enabled/DRP_nginx' file, the host name that is being listened to should only be localhost.
If you are only developing DRP on your server, the setup you have should be sufficient, however, people running other applications on their local development server should note the following.
If you are running the django testing server, this requires you to select a port which is unoccupied. By default, the nginx settings file listens for port 8000, which is also the default port of the django test server; you will need to configure one or the other so that this clash does not occur. The Django documentation addresses this for django, whilst in the DRP_nginx file, the only change that needs to be made is to delete the line: listen 8000
For instances where you are hosting multiple development projects on your local server, it may be beneficial to install dnsmasq: sudo apt-get install dnsmasq dnsmasq is a powerful tool for rerouting and managing dns requests. This makes it extremely helpful in managing multiple local development projects. Having installed dnsmasq, open the file /etc/dnsmasq.conf in your favourite text editor, and add the following line into the file: address=/loc/127.0.0.1 Save the change, and then on the command line: sudo service dnsmasq restart In the DRP_nginx file, change the server_name configuration to something like darkreactions.loc. It does not matter what this is set to, provided it: a. is unique on your development server b. ends in .loc Don't forget to set the SERVER_NAME setting in your settings.py file to the same value! Restart nginx: sudo service nginx restart When you open your browser and direct yourself to darkreactions.loc (or whatever you named the server), the dark reactions project should display.
Versions of code prior to 0.1 are not compatible with versions above.
Version 0.6 of DRP was the last version to use Django 1.6, subsequent versions use Django 1.8. There are, therefore, necessary transition steps to be made.
git fetch --all git checkout 0.7
Make sure your database (both main and testing) is up to date with migrations: Set Testing = False in settings.py./manage.py migrate
Set Testing = True
in settings.py
Restart nginx and uwsgi sudo service nginx restart && sudo service uwsgi restart
Run all tests and make sure you pass them all: ./manage.py run_tests
git checkout 0.81
Remove "south" from your installed apps
Install django 1.8 pip install -U Django==1.8.9
Delete all .pyc files in your migrations folder
rm DRP/migrations/*.pyc ./manage.py migrate DRP --fake./manage.py migrate --fake-initial ./manage.py migrate
Repeat this process for your Main database.
Restart nginx and uwsgi sudo service nginx restart && sudo service uwsgi restart
Run all tests and make sure you pass them all ./manage.py run_tests
Notes for Local (Haverford) Developers The website can be accessed at darkreactions.haverford.edu -- this domain is managed by Haverford. The server itself (named "drp") is in the KINSC Server Room and can be accessed by SSH while on campus. Note that if you are off-campus and need to access drp, you will need to tunnel through another server on campus -- such as those hosted by FIG or a CS Lab Computer. That is, SSH there and THEN SSH into drp.
There are many files that are not listed above in order to elucidate the "framework" of the DRP Django Project succinctly. Notably, there are many python files in the views and research directories that are not listed above -- but which should contain explanatory comments in the files themselves.
First, you'll need a GitHub account and you'll need someone with access to the repo to grant your account access (though if you can view this README without access to the GitHub repo, you should tell someone). Then, you should be able to use git clone https://github.com/darkreactions/DRP.git to copy the repository to your workstation.
Django has an important file, settings.py, which is not tracked by this git repository for security reasons. If you add or remove items in this file whilst developing with the code, please ensure that you update the file settings_example.py in step.
Lastly, the repository utilises branches heavily. The master branch is reserved for releases. There are no working long-term support branches at present. Persons editing this code should set up their own branches, with one marked as stable, such that all tests pass in that branch.
Django management commands (that is, the commands that pass through manage.py) can be called as python manage.py <the command>
when in the main DRP project directory. These commands are each stored in a separate python file in the .../DRP/management/commands directory. To add a new command, use the existing files as examples.
It also should be noted that using python manage.py help will detail all of the available management commands (of which there are many).
This command checks the hashed values of the reactions calculated by the DRP descriptor plugin for clashes. If there is a clash, the lead developer should be notified ASAP.
Builds a machine learning model. The most basic usage is python manage.py build_model -p 'reaction_temperature'this will build a model using only the reaction temperature as a descriptor to predict the default outcome descriptor (currently boolean crystallisation outcome) using the default model (currently a Weka SVM using the PUK kernel and cross-validated using a 4-fold split to analyze model performance). More advanced usage should be well documented in the help textpython manage.py build_model -h
Imports reaction data from the main Haverford Dark Reactions server. Accepts one positional argument importing the corresponding number of Performed Reactions and their associated data. Not available to persons who are not administrators on the main server.
Note that at present this command does not import reaction descriptors.
Starts a batch parralell task to re-save each reaction, forcing descriptor calculation. Useful in conjunction with the above command. Note that descriptors will only be calculated for plugins present in the code-base, which are correctly set up.
Runs all of the tests correctly imported in the test suite. To only run some tests, one may enter a list of test modules to run as positional arguments. The --failfast option causes tests to halt on the first failure. Otherwise all tests will be run and error details output at the end.
To reference actual descriptors from a descriptor_id's from another table use the following command:
SELECT * FROM DRP_descriptor WHERE id in (SELECT DISTINCT descriptor_id FROM DRP_numrxndescriptorvalue);
Note: this command specifically references the table DRP_numrxndescriptorvalue. Change this table to the one you see fits your query.
The general procedure is to make a csv with DRP/views/dashboardView.py
, then pull that csv into the javascript in such a way that we have to do as little data processing in javascript as possible. The javascript in question is located in templates/dashboard.html
. If you want to make another stacked bar graph, you can use the function make_stacked_bar
which takes csv's in the form of date (Y-m-d), values, to, stack
. You also pass that function the div id you want to graph to be in, so add a div in the html above the function for your new graph! There are other parameters to the function, those are described in the code. If you want to make a graph that isn't a stack bar chart, or uses data in a different form, you will have to write your own d3!
One additional gotcha: If you add another csv, you need to create the file on the server and then edit the permissions so that the program can edit it.
If your lab would like to use our website, please send us an email at [email protected] Please include the lab group name, the email address for the head of the lab, and an access code. The access code will be required when users join your lab group.
Bumps wheel from 0.24.0 to 0.38.1.
Sourced from wheel's changelog.
Release Notes
UNRELEASED
- Updated vendored
packaging
to 22.00.38.4 (2022-11-09)
- Fixed
PKG-INFO
conversion inbdist_wheel
mangling UTF-8 header values inMETADATA
(PR by Anderson Bravalheri)0.38.3 (2022-11-08)
- Fixed install failure when used with
--no-binary
, reported on Ubuntu 20.04, by removingsetup_requires
fromsetup.cfg
0.38.2 (2022-11-05)
- Fixed regression introduced in v0.38.1 which broke parsing of wheel file names with multiple platform tags
0.38.1 (2022-11-04)
- Removed install dependency on setuptools
- The future-proof fix in 0.36.0 for converting PyPy's SOABI into a abi tag was faulty. Fixed so that future changes in the SOABI will not change the tag.
0.38.0 (2022-10-21)
- Dropped support for Python < 3.7
- Updated vendored
packaging
to 21.3- Replaced all uses of
distutils
withsetuptools
- The handling of
license_files
(including glob patterns and default values) is now delegated tosetuptools>=57.0.0
(#466). The package dependencies were updated to reflect this change.- Fixed potential DoS attack via the
WHEEL_INFO_RE
regular expression- Fixed
ValueError: ZIP does not support timestamps before 1980
when usingSOURCE_DATE_EPOCH=0
or when on-disk timestamps are earlier than 1980-01-01. Such timestamps are now changed to the minimum value before packaging.0.37.1 (2021-12-22)
- Fixed
wheel pack
duplicating theWHEEL
contents when the build number has changed (#415)- Fixed parsing of file names containing commas in
RECORD
(PR by Hood Chatham)0.37.0 (2021-08-09)
- Added official Python 3.10 support
- Updated vendored
packaging
library to v20.9
... (truncated)
6f1608d
Created a new releasecf8f5ef
Moved news item from PR #484 to its proper place9ec2016
Removed install dependency on setuptools (#483)747e1f6
Fixed PyPy SOABI parsing (#484)7627548
[pre-commit.ci] pre-commit autoupdate (#480)7b9e8e1
Test on Python 3.11 finala04dfef
Updated the pypi-publish action94bb62c
Fixed docs not building due to code style changesd635664
Updated the codecov action to the latest versionfcb94cd
Updated version to match the releaseDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps pillow from 2.3.0 to 9.3.0.
Sourced from pillow's releases.
9.3.0
https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html
Changes
- Initialize libtiff buffer when saving #6699 [
@radarhere
]- Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [
@wiredfool
]- Inline fname2char to fix memory leak #6329 [
@nulano
]- Fix memory leaks related to text features #6330 [
@nulano
]- Use double quotes for version check on old CPython on Windows #6695 [
@hugovk
]- GHA: replace deprecated set-output command with GITHUB_OUTPUT file #6697 [
@nulano
]- Remove backup implementation of Round for Windows platforms #6693 [
@cgohlke
]- Upload fribidi.dll to GitHub Actions #6532 [
@nulano
]- Fixed set_variation_by_name offset #6445 [
@radarhere
]- Windows build improvements #6562 [
@nulano
]- Fix malloc in _imagingft.c:font_setvaraxes #6690 [
@cgohlke
]- Only use ASCII characters in C source file #6691 [
@cgohlke
]- Release Python GIL when converting images using matrix operations #6418 [
@hmaarrfk
]- Added ExifTags enums #6630 [
@radarhere
]- Do not modify previous frame when calculating delta in PNG #6683 [
@radarhere
]- Added support for reading BMP images with RLE4 compression #6674 [
@npjg
]- Decode JPEG compressed BLP1 data in original mode #6678 [
@radarhere
]- pylint warnings #6659 [
@marksmayo
]- Added GPS TIFF tag info #6661 [
@radarhere
]- Added conversion between RGB/RGBA/RGBX and LAB #6647 [
@radarhere
]- Do not attempt normalization if mode is already normal #6644 [
@radarhere
]- Fixed seeking to an L frame in a GIF #6576 [
@radarhere
]- Consider all frames when selecting mode for PNG save_all #6610 [
@radarhere
]- Don't reassign crc on ChunkStream close #6627 [
@radarhere
]- Raise a warning if NumPy failed to raise an error during conversion #6594 [
@radarhere
]- Only read a maximum of 100 bytes at a time in IMT header #6623 [
@radarhere
]- Show all frames in ImageShow #6611 [
@radarhere
]- Allow FLI palette chunk to not be first #6626 [
@radarhere
]- If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode #6592 [
@radarhere
]- Round box position to integer when pasting embedded color #6517 [
@radarhere
]- Removed EXIF prefix when saving WebP #6582 [
@radarhere
]- Pad IM palette to 768 bytes when saving #6579 [
@radarhere
]- Added DDS BC6H reading #6449 [
@ShadelessFox
]- Added support for opening WhiteIsZero 16-bit integer TIFF images #6642 [
@JayWiz
]- Raise an error when allocating translucent color to RGB palette #6654 [
@jsbueno
]- Moved mode check outside of loops #6650 [
@radarhere
]- Added reading of TIFF child images #6569 [
@radarhere
]- Improved ImageOps palette handling #6596 [
@PososikTeam
]- Defer parsing of palette into colors #6567 [
@radarhere
]- Apply transparency to P images in ImageTk.PhotoImage #6559 [
@radarhere
]- Use rounding in ImageOps contain() and pad() #6522 [
@bibinhashley
]- Fixed GIF remapping to palette with duplicate entries #6548 [
@radarhere
]- Allow remap_palette() to return an image with less than 256 palette entries #6543 [
@radarhere
]- Corrected BMP and TGA palette size when saving #6500 [
@radarhere
]
... (truncated)
Sourced from pillow's changelog.
9.3.0 (2022-10-29)
Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]
Initialize libtiff buffer when saving #6699 [radarhere]
Inline fname2char to fix memory leak #6329 [nulano]
Fix memory leaks related to text features #6330 [nulano]
Use double quotes for version check on old CPython on Windows #6695 [hugovk]
Remove backup implementation of Round for Windows platforms #6693 [cgohlke]
Fixed set_variation_by_name offset #6445 [radarhere]
Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]
Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]
Added ExifTags enums #6630 [radarhere]
Do not modify previous frame when calculating delta in PNG #6683 [radarhere]
Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]
Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]
Added GPS TIFF tag info #6661 [radarhere]
Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]
Do not attempt normalization if mode is already normal #6644 [radarhere]
... (truncated)
d594f4c
Update CHANGES.rst [ci skip]909dc64
9.3.0 version bump1a51ce7
Merge pull request #6699 from hugovk/security-libtiff_buffer2444cdd
Merge pull request #6700 from hugovk/security-samples_per_pixel-sec744f455
Added release notes0846bfa
Add to release notes799a6a0
Fix linting00b25fd
Hide UserWarning in logs05b175e
Tighter test case13f2c5a
Prevent DOS with large SAMPLESPERPIXEL in Tiff IFDDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps html5lib from 0.999 to 0.999999999.
Sourced from html5lib's changelog.
6a73efa
Yes, another release, already. :(e0dc25f
Fix attribute order to the treebuilder to be document ordera3b8252
Back to -devebf6225
0.99999999 release! Let's party!a8ba43e
Merge pull request #270 from gsnedders/rename_stuff8cb144b
Update the docs after all the renaming and add CHANGES00977d6
Rename a bunch of serializer module variables to be underscore prefixed18a7102
Have only one set of allowed elements/attributes for the sanitizerc4dd677
Move a whole bunch of private modules to be underscore prefixed8db5828
Rename treewalkers.lxmletree to .etree_lxml for consistencyDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps lxml from 3.3.3 to 4.9.1.
Sourced from lxml's changelog.
4.9.1 (2022-07-01)
Bugs fixed
- A crash was resolved when using
iterwalk()
(orcanonicalize()
) after parsing certain incorrect input. Note thatiterwalk()
can crash on valid input parsed with the same parser after failing to parse the incorrect input.4.9.0 (2022-06-01)
Bugs fixed
- GH#341: The mixin inheritance order in
lxml.html
was corrected. Patch by xmo-odoo.Other changes
Built with Cython 0.29.30 to adapt to changes in Python 3.11 and 3.12.
Wheels include zlib 1.2.12, libxml2 2.9.14 and libxslt 1.1.35 (libxml2 2.9.12+ and libxslt 1.1.34 on Windows).
GH#343: Windows-AArch64 build support in Visual Studio. Patch by Steve Dower.
4.8.0 (2022-02-17)
Features added
GH#337: Path-like objects are now supported throughout the API instead of just strings. Patch by Henning Janssen.
The
ElementMaker
now supportsQName
values as tags, which always override the default namespace of the factory.Bugs fixed
- GH#338: In lxml.objectify, the XSI float annotation "nan" and "inf" were spelled in lower case, whereas XML Schema datatypes define them as "NaN" and "INF" respectively.
... (truncated)
d01872c
Prevent parse failure in new test from leaking into later test runs.d65e632
Prepare release of lxml 4.9.1.86368e9
Fix a crash when incorrect parser input occurs together with usages of iterwa...50c2764
Delete unused Travis CI config and reference in docs (GH-345)8f0bf2d
Try to speed up the musllinux AArch64 build by splitting the different CPytho...b9f7074
Remove debug print from test.b224e0f
Try to install 'xz' in wheel builds, if available, since it's now needed to e...897ebfa
Update macOS deployment target version from 10.14 to 10.15 since 10.14 starts...853c9e9
Prepare release of 4.9.0.d3f77e6
Add a test for https://bugs.launchpad.net/lxml/+bug/1965070 leaving out the a...Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps reportlab from 3.0 to 3.5.55.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps numpy from 1.8.2 to 1.22.0.
Sourced from numpy's releases.
v1.22.0
NumPy 1.22.0 Release Notes
NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:
- Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
- A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
- NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
- New methods for
quantile
,percentile
, and related functions. The new methods provide a complete set of the methods commonly found in the literature.- A new configurable allocator for use by downstream projects.
These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.
The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.
Expired deprecations
Deprecated numeric style dtype strings have been removed
Using the strings
"Bytes0"
,"Datetime64"
,"Str0"
,"Uint32"
, and"Uint64"
as a dtype will now raise aTypeError
.(gh-19539)
Expired deprecations for
loads
,ndfromtxt
, andmafromtxt
in npyio
numpy.loads
was deprecated in v1.15, with the recommendation that users usepickle.loads
instead.ndfromtxt
andmafromtxt
were both deprecated in v1.17 - users should usenumpy.genfromtxt
instead with the appropriate value for theusemask
parameter.(gh-19615)
... (truncated)
4adc87d
Merge pull request #20685 from charris/prepare-for-1.22.0-releasefd66547
REL: Prepare for the NumPy 1.22.0 release.125304b
wipc283859
Merge pull request #20682 from charris/backport-204165399c03
Merge pull request #20681 from charris/backport-20954f9c45f8
Merge pull request #20680 from charris/backport-20663794b36f
Update armccompiler.pyd93b14e
Update test_public_api.py7662c07
Update init.py311ab52
Update armccompiler.pyDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Adds a requirement for entries in the DRP to have an image of a lab notebook uploaded with them.
Also fixes a bug with license redirects if the license is altered during an operation by a user such as deletion of a reaction, where the redirect takes the user back to a page with no response.
Hotfix, fixes the immediate issue with unicode encodings which was breaking the reactant detail templates.
This release updates the code to be Python 3 compatible. Note that this is not reverse-compatible with python 2 and therefore your local install will have to be upgraded to python 3. The documentation has been updated to reflect the python 3 install process.
In addition, this release fixes the following bugs:
Fixed issues with imports under specific circumstances caused by java-like file names (e.g. a module which contains the class Compound
) and imports in init.py files; this issue should now go away with the renaming of the files.
Incidentally fixed unicode issues caused by interactions with templates in python 2.
This release changes the database ontology so that the relationship between compounds and lab groups is more accurately reflected in the database structure. As a side-effect this prevents the bug where the same compound from different lab groups would show up as an option for reactants in a chemical reaction.
Because of the new ontology, some features have been removed because they are not utilised by current users, namely the ability to upload CSVs of compounds and also the ability to use a form to search the compound guide. These may be re-instated in the future if requested.
Warning
This release includes one or more data migrations. It is highly recommended that before upgrading to this release that you back up your database.
Some descriptor calculation plugins which do not have unit tests as a part of the DRP codebase may not be compatible with this release. If this emerges to be the case, remove them from your plugins settings in your settings.py file.
This hotfix prevents 500 errors arising from chemspider server errors and a bug in the drp descriptor calculations code. Further, this hotfix also makes sure that the double-click prevention javascript is now compatible with chrome.
Includes improvements, additions, and bugfixes to the descriptor calculation. It also brings the code base into conformance with PEP8 and PEP257 style guidelines.
Descriptors: The calculate_descriptors command now accepts a whitelist of descriptor headings to calculate, a list of specific plugins to calculate, whether to only calculate compound or only reaction descriptors, the pk of a reaction or compound to start calculations at, and a setting to convert different warnings to errors. The molecular descriptor polar surface area has been added to the chemaxon plugin. Boolean molecular descriptors for the presence of elements with given valence, group, and period have been added (counting all elements and just inorganic elements). A new aggregation of boolean molecular descriptors to boolean reaction descriptors has been added: True iff the molecular descriptor is true for any compound in the reaction with the given role. Descriptor plugins have been refactored so that each plugin corresponds to a single calculator software. Minimum values have been added to chemaxon molecular descriptors where appropriate. Geometric mean descriptors have been given a minimum value of 0. Explicit checks for zero and negative values before taking the geometric mean have been added. The former sets the value to zero (unchanged from the default behavior of scipy, but no longer issues a warning) and the latter throws a ValueError. Molecular weight has been moved from the example plugin to its own drp_rdkit plugin. A new example descriptor "length" (the length of the SMILES string) has been added. During descriptor calculation, all descriptor values are now validated before they are saved. Reaction hash has been fixed. Previously compounds were not sorted before being used to update the hash, so identical compound sets could produce different reaction hashes. They are now first sorted by abbreviation. Reaction descriptors that are based on the reaction pH have been added. A bug that caused some ChemAxon molecular descriptors to not be calculated has been fixed.
Tests: Running the tests now allows arguments of specific modules to run and the --failfast flag, which causes the test runner to halt on the first failed test. File tests now include pep257 (previously broken) and check the entire project expect for explicitly excluded paths. A corner-case bug was fixed wherein permissions for temporary files would break tests. These have been made more user-specific and so should not break.
Model building: Model building management added. ExploratorySplitter (formerly MutualInfoSplitter) methodology has changed. Test set size is now guaranteed to within a specified percentage of the total dataset size. A set of reactions is now excluded from the test set only if it would push it outside of these bounds (previously all reaction sets with >35 reactions were excluded).
Hooks: hooks have been added that check if there have been changes in migrations, drp_hooks, or settings_example and notifies the user.
Reaction Saving:
The reaction saving and creation pipeline has been adjusted to prevent a 500 server error when the save button was double clicked. A javascript snippet has been added to prevent double clicks like this accidentally occuring, as well as some better validation on the server side. Reactions are no longer saved twice by compound quantity save methods.
Reaction Viewing:
The sort order of reactions has been reversed so that the most recently inserted reactions appear at the top of the list. The owning labgroup's name now also appears in this list.
Also note that this release includes two minor migrations that are mostly django-related (may not even touch the database).