text:
API: consistency in input validation

Is your feature request related to a problem? Please describe.
In #13761, I proposed a reflexion around input validation. The discussion was more focused on speed and in the end did not lead to anything.
This proposal is different and focuses on using a common infrastructure/tooling for input validation.
We currently don't have a convention when it comes to add input validation. Inputs are typically checked at the beginning of a function, with or without extra things around. And more recently in stats for instance, we have been trying to put all validations within a function with a pre/suffix _iv.
Regarding the validations we are also not consistent with checks that we are doing. We rarely check dtypes, sometimes check dimensions or we just forget to add some checks. When we have a specific check, we also see a wide range of implementations to do the same thing.
Lastly, our error messages are inconsistent. They are not formatted the same way, use the same formulation and don't have the same level of information.
Describe the solution you'd like.
TL;DR
I propose to use a standardized data validation infrastructure. This would allow to share common validators, ensure input coverage, consistent error messages, lighter testing (possibly none if we trust the solutions), easier implementation, easier maintenance.
I investigated 2 solutions: a wrapper strategy; and the use of an external library (Pydantic).
Wrapper
There is one solution close to us coming from Scikit-learn.
They are using a wrapper on top of the functions they want to validate the inputs from. Custom classes are used under the hood to do the validation.
Pydantic
Pydantic is one of the most widely used data validation library in the Python ecosystem. It's fast (Rust core), flexible, well maintained and funded and used as a dependency by many libraries like FastAPI.
Here the solution is not a wrapper, but uses classes similar to Data Classes and rely more on type annotations.
Proof of Concept
I made 2 POC to show how this could work. Please be indulgent, these are POC meant to show that it works (tests are passing for both solutions) and how we could leverage some of the features of these options:

https://github.com/tupui/scipy/pull/30
https://github.com/tupui/scipy/pull/31

On these POC, I did not measure a noticeable difference in terms of speed (between main and the 2 solutions)
Describe alternatives you've considered.
We could do nothing and try to document the way we want to do input validation. I argue that it's more work (learning the process, review, testing, maintenance down the road) for everyone than to use one of the proposed solution.
In #13761, I originally proposed to have 2 APIs. A fast one with validation and another one without validation. This idea can still be discussed and used in combination with any other idea around standardisation.
There is at list another widely used library to do input validation: attrs. I did not test this approach, mostly because I am not a user. Their why not? section is interesting (although most things they say or like to regarding Pydantic are not relevant/true anymore with Pydantic 2.0).
Additional context (e.g. screenshots, GIFs)
No response

I prefer using the scikit-learn wrappers. This solution has less to learn, it seems to require less code to use than Pydantic (see @tupui's examples), the decorator approach stays completely out of the way of the function being validated, and the underlying library fits in a single file.
It only attempts to do the simple input validation on each argument independently, since more complex Interdependent relationships are probably best handled with custom code anyway.
We could vendor it, or we could consider asking sklearn to split it into a separate repo and include it as a submodule. Either way, we don't have to worry about adding a dependency or users having older versions. I don't think maintenance burden would be unmanageable compared to what we do now, which is to maintain separate input validation code in almost every function. And since Pydantic doesn't seem to have special support for the needs of scientific Python, it's probably best to have an easy way to customizing it to our needs.

I like the sklearn style input validation as well. Looks very simple to use and would make our validations much easier to maintain. Just thinking of all the different input validation ways of the different optimizations currently gives me chills..

I would distinguish 2 cases:

Input array validation
Input validation of all other parameters

At least the 2 POC PRs address the second point. For that one @jeremiedbb did a great job in https://github.com/scikit-learn/scikit-learn/pull/22722 and might answer questions about the scikit-learn solution better than me.
In scikit-learn, we also have the issue of nested (or repeated) input validation. This is solved by the prefer_skip_nested_validation argument of our solution.
Disclaimer: If have no experience with pydantic, but heard about it several times.

Copying a relevant comment after gh-19276 was closed:

Related to this is the possibility of optional parameters in array_namespace and compliance_scipy, or as_xparray, which could eventually eliminate the need for scipy._lib._util._asarray_validated (used in linalg). Here are its optional parameters:
"""
...
check_finite : bool, optional
    Whether to check that the input matrices contain only finite numbers.
    Disabling may give a performance gain, but may result in problems
    (crashes, non-termination) if the inputs do contain infinities or NaNs.
    Default: True
sparse_ok : bool, optional
    True if scipy sparse matrices are allowed.
objects_ok : bool, optional
    True if arrays with dype('O') are allowed.
mask_ok : bool, optional
    True if masked arrays are allowed.
as_inexact : bool, optional
    True to convert the input array to a np.inexact dtype.
...
"""

authors: dschmitz89 lorentzenchr lucascolley mdhaber tupui


text:
BUG: stats.differential_entropy: return values have changed (regression from v1.14)

Describe your issue.
With https://github.com/scipy/scipy/pull/21076, the values computed by stats.differential_entropy have changed beyond what I'd expect to be rounding errors. For example, with scipy 1.14, the code below gives Entropy: 2.358820400183337, but after https://github.com/scipy/scipy/pull/21076, it gives Entropy: 2.5285667498058793.
Based on my understanding of the PR, it shouldn't affect the differential entropy in any significant way. Is this change really intended?
Reproducing Code Example
import numpy as np
from scipy.stats import differential_entropy

values = np.array([1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 10, 11])
result = differential_entropy(values)
print(f"Entropy: {result}")

Error message
-

SciPy/NumPy/Python version and system information
1.15.0.dev0+1027.5247c04 2.0.0 sys.version_info(major=3, minor=12, micro=4, releaselevel='final', serial=0)
Build Dependencies:
  blas:
    detection method: pkgconfig
    found: true
    include directory: /root/conda/envs/scipy-dev/include
    lib directory: /root/conda/envs/scipy-dev/lib
    name: openblas
    openblas configuration: USE_64BITINT=0 DYNAMIC_ARCH=1 DYNAMIC_OLDER= NO_CBLAS=
      NO_LAPACK=0 NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP=0 PRESCOTT MAX_THREADS=128
    pc file directory: /root/conda/envs/scipy-dev/lib/pkgconfig
    version: 0.3.27
  lapack:
    detection method: pkgconfig
    found: true
    include directory: /root/conda/envs/scipy-dev/include
    lib directory: /root/conda/envs/scipy-dev/lib
    name: openblas
    openblas configuration: USE_64BITINT=0 DYNAMIC_ARCH=1 DYNAMIC_OLDER= NO_CBLAS=
      NO_LAPACK=0 NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP=0 PRESCOTT MAX_THREADS=128
    pc file directory: /root/conda/envs/scipy-dev/lib/pkgconfig
    version: 0.3.27
  pybind11:
    detection method: pkgconfig
    include directory: /root/conda/envs/scipy-dev/include
    name: pybind11
    version: 2.13.1
Compilers:
  c:
    args: -march=nocona, -mtune=haswell, -ftree-vectorize, -fPIC, -fstack-protector-strong,
      -fno-plt, -O2, -ffunction-sections, -pipe, -isystem, /root/conda/envs/scipy-dev/include,
      -DNDEBUG, -D_FORTIFY_SOURCE=2, -O2, -isystem, /root/conda/envs/scipy-dev/include
    commands: /root/conda/envs/scipy-dev/bin/x86_64-conda-linux-gnu-cc
    linker: ld.bfd
    linker args: -Wl,-O2, -Wl,--sort-common, -Wl,--as-needed, -Wl,-z,relro, -Wl,-z,now,
      -Wl,--disable-new-dtags, -Wl,--gc-sections, -Wl,--allow-shlib-undefined, -Wl,-rpath,/root/conda/envs/scipy-dev/lib,
      -Wl,-rpath-link,/root/conda/envs/scipy-dev/lib, -L/root/conda/envs/scipy-dev/lib,
      -march=nocona, -mtune=haswell, -ftree-vectorize, -fPIC, -fstack-protector-strong,
      -fno-plt, -O2, -ffunction-sections, -pipe, -isystem, /root/conda/envs/scipy-dev/include,
      -DNDEBUG, -D_FORTIFY_SOURCE=2, -O2, -isystem, /root/conda/envs/scipy-dev/include
    name: gcc
    version: 12.3.0
  c++:
    args: -fvisibility-inlines-hidden, -fmessage-length=0, -march=nocona, -mtune=haswell,
      -ftree-vectorize, -fPIC, -fstack-protector-strong, -fno-plt, -O2, -ffunction-sections,
      -pipe, -isystem, /root/conda/envs/scipy-dev/include, -DNDEBUG, -D_FORTIFY_SOURCE=2,
      -O2, -isystem, /root/conda/envs/scipy-dev/include
    commands: /root/conda/envs/scipy-dev/bin/x86_64-conda-linux-gnu-c++
    linker: ld.bfd
    linker args: -Wl,-O2, -Wl,--sort-common, -Wl,--as-needed, -Wl,-z,relro, -Wl,-z,now,
      -Wl,--disable-new-dtags, -Wl,--gc-sections, -Wl,--allow-shlib-undefined, -Wl,-rpath,/root/conda/envs/scipy-dev/lib,
      -Wl,-rpath-link,/root/conda/envs/scipy-dev/lib, -L/root/conda/envs/scipy-dev/lib,
      -fvisibility-inlines-hidden, -fmessage-length=0, -march=nocona, -mtune=haswell,
      -ftree-vectorize, -fPIC, -fstack-protector-strong, -fno-plt, -O2, -ffunction-sections,
      -pipe, -isystem, /root/conda/envs/scipy-dev/include, -DNDEBUG, -D_FORTIFY_SOURCE=2,
      -O2, -isystem, /root/conda/envs/scipy-dev/include
    name: gcc
    version: 12.3.0
  cython:
    commands: cython
    linker: cython
    name: cython
    version: 3.0.10
  fortran:
    args: -march=nocona, -mtune=haswell, -ftree-vectorize, -fPIC, -fstack-protector-strong,
      -fno-plt, -O2, -ffunction-sections, -pipe, -isystem, /root/conda/envs/scipy-dev/include
    commands: /root/conda/envs/scipy-dev/bin/x86_64-conda-linux-gnu-gfortran
    linker: ld.bfd
    linker args: -Wl,-O2, -Wl,--sort-common, -Wl,--as-needed, -Wl,-z,relro, -Wl,-z,now,
      -Wl,--disable-new-dtags, -Wl,--gc-sections, -Wl,--allow-shlib-undefined, -Wl,-rpath,/root/conda/envs/scipy-dev/lib,
      -Wl,-rpath-link,/root/conda/envs/scipy-dev/lib, -L/root/conda/envs/scipy-dev/lib,
      -march=nocona, -mtune=haswell, -ftree-vectorize, -fPIC, -fstack-protector-strong,
      -fno-plt, -O2, -ffunction-sections, -pipe, -isystem, /root/conda/envs/scipy-dev/include
    name: gcc
    version: 12.3.0
  pythran:
    include directory: ../../../root/conda/envs/scipy-dev/lib/python3.12/site-packages/pythran
    version: 0.16.1
Machine Information:
  build:
    cpu: x86_64
    endian: little
    family: x86_64
    system: linux
  cross-compiled: false
  host:
    cpu: x86_64
    endian: little
    family: x86_64
    system: linux
Python Information:
  path: /root/conda/envs/scipy-dev/bin/python3.12
  version: '3.12'

cc @mdhaber

I'll take a look. The tolerances on some of the unit tests are quite loose due to lack of reference implementations for some methods; we'll have to add something extra to guard against this. Thanks for checking!

@michaelpradel I seem to remember you mentioned you were finding these through a tool? Would you be able to point us in the direction of the tool you are using to find these? It seems like it would be helpful while we are doing a lot of these mechanical conversions.

@j-bowhay: Thanks for asking. The tool is an academic project that is still under development. For now, it's the best for everyone if I just run it on your PRs. We're planning to eventually make it easy to integrate into CI pipelines. Once we've reached that state, I'll definitely let you know.

@michaelpradel no obligation but if you could try it on #21068 that would be very helpful

source: gharchive/issue

authors: j-bowhay lucascolley mdhaber michaelpradel

repo: scipy/scipy

license_type: permissive

license_source: github-api


text:
BUG: np.argwhere fails on sparse inputs

The documentation for np.argwhere states that it is equivalent to np.transpose(np.nonzero(a)). The second form works fine with sparse inputs, but argwhere throws a strange warning and returns incorrect results.
In [1]: import scipy.sparse as ss

In [2]: a = ss.rand(5,5, density=0.3)

In [3]: np.transpose(np.nonzero(a))
Out[3]:
array([[0, 0],
       [0, 1],
       [2, 1],
       [4, 1],
       [3, 2],
       [1, 4],
       [3, 4]], dtype=int32)

In [4]: np.argwhere(a)
/usr/local/lib/python2.7/site-packages/scipy/sparse/base.py:180: RuntimeWarning: tp_compare didn't return -1 or -2 for exception
  if self.shape == (1, 1):
Out[4]: array([[0]])

This now works for all sparse matrix formats, because they have transpose and nonzero methods which are called by np.nonzero and np.transpose.

authors: perimosocordiae rgommers


text:
xrange() was removed in Python 3 in favor of range()

Reference issue

What does this implement/fix?

Remove all instances of from scipy._lib.six import xrange and
convert all calls to xrange() into calls to range().
Additional information

Looks reasonable modulo a possible backcompat break. I'd suggest to consider it separately and remove from this PR.
Also, I've labelled it Py3K (after numpy), so that we can group these rip-out-py2 PRs.

source: gharchive/pull-request

authors: cclauss ev-br


text:
BUG: special: Fix two XSLOW test failures.

When SCIPY_XSLOW is defined, the tests test_riemann_zeta and test_zetac (that compare the results of zeta and zetac to the results computed with mpmath) are run with 5000 points, and it turns out that the input value 1 is included in that case.  The SciPy functions returns inf, but mpmath.zeta(1) raises an exception, and that caused the tests to fail.
The fix is to wrap the mpmath function to return mpmath.inf when the input is 1.  After fixing that, both tests then failed because some inputs result in a relative error of roughly 2e-13, so I bumped the tolerance up to 5e-13.

I tested that this can be cleanly cherry-picked to maintenance/1.9.x and it has a defect label, so adding a backport label now.

Thanks @tylerjereddy.

authors: WarrenWeckesser tylerjereddy


text:
MAINT: update codeowners.

Please update as wished 😃
(Reminder that only people listed in the maintainer team can be listed in this file, it's a GH thing.)

Thanks all. There is no rush so I will leave this open a bit in case.

@tupui thanks for updating this. Would you mind adding me for all meson.build files?

@tupui thanks for updating this. Would you mind adding me for all meson.build files?

Done. I did meson* to cover the option file. If I understood the syntax correctly that should work.
Feel free to adjust in general 😃

While thinking about #18298, I was wondering who the codeowner for scipy/integrate is, and it seems this entry is missing.
Other folders that are missing AFAICT:
scipy/_build_utils
scipy/_lib
scipy/cluster
scipy/constants
scipy/datasets
scipy/io
scipy/misc
scipy/ndimage
scipy/odr

Those don't have a dedicated owner. For some, like _build_utils, it may be me as the default/fallback - but I don't want to be listed, because I don't want to get pinged for each PR that touches them. CODEOWNERS is not intended to be a comprehensive listing of all maintainers, instead it is for folks who want to actively opt into getting pings for each PR that touches that file/directory.

CODEOWNERS is not intended to be a comprehensive listing of all maintainers, instead it is for folks who want to actively opt into getting pings for each PR that touches that file/directory.

Is there something in between "gets pinged for every PR that touches a given path" and "can be asked if there are fundamental questions/decisions about that module"? If not, would it make sense to introduce something like that (even informally)?

There isn't really an in-between. We had the kind of list you're interested in here, it was doc/MAINTAINERS.rst. It was well out of date more often than not though, so we decided to get rid of it. I'm not too interested in reintroducing it, because it's a bunch of churn and it's never clear where some lines are (when do you remove some folks when they're inactive for a while, etc.).

We had the kind of list you're interested in here, it was doc/MAINTAINERS.rst. It was well out of date more often than not though, so we decided to get rid of it.

Fine by me, thanks for the context. Realistically, that means any fundamental questions in such modules fall to you or @larsoner, seeing that Pauli isn't really that active anymore. I'm fine with that too, but wanted to at least ask if there's a more fine-grained fallback.

The merge conflict was because main already had the Azure config deleted, so that was trivial to resolve. I squash-merged this in--it has approvals, and release branching is coming in ~10 days or so (optimistically, at least...).
The GitHub UI also shows a green check in the diff for a valid codeowners file, so flushing the CI is pointless.

authors: h-vetinari rgommers tupui tylerjereddy


text:
ENH: add more interpolation methods to RegularGridInterpolator.

This includes the addition of 5 3 new spline-based interpolators for
scipy.interpolate.RegularGridInterpolator. These allow for smooth interpolation
on a regular grid in an arbitrary number of dimensions. These also provide
gradient calculations of the interpolated result with respect to an
evaluation point or set of points.

A bit more detail: This includes the addition of 5 new spline-based interpolators for
scipy.interpolate.RegularGridInterpolator:

slinear
quadratic
cubic
quartic
quintic

These each allow for smooth interpolation
on a regular grid in an arbitrary number of dimensions. These methods also allow for
gradient calculations of the interpolated result with respect to an
evaluation point or set of points, via call to a new method called gradient:
interp = RegularGridInterpolator(points, values, method='cubic')
result = interp(x)
deriv = interp.gradient(x)

Note that gradients cannot be computed for the two currently existing interpolation methods, linear and nearest.
These additional 5 methods are examples of tensor spline interpolation. They work by applying instances of UnivariateSpline to each 1D sequence present in the last dimensions of an array of data at the point of interest, "collapsing" these values into the next dimension, and continues
until a final value (and its gradient) is reached. The interpolation can be understood as being conducted by functions in a basis constructed from the tensor product of the 1D splines.
This is useful to my work for various surrogate modeling purposes, but is
general enough that it could be useful to others. I found no other existing
n-dimensional interpolation library in Python for structured data that includes gradients.
Though I've implemented and tested the functionality and API as I'm currently using it in my own projects, I am certainly open to comments and changes for consideration for inclusion into scipy.interpolate.

Quick comment: please don't do unrelated whitespace cleanup in a PR that
does something else.
I'd also prefer not using UnivariateSpline in the implementation. That
is a semi-deprecated interface to FITPACK. If possible, consider using
make_interp_spline so that FITPACK is not used at all (if you want to
use FITPACK, please use splrep+BSpline or splrep+splev). The issue with
FITPACK is that some people may expect that the knots of the spline
coincide with grid points --- IIRC this is not guaranteed with FITPACK
with its automatic grid selection.

Sorry, auto-pep8 plugin issue with the whitespace. I can revert that.
I think make_interp_spline should work fine as well, let me test that on my end.

@thearn that test failure in scipy.special is unrelated, due to a recent change in numpy that wasn't quite correct.

Needs a rebase

This PR has been silent for some time now, any ETA on the new methods?

This PR has been silent for some time now, any ETA on the new methods?

No, it has stalled - if you'd be interested in helping move it forward, that would be useful.

This PR has been silent for some time now, any ETA on the new methods?

No, it has stalled - if you'd be interested in helping move it forward, that would be useful.

I'll take a look, if help still is needed, some time in the future after I am done with my current projects.

Now that gh-15357 is in, we can carry on looking at further enhancements from this PR. As I see, there are two major things, which could probably be done in two separate PRs:

what to do when the number of points along a dimension is smaller then the interpolation degree plus one. ISTM a binary switch kwarg is suboptimal, so the options are to either always raise a hard error (this is what gh-15357 does), or adjust the spline degree along the dimension. The latter is similar to what e.g. pchip does in 1D for just two points for a cubic polynomial.

Gradients. This is huge! Maybe the right API is to mirror what minimize(..., jac=True) does: if a compute_gradients switch is True, the calling the RGI instance returns a tuple of arrays, for the values and gradients. This has a downside of course that the return type of RGI.__call__  depends on the arguments. But this is conceptually simpler and way better performance-wise then a requiring separate gradients call?

Also, from a consistency POV it seems better to have it compute gradients for all methods, with method=linear being piecewise-constant gradients and method=nearest is all zeros.
Thoughts?

@AtsushiSakai @thearn would you be interested in continuing this? I'll gladly review --- or I can take over if you prefer.

Thank you. I can continue these, but I need time to implement big feature like gradients because I don’t have enough spare time these days. So, It is ok for me that  you can take over these. If you have something which has higher priority, you can leave these. I will try these when I have time.

So, the current status of porting the gradient computations from this PR: the approach in this PR is quite ingenious indeed, and it can be used in user code today by just copy-pasting the RGI class from this PR, which is pure python. This is probably very slow since

the approach is recursive in the number of dimensions, and
each 1D interpolation constructs a throw-away BSpline object.

And the code get significantly more complicated as compared to the current RGI class which has the evaluations but not gradients.
The long-term plan for scipy.interpolate is to finally implement an NdBSpline class to do evaluations of tensor product splines. This would allow to compute derivatives much more easily and efficiently.
Therefore, I think we should hold on porting this, and re-evaluate once NdBSpline is implemented.
(Help with this is appreciated BTW).
I'm going to leave this PR open though to make it more discoverable and to boost the "we want this" signal.

A belated thank you @thearn for starting this project. While it took us an embarrassing amount of time to act, and not all of your code made it, the idea did strike a chord;  the lengths you had to go to work around limitations of then-current scipy.interpolate served as a helpful guidance for improving the library. Thank you!

Thank you, @ev-br !

authors: AtsushiSakai caniko ev-br pv rgommers thearn


text:
is it possible to create a list of buckets on startup?

thanks

oh, also access and secreet keys.
I'm used to adobe fakes3, so for me the ideal dev tool would have:

list of buckets created on startup
accept any credential (or set them on startup)
data persistance (we have this)

thanks

Hello @masterkain 👋 Please excuse my late response.
For the auto-creation of buckets, please see https://github.com/scireum/s3ninja/issues/189. Considering that S3 Ninja is intended for testing, you should create the buckets during the setup phase of your tests. (Or, in case of a product, provide setup routines for fresh installations.)
Thanks for your proposed extensions. Feel free to provide pull requests. 😉 Unfortunately, we currently do not have the time to develop S3 Ninja beyond what we require ourselves for our own scenarios. However, I will provide assistance if you have questions implementing the features yourself.

Closing this as the buckets should be created externally via the API, and PR #222 now offers the option to create public buckets. For the arbitrary credentials, see the discussion in #66. Thanks for your input!

authors: jakobvogel masterkain

license: mit

license_source: bigquery


text:
Allow to run it embeded from a test

It would be nice to be able to launch/stop the server from the test by using some Java class. There shouldn't be any external dependency other than a jar (that could be available in maven).

There isn't any external dependency. You can add s3ninja as maven dependency and then simply execute a "Sirius.start()" / "Sirius.stop()" - let me know if that helped you...

Thanks for the information @andyHa.
It would be very nice to have this information and some example in the main documentation/site.
Great work.

authors: andyHa chris-zen


text:
Fix object deletion response status

S3 returns 204 No Content instead of 200 Success status.

Version 7.2.2 with your fix is currently being published.

Thanks! That was fast 👍

authors: almirsarajcic jakobvogel


text:
Fix timestamp bug packfile upload

Fixes #536
Review Checklist

Tests were added to cover all code changes
Documentation was added / updated
Code and tests follow standards in CONTRIBUTING.md

Hi @rentzso, let me know if this doesn't fix the issue.

repo: scitran/core

license: MIT


text:
Upload file using Selenium Hub

Hey there,
First of all, thanks for the awesome lib!
Java has https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/FileDetector.html to work around this issue: http://stackoverflow.com/questions/16205299/create-and-upload-a-file-on-selenium-grid .
I'd be interested in implementing this in agouti, are you interested?
My initial plan would be to add a FileDetector field under WebDriver and then provide the implementations that would satisfy this interface.

I'm curious about how you plan to implement this. It seems like you would want to modify agouti.UploadFile to transfer the intended file to the Selenium node before entering the filename into the element(s). How would you determine where that Selenium node is using the Webdriver Wire Protocol? How would you transfer the file to it? Could this be done in a WebDriver-agnostic way (even if it only works with Selenium right now)?

Yeah, upon further investigation I came to the same questions.
Will investigate further.

Closing due to inactivity.

Honestly don’t remember.
On Mon, 20 Jun 2022 at 07:13 latifuluman @.***> wrote:

Yeah, upon further investigation I came to the same questions. Will
investigate further.
hi @pcasaretto https://github.com/pcasaretto , I have encountered with
the same problem. Did you solve the file upload over selenium problem?
—
Reply to this email directly, view it on GitHub
https://github.com/sclevine/agouti/issues/75#issuecomment-1160250761,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGHPDYNLTOYHM25UVSNXATVQA74XANCNFSM4CHU5EZA
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Paulo L F Casaretto

authors: pcasaretto sclevine

repo: sclevine/agouti


text:
Sadashay branch

Changes
Added Final changes in Collection Class ( created in #14 ).
This class implements the Generate functionality for generating NFT Image and Metadata files from Layer images.
Created FileStorage Abstract Class and the following classes implementing it.
These classes have functions for uploading NFT Collections and Single NFTs to a File Storage platform.

NFT.storage Class for uploading to NFT.storage
Pinata Class for uploading to Pinata
Storj Class for uploading to Storj
Infura Class for uploading to Infura
Arweave Class for uploading to Arweave using Bundlr

Created Contract Class.
This class implements the following functionalities.

Programatically generating ("Drafting") ERC721 and ERC1155 Smart contracts as solidity files.
Deploying Smart contracts to any of the following Blockchain networks

Ethereum: Mainnet, Ropsten, Rinkeby, Goerli, Kovan
Polygon: Mainnet, Mumbai

Interacting with deployed Smart contracts on any of the above networks

Added Tests for all the above classes (Collection, NFT.storage, Pinata, Storj, Infura, Arweave, Contract)
Added Example scripts for each functionality (Generate, Upload, Draft, Deploy and Interact)
Created Documentation for the project

Please merge #25 before merging this.

Add a credentials file for tests and add mention it in readme

Lint the package !

Add content type for nft asset while storing in storage services, you can use mime package

Add contributors guideline, docs and diagram

authors: SadashayKanungo mbcse

repo: scorelab/NFT-Toolbox


text:
How can I use dependent assembly plugins with spkl?

How can I use dependent assembly plug-ins with spkl?
Or can use spkl with merge utils, like Ilrepack/fody?

You can use ILRepack.Lib.MSBuild.Task and than publish with spkl as usual. You can find sample repack config here: https://github.com/FixRM/D365Extensions

repo: scottdurow/SparkleXrm


text:
[VT-66] Alternate base 'task' command in vit

Ben Boeckel on 2012-11-26T20:20:16Z says:
It should be possible to pass additional arguments to invocations of task from vit (e.g., pro:XXX to only operate on project XXX tasks).

Migrated metadata:
Created: 2012-11-26T20:20:16Z
Modified: 2014-02-09T02:23:41Z

steve rader on 2012-11-26T22:03:47Z says:
Agreed.
More details later.

steve rader on 2012-11-28T19:03:27Z says:
All reports are now available by any one of three ways:

type ":REPORTNAME", and hit enter

type ":" and  to cycle through all known reports to the one you want, and hit enter.

type ":STR" and  to cycle through reports starting with STR, and hit enter.

In other words, Vit supports navigation to reports using "tab completion" more or less
like using Vi/Vim.

Ben Boeckel on 2012-11-28T22:28:44Z says:
It doesn't seem to be working here. I just get "REPORTNAME: command not found".

steve rader on 2012-11-28T22:42:50Z says:
Ben Boeckel wrote:

It doesn't seem to be working here. I just get "REPORTNAME: command not found".

"REPORTNAME" needs to be some valid report name, not "REPORTNAME" verbatim.
Try ":list" then
Does that work??
I suppose the error msg should be "REPORTNAME: no such report or command not found" huh.
:)

repo: scottkosty/vit


text:
Any chance that the telecope picker could be a color scheme, too?`

Hi so I love this theme, thank you. I  also really like the telescope picker colors, I find that black is perfectly black without being 'one hundred percent black', and the red and green for 'find' files' and 'files preview' are perfectly matched to it, too. I can't help but wonder if that would be a good color theme in it's own right, of course with some other colors of the same hue thrown in, too? Just a thought, sorry if this is not the place for it. And I really like the color schemehere, too!

Thanks for the feedback! I'm glad you like the colorscheme.
The telescope theming was something I transplanted over from my personal neovim configuration. Feel free to take a look at this commit to see how it can be implemented (and customised to your liking).
If you're after the specific colors I'm using in cyberdream, they can all be found in colors.lua. The background for telescope is bgalt.
Hope this helps!

It does, thanks 😊

authors: emilBeBri scottmckendry


text:
Exclude jobauth as auth for jobs

It fixes #35

I made similar changes in #37 to explain more with code than words.

authors: dangra torymur

repo: scrapinghub/python-hubstorage


text:
fix#77: protocol in CRAWLERA_URL

Fix #77
Instead of a better exception I log an warning that the URL was updated.
If no protocol is provided, http:// is set.
If the protocol was https:// then it is updated to http://

Not sure I agree with If the protocol was https:// then it is updated to http://, if crawlera in the future decides to change the protocol of the proxy it will break.
I am ok with adding http if no protocol provided. Would leave the rest as is and not make any assumption on which protocols crawlera supports.

Makes sense.
I'll at least log a warning that protocol is https, what do you think?

Is it common to mistakenly add https:// as protocol to Crawlera URL?  I don't mind logging a warning about it but surely the middleware shouldn't change it to http://.

hey @dangra and @hcoura . Fixed the issue with https://
The CI is breaking because the tests install scrapy 1.7 and there was a change in the API.
I can set requirements to scrapy 1.6 here, fix the tests, or create another issue to fix it.
What do you think?

https://github.com/scrapy-plugins/scrapy-crawlera/commit/55de303f774f0b695bc30af970be8486bb807313 fixed the test issue, rebasing against master should do the job.

Updated, thanks @Gallaecio

thanks @ejulio and everyone here !

authors: Gallaecio dangra ejulio hcoura

repo: scrapy-plugins/scrapy-crawlera


text:
Fix statusbar watch

Fixes api subscription logic
Updates memory references to expect in this format { "ok": 1, "data": { "expressions": {}, "values": {} } }
Fixes #16 to work with current screeps-api version 1.7.2
Latest version of screeps-api 1.9.0 also needs screepers/node-screeps-api#46 to be applied

Hey @pyrodogg, thanks a lot for submitting a PR for this! The code looks great so I will go ahead and merge. I'll go ahead and push a patch version as well.

Thanks for merging!
I realized that screeps-api 1.7.2 was installed during development because of package-lock.json. When installing screeps multimeter globally from npm, there is no package-lock.json so it installs 1.9.0.
So most users will still need to wait for the screeps-api PR to also get merged to really get things working

Ah, this is a bit confusing: somehow the package ended up with package-lock.json as well as yarn.lock. I will clean that up, the project should use yarn.

authors: CGamesPlay pyrodogg

repo: screepers/screeps-multimeter


text:
🛑 Material Snake is down

In 528a8f6, Material Snake (https://snake.atanas.info) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Material Snake is back up in bb18841.

repo: scriptex/uptime


text:
backed="r" is leaking memory

Please make sure these conditions are met

[X] I have checked that this issue has not already been reported.
[X] I have confirmed this bug exists on the latest version of anndata.
[ ] (optional) I have confirmed this bug exists on the master branch of anndata.

Report
Hello,
Using the lazy loader, I am trying to load a big h5ad file that can't fit into memory. It works as expected and doesn't load the whole file into memory at the start.
However, if I started to read the data row by row, the memory utilization increased to the same file size.
My expectation is that the lazy loader should read each row and free its associated memory after it is deleted, which is not the case.
How can we solve this issue?
Code:
import scanpy as sc
import sys
from tqdm import tqdm

file_name = "file.h5ad"

adata_r = sc.read_h5ad(file_name, backed="r")

for idx in tqdm(range(adata_r.X.shape[0])):
    row = adata_r.X[idx].toarray()
    del row

100%|▌| 800000/800000 [20:00<20:00, 700.60it/s]

Versions
-----
anndata             0.10.8
scanpy              1.9.8
session_info        1.0.0
tqdm                4.66.5
-----
IPython             8.21.0
jupyter_client      8.6.0
jupyter_core        5.7.1
jupyterlab          2.3.2
notebook            6.4.10
-----
Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]
Linux-5.10.219-208.866.amzn2.x86_64-x86_64-with-glibc2.35
-----
Session information updated at 2024-08-14 12:33

Hello @agemagician, we will need a little bit more to go on here.  Your example did not produce the same results for me on a large dataset I had locally.  Could you share your dataset?  Are you sure it's not CSC?

authors: agemagician ilan-gold

repo: scverse/anndata


text:
fixed requirements to match what's used

Some imports were not in the requirements and some required packages were not used. Fixing this.

@melonora I checked locally that the installation, the tests and the docs generation work. I think we can merge.

Actually gonna merge and make a release, not much to review here.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (01fd681) 78.14% compared to head (64c670b) 78.14%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #185   +/-   ##
=======================================
  Coverage   78.14%   78.14%
=======================================
  Files          17       17
  Lines        1821     1821
=======================================
  Hits         1423     1423
  Misses        398      398

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Something still looks off to me: napari-plugin-engine ?
Looks like this is a npe2 plugin (napari.yaml) to me.

you are right @psobolewskiPhD. The hook here was used to make the plugin the default reader for .zarr which the user can just do via preferences/plugins as far as I understand. Will adjust.

Thanks both, I have made a new release. CC @goanpeca

authors: LucaMarconato codecov-commenter melonora psobolewskiPhD

repo: scverse/napari-spatialdata


text:
Refactor examples & CI

Split examples and unit tests into two CI tasks
Refactor examples: Update runner, and allow for running not only Datastax example
To ensure some testing on different theoretically supported node version updated the examples CI so they run on all major supported versions up to node20.

Unit tests are failing as they lack #53.
Examples are failing as the branch already contains some changes to the driver code


text:
cluster: use dummy metadata when initial fetch fails

Currently, the driver fetches topology and schema information (we call
it metadata) on Session creation and fails if an error occurs during
fetching/parsing of that data - despite the fact that the metadata is
not vital for the driver to work (although some information is needed
for better performance, e.g. topology info and keyspace replication
strategies).
While, in ideal world, we would like the metadata fetch to always
succeed, it can fail either due to our fault (e.g. bugs like #437) or
reasons beyond our control (connection errors, non-backwards compatible
changes in system tables). Therefore, we would like for the driver to
work even when no metadata is available.
This commit modifies the initial metadata fetch code so that, in case it
fails, a dummy metadata is used instead.
Fixes: #438
Pre-review checklist

[x] I have split my patch into logically separate commits.
[x] All commit messages clearly explain what they change and why.
[ ] ~I added relevant tests for new features and bug fixes.~
[x] All commits compile, pass static checks and pass test.
[x] PR description sums up the changes and reasons why they should be introduced.
[x] I added appropriate Fixes: annotations to PR description.

I tested it by changing the MetadataReader::read_metadata to immediately return an error. This caused 7 tests to fail, but only those which test features which require the metadata fetch to work correctly.
The following tests failed:
transport::session_test::test_column_kinds_in_metadata
transport::session_test::test_prepared_partitioner
transport::session_test::test_primary_key_ordering_in_metadata
transport::session_test::test_table_partitioner_in_metadata
transport::session_test::test_user_defined_types_in_metadata
transport::session_test::test_turning_off_schema_fetching
transport::session_test::test_schema_types_in_metadata

If anybody has an idea on how to write an automatic test for this feature, I'll be happy to add it.

repo: scylladb/scylla-rust-driver


text:
Android white screen

HI, i compiled on Android but i see a white screen like the camera closed. Is there some work in progress or some my mistake? I cloned the zxing-cpp and compiled the example with Qt6.

Hi, There is some work in progress now but all works for me on master branch. I'm building with Qt6.5.2.
Do you have some error logs? You can set SCODES_DEBUG option in CMake to enable debug output from SCodes.
It's possible that for some reason SCodes can't get access to the camera - permissions, or maybe some other app grabbing the camera. This should be logged if you enable debug logs.

Hi,
the only strange thing that i see is:
Warning: QML import could not be resolved in any of the import paths: com.scythestudio.scodes
Warning: QML import could not be resolved in any of the import paths: ZXing
I'm comlining directly the example, no new project.

I see: D libQmlBarcodeReader_arm64-v8a.so: New Camera set:  QCamera(0x76adb6cd70)
D libQmlBarcodeReader_arm64-v8a.so: Format:
D libQmlBarcodeReader_arm64-v8a.so:    Pixel format: Format_NV21
D libQmlBarcodeReader_arm64-v8a.so:    Resolution: QSize(3840, 2160)
D libQmlBarcodeReader_arm64-v8a.so:    FPS: 7 - 30
but white screen with green rectangle. If i add in the qml the CaptureSession and comment the reader, the camera working. So no permission problem.

Hello @niqt
Could you let me know if you are trying to run an example on an Android emulator?
I've tried several Android devices and everything works fine. In my case, your issue is only reproducible on an Android emulator.

authors: mateusz-fejcher niqt radkoder

repo: scytheStudio/SCodes


text:
Consider mandatory/optional params and include in Swagger

The definition
@GET
	@Path("{resourceId}/list")
	@Produces({MediaType.APPLICATION_JSON + ";charset=UTF-8", MediaType.APPLICATION_XML + ";charset=UTF-8"})
	public void list(@PathParam("resourceId") final Long resourceId, @QueryParam("orderIds") String orderIds,
			@Context final HttpHeaders headers, @Suspended AsyncResponse response) {

results in the following JSON:
"/restricted/shops/{resourceId}/list": {
			"get": {
				"consumes": [],
				"produces": ["application/json;charset=UTF-8", "application/xml;charset=UTF-8"],
				"parameters": [{
						"name": "resourceId",
						"in": "path",
						"required": true,
						"type": "integer"
					}, {
						"name": "orderIds",
						"in": "query",
						"required": true,
						"type": "string"
					}, {
						"name": "body",
						"in": "body",
						"required": true,
						"schema": {}
					}],

here, a couple of incorrect values:

BODY should not be required. Not sure, how to tell this to the analyzer.
orderIds are optional (there's no @NotNull annotation)
the PRODUCES should (imho) ignore the charset.

You're right. The Analyzer currently doesn't "know" Async Responses yet (see #6), this is why it wrongly consideres this parameter as the body.
The information about mandatory or optional parameters is just not taken yet; I always set the Swagger required to true...
IMO the consumes / produces media types should contain the full type (including parameters, see https://tools.ietf.org/html/rfc7231#section-3.1.1.1), as the parameter might as well be used in order to version several entities of the API (e.g. application/json;v=1). This information then could be relevant to the user. I would fully agree for charset definitions, but these parameters aren't solely restricted to that.
I'll change the title of your issue to the required parameters as the first issue is tracked in #6.
Thanks for issuing that! :-)

Do you think it would be an acceptable 'exception' to replace ';charset=[a-z0-9]*' with an empty string? Though i can imagine someone would want to keep this. Then again, it is always possible to post-process the generated file.

Yes, I also can imagine someone wants to keep this information as it seems that there was a valid reason to explicitly add it in the first place.

Duplicate to #55.

authors: ratcashdev sdaschner

repo: sdaschner/jaxrs-analyzer


text:
Preserve order of parameters when creating swagger spec

I'm observing the output of the spec to hold parameters ordered alphabetically. This can lead to unintentional api breaks by simply adding a new parameter.
Swagger-codegen will generate params in the order they are specified in the spec, except required: false parameters.
Appreciate that this may break existing usage of the analyzer, but hopefully this can be marked as a breaking change in the 0.10.0?
Edit: looks like problem lies here SwaggerBackend.java:141 with mapKeyComparator().
    private JsonArrayBuilder buildParameters(final ResourceMethod method) {
        final MethodParameters parameters = method.getMethodParameters();
        final JsonArrayBuilder parameterBuilder = Json.createArrayBuilder();

        parameters.getPathParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "path")));
        parameters.getHeaderParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "header")));
        parameters.getQueryParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "query")));
        parameters.getFormParams().entrySet().stream().sorted(mapKeyComparator()).forEach(e -> parameterBuilder.add(buildParameter(e, "formData")));

        if (method.getRequestBody() != null) {
            parameterBuilder.add(Json.createObjectBuilder().add("name", "body").add("in", "body").add("required", true)
                    .add("schema", schemaBuilder.build(method.getRequestBody())));
        }
        return parameterBuilder;
    }

Actually, that was a requirement (of myself and other users) in the past to have a reliable output of the schema.
Actually, why does that break your API? The parameters shouldn't be required to be sent in a specific order -- at least not in the HTTP spec or am I missing something here?
So I don't see any benefit right now...

Well maybe I'm battling a few things right now. Because of #55, all my parameters are required. And swagger-codegen will always generate them in the order provided.

Otherwise, this may seem like an edge case, but consider this scenario:
public String greet(@QueryParam("name") final String name) {
   return "Hello " + name;
}

This will yield a simple spec
{"parameters" : [
    {
      "name": "name",
      "in": "query",
      "required": true,
      "type": "string"
    }
]}

Which then yields Javascript
api.greet("Dave"); // returns "Hello Dave"

Now let's refactor.

// appending parameters, no obvious breakages
public String greet(@QueryParam("name") final String name, @QueryParam("greeting" final String greeting) {
   return greeting + " " + name;
}

Because it's alphabetical, it now gives
{"parameters" : [
    {
      "name": "greeting",
      "in": "query",
      "required": true,
      "type": "string"
    },
    {
      "name": "name",
      "in": "query",
      "required": true,
      "type": "string"
    }
]}

Which then yields
// api.greet("Dave"); // API BREAK

api.greet("Bonjour", "Dave"); // returns Bonjour Dave

Just to add some more weight to this in my view: keeping the order of the parameters still maintains deterministic output, BUT also does not lose parameter order information. Code generators can still choose to output alphabetical parameters if they wish.
By outputting by alpha, this information is intrinsically lost and cannot be retrieved.

Now that I have default params working, and thinking about it again, this may not be as big an issue for the general use case. PathParams already taken highest precedence over QueryParams and they generally don't stack beyond 2. With QueryParams, if they weren't optional, the code swagger-codegen generates already throws an exception if you don't pass in a parameter so a API break does occur anyway.
I do still think having control over the order of your parameters is important to have. Happy for you to close this if you don't see a benefit since it doesn't impact me as much at this point anymore =)

authors: darylteo sdaschner


text:
Vtk camera fix

I have fixed the bug that specifying the camera requires you to interact with the window before it displays, and added features that allow you to specify cameras from quaterion orientations and neuroglancer state dictionaries.

Codecov Report

Merging #19 into master will decrease coverage by 0.23%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master      #19      +/-   ##
==========================================
- Coverage   14.76%   14.52%   -0.24%
==========================================
  Files           8        8
  Lines        1531     1556      +25
==========================================
  Hits          226      226
- Misses       1305     1330      +25

Impacted Files
Coverage Δ

meshparty/trimesh_vtk.py
0% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4117bc3...fa9d1ce. Read the comment docs.

authors: codecov-io fcollman

repo: sdorkenw/MeshParty


text:
python installation

[ ] installer
[ ] conda-forge
[ ] pypi

required packages

pandas
numpy
scipy

repo: sdtaylor/phenology


text:
JUnit: Update to use latest version #707

fixes #707 (eventually, right now it just starts to fix it)
This is a start towards upgrading towards JUnit5. It does not changes any tests, but it makes it such that Gradle is able to still read JUnit4 tests and execute them.
It adds the Gradle plugin, which is required to read JUnit 5 tests. (tests are now run using junitPlatformTest instead of test).
It also added the dependencies required to run the Gradle plugin (the engine dependencies).
Two mains things to keep in consideration if we want to change the tests to be JUnit5 tests:

Right now there is no easy way to do the temporary folder rule, it might be messy to create our own version .
There is a limitation of the Gradle plugin which makes it such that any tests run by Gradle is not included in the standard test report. As such, build/reports/tests/index.html will not have data of the test results.

Otherwise, changing the normal tests - including before and after segments- should be okay, and there is a workaround for the expected exception rule.

Holding off on this for now. Gradle 4.6 includes JUnit5 support, so this may be unnecessary.

Hmm this PR can still update to use JUnit 5 right? I.e. we don't need to close this PR :P

@Rinder5 you can continue on this PR since #837 has been merged :)

Currently this just enables JUnit5 functionality. It uses the vintage engine bundled with JUnit5 to run our JUnit4 tests. Should I go about changing all the tests to JUnit5 versions?

@Rinder5 I think for this PR, you can simply update it to JUnit 5 without making other changes in the code base. :) Is it possible for you to do this soon (as I have another PR that's dependent on your PR :P)

I don't think there's anything specific to the upgrade that JUnit5 can remove over JUnit4. I did notice that my tests still ran normally without textfx-legacy though. And it is depreciated. Is that related?

I don't think there's anything specific to the upgrade that JUnit5 can remove over JUnit4. I did notice that my tests still ran normally without textfx-legacy though. And it is depreciated. Is that related?

Ah ok. Since we're only upgrading JUnit here, let's not do anything related to TestFX :) You can make that change in a separate PR though

am I allowed to just make the change or do i need to create a new issue (probably will end up as first timers and probably won't be touched for a while =P)?

You can make the change, but you need to find out what testfx-legacy does, and how we aren't using the API etc anymore that's why we can remove it. :p so you need to do some investigation actually.

Also do clean up your comment above. :)

Remember to request for review too :p

Changing the normal tests - including before and after segments- should be okay, and there is a workaround for the expected exception rule.

you can remove this since this works fine :p

You can take a look at PersonListPanelTest#performanceTest and simplify using this method (I got it from JUnit 5 User Guide):
@Test
void timeoutExceededWithPreemptiveTermination() {
// The following assertion fails with an error message similar to:
// execution timed out after 10 ms
assertTimeoutPreemptively(ofMillis(10), () -> {
// Simulate task that takes more than 10 ms.
Thread.sleep(100);
});
}
This PR is of lower importance compared to the other PRs that you are doing, so if you have sufficient time then you can explore more about JUnit 5 and make additional changes to the codebase :)
@yamgent look at this beautiful code in JUnit 5 which would have saved us so much time if we knew about it earlier :P

@Zhiyuan-Amos, I was wondering whether assertTimeoutPreemptively() can be used to solve the issue of unnecessarily testing the XML loading sequence. Apologies in advance if this is mentioned elsewhere already.
I am just considering the benefits of bringing in over JUnit5 now, because should we merge this PR, we will have to live with the fact that we are running both JUnit4 and JUnit5 together, which seems pretty messy to me.
I can understand that some tests are more difficult to port over from JUnit4 to JUnit5 (which will take a bigger PR to fix), but I feel that there still needs to be a strong justification of adding JUnit5 into the mix instead of retaining the status quo of just using only JUnit4, especially if JUnit5 features are not extremely necessary for our purposes right now.

@yamgent I thought of this issue here.
If this change is possible, then upgrading to Junit5 is good cos currently the test is quite complex now as we have 3 timeouts and 1 log to ensure that we can find out where's the error. Compared to using assertTimeoutPreemptively(), which is just 1 timeout.
Also, we can keep track of the things to change in an issue such as upgrading the rules, upgrading temporary folder etc. So at least we know when we can remove junit4 support.

Also, we can keep track of the things to change in an issue such as upgrading the rules, upgrading temporary folder etc. So at least we know when we can remove junit4 support.

Thanks for the update. Should we jot them down in the commit message as well? As right now it just mentions that there's a few differences between JUnit4 and JUnit5, but doesn't really mention what the differences are, which will be a critical explanation of why we are not updating the tests in the commit itself.

@yamgent yup you are right, that's a good point :+1: @Rinder5 do update according to the comments made above :p

@yamgent ok with you? :)
@Rinder5 Do raise the issues using a task list like:

[ ] this

@Rinder5 can you change the PR status to toMerge and do a last call request on Gitter? :)

@Zhiyuan-Amos I don't have permissions to change the label

Oh opps Prof haven't reviewed yet. @damithc for your review :)

Rebased it since master was updated. should I resubmit a canihasreview?

Rebased it since master was updated. should I resubmit a canihasreview?

Yup! Remember to do a last call for review on Gitter as well.

authors: Rinder5 Zhiyuan-Amos yamgent


text:
Update build configuration

The build configuration of this project is outdated and may no longer work.
This pull request will be merged automatically if there are no conflicts.

:tada: This PR is included in version 4.0.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

repo: sealsystems/node-mongo


text:
Added my name to guestbook.md

I added my name to the guestbook! Thank you for the informative course!

Thank you so much! I am so happy you found the course helpful!

authors: Theaburger seankross

repo: seankross/the-unix-workbench


text:
It is recommended to overwrite the registry.conf file with the application.yml (or Apollo) configuration item.

Why you need it?
我们项目有用Apollo， 但发现seata的注册方式和eureka地址必需在 registry.conf 文件指定。
现在的配置方式很让人痛苦！
@lovepoem

@heshengyahuai Seata supports Apollo as the configuration center as well.

yml  should be considered.

@xingfudeshi ， @slievrly  在registry.conf文件里，可以配置apollo代替file.conf， 但是registry.conf文件本身不能被yml或apollo代替。如下，eureka地址如果写在yml，是不能生效的：
registry {   type = "eureka"   eureka {     serviceUrl = "http://39.98.170.203:2110/eureka"     application = "default"     weight = "1"   } }

@xingfudeshi ， @slievrly 在registry.conf文件里，可以配置apollo代替file.conf， 但是registry.conf文件本身不能被yml或apollo代替。如下，eureka地址如果写在yml，是不能生效的：
registry {
  type = "eureka"

  eureka {
    serviceUrl = "http://172.10.0.31:8761/eureka"
    application = "default"
    weight = "1"
  }
}

.properties file should also be.considered.

期待下一个版本见到

are you using spring-boot?

是的，用 spring-boot。

@xingfudeshi   hi,Is there a plan to support?  If I use Spring Cloud Alibaba  ，Need to maintain two sets of configurations

@pigxcloud Hey,There is already a PR that adds configuration isolation feature.#1075

@pigcloud For configuration files that support the yaml and property formats, we'll provide a seata-spring-boot-starter to do that.

@xingfudeshi   nice. seata-spring-boot-starter  is better than   configuration isolation feature #1075 ，

authors: heshengyahuai pigxcloud slievrly xingfudeshi

repo: seata/seata


text:
服务启动时如何指定启动 IP？

服务器有多张网卡，造成IP地址不准。如何在启动时指定 IP？

参见 https://seata.io/zh-cn/docs/overview/faq.html#7
nacos上服务列表，serverAddr地址对应ip地址应为seata启动指定ip地址，如：sh seata-server.sh -p 8091 -h 122.51.204.197
  1 [Unit]
  2 Description=Seata Server
  3 After=syslog.target
  4
  5 [Service]
  6 ExecStart=/opt/seata/bin/seata-server.sh -h 192.168.0.105
  7 SuccessExitStatus=143
  8
  9 [Install]
 10 WantedBy=multi-user.target


text:
maven: update gpg key

Signed-off-by: slievrly slievrly@163.com

Ⅰ. Describe what this PR did
gpg key  out of date,  re-generate

Ⅱ. Does this pull request fix one issue?

Ⅲ. Why don't you add test cases (unit test/integration test)?
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #3662 (0193cd2) into develop (1c0fccd) will decrease coverage by 0.18%.
The diff coverage is n/a.

:exclamation: Current head 0193cd2 differs from pull request most recent head c08fe7c. Consider uploading reports for the commit c08fe7c to get more accurate results

@@              Coverage Diff              @@
##             develop    #3662      +/-   ##
=============================================
- Coverage      51.99%   51.81%   -0.19%
+ Complexity      3511     3501      -10
=============================================
  Files            639      639
  Lines          21181    21156      -25
  Branches        2630     2588      -42
=============================================
- Hits           11014    10962      -52
  Misses          9080     9080
- Partials        1087     1114      +27

Impacted Files
Coverage Δ
Complexity Δ

...ource/sql/struct/cache/AbstractTableMetaCache.java
72.41% <0.00%> (-17.25%)
8.00% <0.00%> (-1.00%)

...obuf/convertor/BranchRegisterRequestConvertor.java
90.47% <0.00%> (-9.53%)
3.00% <0.00%> (ø%)

...otobuf/convertor/BranchReportRequestConvertor.java
90.90% <0.00%> (-9.10%)
3.00% <0.00%> (ø%)

...obuf/convertor/BranchRollbackRequestConvertor.java
92.00% <0.00%> (-8.00%)
3.00% <0.00%> (ø%)

...otobuf/convertor/GlobalBeginResponseConvertor.java
92.59% <0.00%> (-7.41%)
3.00% <0.00%> (ø%)

...ava/io/seata/server/metrics/MetricsSubscriber.java
72.58% <0.00%> (-6.46%)
6.00% <0.00%> (-1.00%)

...otobuf/convertor/GlobalCommitRequestConvertor.java
93.75% <0.00%> (-6.25%)
3.00% <0.00%> (ø%)

...otobuf/convertor/GlobalStatusRequestConvertor.java
93.75% <0.00%> (-6.25%)
3.00% <0.00%> (ø%)

...obuf/convertor/GlobalRollbackRequestConvertor.java
93.75% <0.00%> (-6.25%)
3.00% <0.00%> (ø%)

...protobuf/convertor/RegisterTMRequestConvertor.java
94.73% <0.00%> (-5.27%)
3.00% <0.00%> (ø%)

... and 29 more

authors: codecov-commenter slievrly


text:
fix has changes false if deleted result size eq zero

https://github.com/seaweedfs/seaweedfs/issues/4171
What problem are we solving?
https://github.com/seaweedfs/seaweedfs/issues/4171
How are we solving the problem?
If the file was previously deleted, then the size will return to 0; therefore, there were no changes and there is no need to repeat the cycle.
How is the PR tested?
dev localy.
> volume.check.disk -v -force -syncDeleted -volumeId 5774
Do sync volume 5774 on a.info.FileCount 3082 =! b.info.FileCount 3061)
load collection serb-default volume 5774 index size 49312 from 192.168.245.255:8080 ...
load collection serb-default volume 5774 index size 48976 from 192.168.245.255:8081 ...
volume 5774 192.168.245.255:8081 has 2853 entries, 192.168.245.255:8080 missed 0 and partially deleted 0 entries
partially deleted needle key: 3060820471988128132, values {Key:2a7a38009a188984 Offset:44905114 Size:0}
volume 5774 192.168.245.255:8080 has 2853 entries, 192.168.245.255:8081 missed 0 and partially deleted 1 entries
delete 5774,2a7a38009a18898400000000 192.168.245.255:8080 => 192.168.245.255:8081
delete 3060820471988128132 192.168.245.255:8080 => 192.168.245.255:8081
delete result hasChanges: file_id:"5774,2a7a38009a18898400000000" status:304, size: 0

Checks

[ ] I have added unit tests if possible.
[ ] I will add related wiki document changes and link to this PR after merging.

During testing in the test environment, it turned out that in the response to deleting everything, the size is 0(status:202, size: 0)
must be deleted needle key: 3060820472027155261, values {Key:2a7a38009c6c0b3d Offset:198069003 Size:26624}
must be deleted needle key: 3060820472027155192, values {Key:2a7a38009c6c0af8 Offset:198056797 Size:27599}
must be deleted needle key: 3060820472027150954, values {Key:2a7a38009c6bfa6a Offset:197722075 Size:15403}
must be deleted needle key: 3060820472024984157, values {Key:2a7a38009c4aea5d Offset:131383011 Size:232}
must be deleted needle key: 3060820472024970857, values {Key:2a7a38009c4ab669 Offset:131142996 Size:6483}
must be deleted needle key: 3060820472024970727, values {Key:2a7a38009c4ab5e7 Offset:131141051 Size:6277}
must be deleted needle key: 3060820472024970465, values {Key:2a7a38009c4ab4e1 Offset:131137118 Size:6360}
volume 95566 fast-volume-3:8080 has 1407322 entries, fast-volume-0:8080 missed 0 and must be deleted 7 entries
delete 95566,2a7a38009c6c0b3d00000000 fast-volume-3:8080 => fast-volume-0:8080
delete 3060820472027155261 fast-volume-3:8080 => fast-volume-0:8080
delete 95566,2a7a38009c6c0af800000000 fast-volume-3:8080 => fast-volume-0:8080
delete 3060820472027155192 fast-volume-3:8080 => fast-volume-0:8080
delete 95566,2a7a38009c6bfa6a00000000 fast-volume-3:8080 => fast-volume-0:8080
delete 3060820472027150954 fast-volume-3:8080 => fast-volume-0:8080
delete 95566,2a7a38009c4aea5d00000000 fast-volume-3:8080 => fast-volume-0:8080
delete 3060820472024984157 fast-volume-3:8080 => fast-volume-0:8080
delete 95566,2a7a38009c4ab66900000000 fast-volume-3:8080 => fast-volume-0:8080
delete 3060820472024970857 fast-volume-3:8080 => fast-volume-0:8080
delete 95566,2a7a38009c4ab5e700000000 fast-volume-3:8080 => fast-volume-0:8080
delete 3060820472024970727 fast-volume-3:8080 => fast-volume-0:8080
delete 95566,2a7a38009c4ab4e100000000 fast-volume-3:8080 => fast-volume-0:8080
delete 3060820472024970465 fast-volume-3:8080 => fast-volume-0:8080
delete result hasChanges: file_id:"95566,2a7a38009c6c0b3d00000000"  status:202, size: 0
delete result hasChanges: file_id:"95566,2a7a38009c6c0af800000000"  status:202, size: 0
delete result hasChanges: file_id:"95566,2a7a38009c6bfa6a00000000"  status:202, size: 0
delete result hasChanges: file_id:"95566,2a7a38009c4aea5d00000000"  status:202, size: 0
delete result hasChanges: file_id:"95566,2a7a38009c4ab66900000000"  status:202, size: 0
delete result hasChanges: file_id:"95566,2a7a38009c4ab5e700000000"  status:202, size: 0
delete result hasChanges: file_id:"95566,2a7a38009c4ab4e100000000"  status:202, size: 0

repo: seaweedfs/seaweedfs


text:
Parsing multiline strings

Why does the following code:
var input =
    $"""
    .....
    .F-7.
    .|.|.
    .L-J.
    .....
    """;

var parser = Separated(
    Terms.Text(Environment.NewLine),
    OneOrMany(
        OneOf(Terms.Char('|'),
            Terms.Char('-'),
            Terms.Char('L'),
            Terms.Char('J'),
            Terms.Char('7'),
            Terms.Char('F'),
            Terms.Char('.'),
            Terms.Char('S'))));

var result = parser.Parse(input);

produce a singleton List containing 25 entries, instead of 5x lists each containing 5 entries?
Or should I be parsing multiline strings in a different way?

Terms will implicitly accept spaces so the new lines will be part of the "Char" result. Try to use Literals.Char instead.

Changing the separator parser from Terms.Text(Environment.NewLine) to Literals.Text(Environment.NewLine) still returns a singleton list with 25 elements. Should this not work?
Changing the separator parser to Literals.Char('\r').And(Literals.Char('\n')) (I'm using Windows as my primary OS) also produces the same result. Furthermore, it's a bit of a hassle to have to create a Char parser from Environment.NewLine. Why can't I use Literals.Text instead?

Please ignore my last comment. I figured it out. The following code produces the desired result:
var input =
    $"""
    .....
    .F-7.
    .|.|.
    .L-J.
    .....
    """;

var parser = Separated(
    Literals.Text(Environment.NewLine),
    OneOrMany(
        OneOf(Literals.Char('|'),
            Literals.Char('-'),
            Literals.Char('L'),
            Literals.Char('J'),
            Literals.Char('7'),
            Literals.Char('F'),
            Literals.Char('.'),
            Literals.Char('S'))));

var result = parser.Parse(input);

I tried locally and I believe there is a bug in OneOf, currently investigating.
:
Note that if you want the parsers to not skip whitespaces there is another option by using
var parseContext = new ParseContext(new Scanner(input), true);
var result = parser.Parse(parseContext);

Though this should probably be made easier to access on Parse() directly.

authors: pmarflee sebastienros

repo: sebastienros/parlot


text:
Identical files but non empy diff

I bumped in to this strange case where FWS marks two (identical) files as equivalent, but generates a non empty diff. I have attached the policy and interfaces file to the issue.
interfaces.txt
mastersolution.txt
FireWall Synthesizer - Language-independent Synthesis of Firewall Policies
FWS> p1 = load_policy(iptables, "mastersolution", "interfaces")
FWS> p2 =  load_policy(iptables, "mastersolution", "interfaces")
FWS> equivalence(p1,p2)
Equivalent.
FWS> diff(p1,p2)
Solving: [##################################################] (   18/   18) 100.00%

+++ mastersolution
--- mastersolution
╭─────┬────────────────────────┬─────────────┬─────────────────────────┬──────────────────┬────────────┬─────────────────┬──────────┬───────╮
│ +/- │ Source IP              │ Source Port │ Destination IP          │ Destination Port │ Source MAC │ Destination MAC │ Protocol │ State │
╞═════╪════════════════════════╪═════════════╪═════════════════════════╪══════════════════╪════════════╪═════════════════╪══════════╪═══════╡
│ +   │ 0.0.0.0/31 \ {0.0.0.1} │ 63690-63784 │ 64.0.0.0/2 \ {64.0.0.1} │ 50621-50691      │ *          │ *               │ tcp      │ NEW   │
├─────┼────────────────────────┼─────────────┼─────────────────────────┼──────────────────┼────────────┼─────────────────┼──────────┼───────┤
│ -   │ 0.0.0.0/31 \ {0.0.0.1} │ 63690-63784 │ 64.0.0.0/2 \ {64.0.0.1} │ 50621-50691      │ *          │ *               │ icmp     │ NEW   │
│     │                        │             │                         │                  │            │                 │ tcp      │       │
╰─────┴────────────────────────┴─────────────┴─────────────────────────┴──────────────────┴────────────┴─────────────────┴──────────┴───────╯

Hi! That's a strange behavior indeed!
I think the cause is that I was doing two synthesis (extract) calls in the same Z3 context: I changed the code to use a different context for each call and it now works as expected.
Thank you very much!
And let me know if you find more strange cases :stuck_out_tongue_winking_eye:

repo: secgroup/fws