"Fourier" inverse Abel transform

A preliminary Python version of Pretzler's Fourier cosine series transform is in my PyAbel fork fourier branch. The file abel/fourier.py is self-contained, and will run with your own PyAbel distribution: python3 fourier.py.

I like the method because the concept is simple, and it illustrates how the other basex methods (may) work.
The code would benefit from @DanHickstein's vectorization magic for hbasis.  I have yet to tidy up the code, link to the correct basis storage functions in tools/basis.py, documentation, unit test.
Open for discussion, before I prepare it for PyAbel.

Looks cool! Thanks for looking into this.
How does this compare with the "Fourier Hankel" method?
And how does fitting cosine functions to the data differ from just taking the FFT?

Q1:

How does this compare with the "Fourier Hankel" method?

The selection of this algorithm was from the reference given in issue #61, a method that appeared to be favoured by the user.
I am not familiar with the Fourier Hankel (FH) method. It looks to be a next step to this method,
although, this reference Applied Optics Vol. 47, Issue 9, pp. 1350-1357 (2008) (see also the open issue #24, with publication query) claims that Fourier Expansion (FE) is better than FH.

Accuracies of the discrete FE and FH methods have been compared and analyzed. The FE method is very accurate even for a small set of data, while the FH method appears to have systematic negative errors.
:
Though the FE method has a high accuracy, it is very sensitive to noise and the inversion matrix is
difficult to calculate, which restricts its application; a smoothing procedure must be implemented when it has been used. The FH method can only be considered when applying it to data with a large number of points ...

Q2:

how does fitting cosine functions to the data differ from just taking the FFT

This is a good question, that is not straight forward to answer. The Pretzler basis function f(r) is in a slightly different form to a standard Fourier transform series. In principle scipy.fftpack.rfft() should produce the same coefficients as scipy.optimize.least-squares(). However, I have not yet managed to make this happen.

Yeah, in my mind, I always thought of the FT as a magical way to simultaneously "fit" a bunch of cosine (and sine) functions to your data. So, it seems like we should be able to switch out the fitting for a FFT for a big speed gain. But, perhaps I am missing something here.
So, it sounds like this method is somewhat distinct from the FH, which is great. I will try to have a closer look through your code soon.

From what I can tell extracting cosine amplitudes from the FFT spectrum requires some form of peak-finding, ok for a simple oscillating function, but not clear cut for a Gaussian shape?

Isn't getting the amplitudes of the cosine functions as simple as taking the real part of the FFT?

You are right, on a frequency scale the coefficients are A0 ... An. I had missed that subtly.

Update:
I have not made much progress on reconciling the cosine series coefficients from scipy.fftpack.rfft with those from the least-squares fit of the cosine series to the (forward Abel transformed) profile.
The end aim is to use the fast rfft to yield the Fourier cosine series coefficients, rather than by using (slower?) least-squares fitting.
The following test case is the sum of two cosine functions 10 cos(2r) + 5 cos(8r). The output from rfft is as expected, with 2 frequencies at 2 and 8, corresponding to cosine series coefficients An = 10, 5. All good. Tks, @DanHickstein. See the figure below (left column).
Running the abel/fourier.py inverse Abel transform on the forward Abel transformed cosine (signal) function, returns the correct signal (sum of cosines) function. All good. See right column of figure.
However, I cannot correlate the coefficients returned from rfft with those from fourier.py. I would hope that they have some similarity, to provide for simple substitution in abel/fourier.py.

Test code, requires abel/fourier.py:
import numpy as np
from scipy.fftpack import rfft, fftfreq
import matplotlib.pyplot as plt

import abel

def cosine(r):
    return 10*np.cos(2*np.pi*2*r/r[-1]) +\
            5*np.cos(2*np.pi*8*r/r[-1])

# signal
r = np.linspace(0, 1, 201)
signal = cosine(r)

n = len(r)
n2 = n//2

# Fourier transform --------------------
fourier_signal = rfft(signal)

# fourier_signal structure [y(0),Re(y(1)),Im(y(1)),...,Re(y(n/2))] n even
# restructure array to extract real (cosine) coefficients, this appears clumsy(?)
fft_signal = fourier_signal[0]
fft_signal = np.append(fft_signal, fourier_signal[1::2])/n2

# frequencies
freq_signal = fftfreq(signal.size, r[1]-r[0])[:n2]

# Least-squares -------------------

# forward transform using hansenlaw
forward_signal = abel.hansenlaw.hansenlaw_transform(signal, direction='forward')

# inverse Abel transform via fitting Fourier series
# fitting Fourier series to forward transformed profile
abel_inverse_of_forward_signal, An = abel.fourier.fourier_transform(
                                                  forward_signal, Nu=21)

# Results ----------------------
print("Least-squares ---------------")
print("Coefficients An from lsq fit:")
print(An[:11], end="\n\n")
print("Fourier transform------------")
print("frequencies:")
print(freq_signal[:11], end="\n\n")
print("Coefficients An from amplitude of fft at frequency n:")
print(fft_signal[:11])

# Plots ---------------

fig, ((axsignal, axforward), (axfft, axinverse)) = plt.subplots(2, 2)

# input signal 2x cosines with frequencies 2 and 8
axsignal.plot(r, signal)
axsignal.set_title(r"$10\cos(2\pi\, 2r)+5\cos(2\pi\, 8r)$")
axsignal.set_ylabel("signal")
axsignal.set_xlabel(r"radius ($r$)")

# the fast-Fourier transform
axfft.plot(freq_signal, fft_signal[:-1])
axfft.set_title("fft signal")
axfft.set_xticks([2, 8, 50])
axfft.set_yticks([5, 10])
axfft.set_xlabel(r"frequency ($n$)")
axfft.set_ylabel(r"Cosine coefficients $A_n$")
axfft.axis(xmin=0, xmax=50)

# forward Abel transform
axforward.plot(r, forward_signal)
axforward.set_title("forward Abel transform")
axforward.set_xlabel("radius ($r$)")

# inverse Abel transform via abel/fourier.py
# "should" look like the signal input
axinverse.plot(r, signal, '--', label='signal')
axinverse.plot(r, abel_inverse_of_forward_signal.T, label='fourier')
axinverse.set_title("inverse Abel transform")
axinverse.set_xlabel("radius ($r$)")
axinverse.legend(fontsize='smaller')

plt.subplots_adjust(hspace=0.6, wspace=0.3)
plt.savefig("fft5.png", dpi=75)
plt.show()

Oh, I now see. The rfft should be take of the forward transform in order to compare coefficients An.

So, you're able to replace the fitting procedure with an FFT? This should be much faster.

Unfortunately, no. I see no common pattern between the coefficients of the two methods. I think this may be due to the phase factors/complex components of rfft, although the lack of a simple relationship could be the consequence of limited brain power on my part.
At the moment I am packaging abel/fourier_expansion.py for PyAbel. The least-squares approach was employed by Pretzler, and it does allow the basis function f(r) to be tailored to suit a particular problem.
The method is slow, a factor of 2000 slower than two_point(!) for example_fourier_expansion.py, and the low intensity background has oscillations, due to the Fourier series truncation. But, note, the oscillation reduces toward the image centre, opposite behaviour to the other non-basis methods.

Perhaps, this method belongs in a separate subsection of PyAbel inverse Abel transforms, along with onion_bordas, present for completeness, but not necessarily useful(?).

Update:
I have removed superfluous row storage for hbasis and fixed the basis storage functions. The fourier_expansion method is now usable, the time comparison for two_point is now only x200 for example_fourier.py ;-). Here Is the abel.benchmark comparison. Note, in these timing measurements fourier_expansion.py uses a default Nu = n/10, which may disadvantage it:
In [1]: import abel

In [2]: abel.benchmark.AbelTiming()
Out[2]:
PyAbel benchmark run on i386

time in milliseconds

=========    Basis Abel implementations ==========

Implementation      n = 301           n = 501
----------------------------------------------------------
        basex_bs    4901.5           12773.9
fourier_expansion_bs   12926.4           38194.5
     linbasex_bs       7.1              18.8
onion_peeling_bs       3.7               9.1
  three_point_bs       9.7              27.1
    two_point_bs       3.7               8.4

=========  Forward Abel implementations ==========

Implementation      n = 301           n = 501
----------------------------------------------------------
        direct_C      19.6              80.7
   direct_Python      87.7             327.0
       hansenlaw       7.4              17.3

=========  Inverse Abel implementations ==========

Implementation      n = 301           n = 501
----------------------------------------------------------
           basex       2.2              21.5
        direct_C      19.3              84.2
   direct_Python      99.2             332.7
fourier_expansion    1013.7            3028.4
       hansenlaw      17.8              41.0
        linbasex      45.2             124.4
    onion_bordas     321.3             888.5
   onion_peeling       0.5               2.2
     three_point       0.6               2.4
       two_point       0.5               2.1

and the pyabel_benchmark_plot.py (methods dropped once execution time > 5 sec):

fourier_expansion is the slowest of all the PyAbel methods, however, I think it has a place in the PyAbel stable.

Finally! I have decode the fft output to coefficients that agree with the least-squares fitting. The index for the real coefficients An appears to be 2*n - 1, for whatever reason. I will apply this to fourier_expansion.py, soon.
Straight comparison of the fit of a cosine series to a 2-frequency cosine function (2 and 8), using rfft and least_squares:

import numpy as np
from scipy.fftpack import rfft
from scipy.optimize import least_squares
import matplotlib.pyplot as plt

import abel

# fit fft, An to the same function

def cosine(r):
    return 10*np.cos(2*np.pi*2*r/r[-1]) +\
            5*np.cos(2*np.pi*8*r/r[-1])
    #return 5+np.cos(2*np.pi*7*r/r[-1])

def series(An, r):
    sum = np.zeros_like(r)
    for n, an in enumerate(An):
        sum += an*np.cos(2*np.pi*n*r/r[-1])
    return sum

def residual(An, r, signal):
    return signal - series(An, r)

# signal
r = np.linspace(0, 1, 101)
signal = cosine(r)

n = r.size
n2 = n//2

# Fourier transform --------------------
fourier_signal = rfft(signal)/n2

# coefficients thanks to
# http://stackoverflow.com/questions/4258106/how-to-calculate-a-fourier-series-in-numpy
a0, a, b = fourier_signal[0], fourier_signal[1:-1].real,\
           -fourier_signal[1:-1].imag

a = np.append(a0/2, a)

# Least-squares -------------------
# fitting Fourier series
An = np.arange(21)

res = least_squares(residual, An, args=(r, signal))
An = res.x

# re-align fft coefficients
fA = np.zeros_like(An)
fA[0] = An[0]
for n in range(An.size-1):
   i = n + 1
   fA[i] = a[2*i-1]

for n in np.arange(21):
    print("{:2d}  {:5.2f}  {:5.2f}".format(n, An[n], fA[n]))

# Plots ---------------

plt.plot(r, signal, label="signal")
plt.plot(r, series(An, r), label="series")
plt.plot(r, series(fA, r), label="fft")
plt.legend()

plt.savefig("fftvslsq.png", dpi=75)
plt.show()

Awesome!
The explanation for why the indices of the coefficients from the FFT and from your fitting algorithm don't align is that the FFT is calculating the coefficients for different frequencies than what you are using in your fitting algorithm. If you look at the frequencies in both cases, then the Intensity-as-a-function-of-frequency plots line up perfectly. Just re-interpolate from the FFT to get the intensities at the exact frequencies you desire.
Alternatively, if we make sure to use the same frequencies for the least-squares and the FFT, then things match up.
I hacked up your code a bit to show how this works:
import numpy as np
# from scipy.fftpack import rfft
# FFTs are already in numpy, so no extra scipy import needed
from scipy.optimize import least_squares
from scipy.interpolate import InterpolatedUnivariateSpline
import matplotlib.pyplot as plt

import abel

def cosine(r):
    return 10*np.cos(2*np.pi*2*r/r[-1]) +\
            5*np.cos(2*np.pi*8*r/r[-1])
    #return 5+np.cos(2*np.pi*7*r/r[-1])

def series(An, r):
    sum = np.zeros_like(r)
    for n, an in enumerate(An):
        sum += an*np.cos(2*np.pi*n*r/r[-1])
    return sum

def residual(An, r, signal):
    return signal - series(An, r)

n = 100
r = np.linspace(0, 2*np.pi, n)
leastsq_freqs = np.fft.rfftfreq(n, r[1]-r[0])

signal = cosine(r)

# Fourier transform --------------------
fourier_signal = np.fft.rfft(signal)/(0.5*r.size)
fourier_freqs  = np.fft.rfftfreq(signal.size, r[1]-r[0])

fft_DC_term, fft_cos_terms, fft_sin_terms = fourier_signal[0], fourier_signal[1:-1].real, -fourier_signal[1:-1].imag

interpolation = False
if interpolation:
    # re-interpolate FFT to the frequencies of the least-squares
    # only needed if the fourier_freqs don't match the leastsq_freqs
    fourier_interp = InterpolatedUnivariateSpline(fourier_freqs, fourier_signal.real)
    fA = fourier_interp(leastsq_freqs)
else:
    fA = fourier_signal.real

# Least-squares:
An  = np.zeros_like(leastsq_freqs)
res = least_squares(residual, An, args=(r, signal))
An  = res.x

for n in np.arange(21):
    print("{:2d}  {:5.2f}  {:5.2f}".format(n, An[n], fA[n]))

# Plots ---------------
fig, axs = plt.subplots(2,1,figsize=(6,8))

axs[0].plot(fourier_freqs, fourier_signal.real, marker='o', color='r')
axs[0].plot(leastsq_freqs, An, marker='o', color='g')

axs[0].set_xlabel('Fourier frequency (1/rad)')
axs[0].set_ylabel('Fourier coefficient')

axs[1].plot(r, signal, label="signal")
axs[1].plot(r, series(An, r), label="series")
axs[1].plot(r, series(fA, r), label="fft")
axs[1].legend()
axs[1].set_xlabel('Angle (rad)')
axs[1].set_ylabel('Intensity')

plt.savefig("fft.png", dpi=200)
plt.show()

Thanks @DanHickstein!
The problem is that rfftfreq() returns n/n[-1]/d/2 and hence the maximum frequency is always <=0.5 for step d=1. i.e. the frequency scale requires some form of calibration factor, via the parameter d, otherwise we do not know where freq = 0, 1, 2, ... occur. It is not clear to me how to define d.
In [22]: np.fft.rfftfreq(10)
Out[22]: array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5])
In [25]: np.fft.rfftfreq(20)
Out[25]:
array([ 0.  ,  0.05,  0.1 ,  0.15,  0.2 ,  0.25,  0.3 ,  0.35,  0.4 , 0.45,  0.5 ]

Do we just normalize the length of our image to 2pi, so d = 2*np.pi/cols?

Well, I think that the spatial frequencies that we work with are arbitrary, but they are basically defined in this case by the series function, specifically in this line:
sum += an*np.cos(2*np.pi*n*r/r[-1])

I think that this means that we want to have r run from 0 to 2pi in order to have the frequencies of the fft and the leastsquares line up.
The maximum frequency is given by the highest frequency that is Nyquist sampled, so it depends on how many points we have in r. It seems fine for it to end up as pi in some situations...

Fail
I now realise that basis row intensity function is not a cosine series(!) and hence fast Fourier transform (rfft) coefficients are not applicable. In the Pretzler model the basis function for the image row intensity is assumed to be (equation number as in Pretzler's paper):

i.e not a cosine series.
rfft may be useful for a forward transform, where f(r) is a cosine series:

I will look into this next.

The forward Abel transform works, providing a third PyAbel method to generate the projection.
Here is a comparison of the forward and inverse Abel transform of the 'curveA' function (see abel/tests) using the Fourier_expansion method:

I take back the fail (above), Fourier cosine coefficients may be obtained using a fast-fourier-transform rfft.
The secret is to duplicate (repeat) the function, to ensure that it is symmetric.  I think this is a well known fact, that I had missed. :-(
This test code gist compares the two methods,  cosine amplitude coefficients An extracted from a Fourier transform and by using a direct least-squares fit.
 n    lsq-An   fft-An
 0    -0.00     0.00
 1    -0.00     0.20
 2    10.00    10.09
 3    -0.00    -0.00
 4    -0.00     0.06
 5     0.00     0.09
 6    -0.00     0.13
 7    -0.00     0.23
 8     5.00     5.00
 9    -0.00    -0.14
10    -0.00     0.01
11     2.00     1.91
12    -0.00    -0.15
13    -0.00    -0.08
14     0.00    -0.06
15    -0.00    -0.04
16     0.00    -0.04
17     0.00    -0.03
18     0.00    -0.02
19    -0.00    -0.02

The figure shows a sum of 3 cosines (frequencies 2, 8, and 11), with the same computed from the fft and lsq coefficients:

PyAbel fourier_expansion method to follow ...

@liuxunchen, did you get chance to take a look at these questions?

Dear Danhickstein,
I just see the email. You are absolutely correct. I will open github and take
a look. Sorry for the delay. Sometimes the Github is difficult to load.
xunchen
On Friday, September 14, 2018 3:27:17 AM CST Danhickstein wrote:

@liuxunchen, did you get chance to take a look at these questions?


Feature/43 trust setting component

Description
Updated trust setting component to be a slider instead of a text box, and with appropriate styles
Some further work is needed to fix linter errors
Issues fixed
Fixes #43
Checklist

[ ] npm test returns no warnings or errors.

@peasandwell can you look at the linter errors

I've fixed one of the style lint issues, the other one looks like it could be an issue with the tool itself so I've temporarily disabled that checker for that section.

I'd like to take a closer look at that stylelint rule, please hold off on merging

Closing PR as it is marked as a WIP.

Sat with @GeorgeBryantHW to readdress the stylelint issue, it's fixed now, not stylelints rules are ignored.

@Flujible I've just had a look at this, in action and it looks a little broken. Can you confirm all the work is in?


python311Packages.casbin: 1.31.0 -> 1.31.2

Diff: https://github.com/casbin/pycasbin/compare/refs/tags/v1.31.0...v1.31.2
Changelog: https://github.com/casbin/pycasbin/blob/v1.31.2/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 259388 run on x86_64-linux 1

4 packages built:

python310Packages.casbin
python310Packages.casbin.dist
python311Packages.casbin
python311Packages.casbin.dist


COMP: Consistently propagate CMAKE_MACOSX_RPATH to all projects

With update of the minimum required version of CMake to 3.5.0 in Slicer,
default value for CMAKE_MACOSX_RPATH changed to ON but Slicer required this
option to be OFF.
This commit makes sure the value passed by the Slicer extension build
system is used consistently.
This commit associated with the use of Slicer >= r26305 [1]
will prevent error like the following:
Error copying file<EMAIL_ADDRESS>to "/.../SPHARM-PDM-build/SPHARM-PDM-install/Slicer.app/Contents/lib/Slicer-4.7/libitkminc2-4.12.1.dylib".

Related Slicer discussions:
https://discourse.slicer.org/t/interpreting-cdash-reporting-extension-is-packaged-despite-build-errors/856
https://discourse.slicer.org/t/extension-build-failure-on-mac-due-to-error-copying-files/935
[1] r26305 COMP: Update ITK and CTK to fix remaining extension packaging issues
http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=26305

Cc: @bpaniagua

Thanks for merging.
Now consider updating https://github.com/Slicer/ExtensionsIndex/blob/master/SPHARM-PDM.s4ext
Cc: @laurapascal @bpaniagua

I just realized that the extension description file is associated with release branch.
May be release branch could be updated ?


Embedding the Charts with PyQt6 or Tkinter

Question
Hello,
I would like to use the charts to embed them inside a PyQt6 or Tkinter application, is there a way to do that directly?
Thanks
Code example
No response

This is already implemented for PyQt6, not possible in tkinter.


Testing fixups

Update .dockerignore to not package up the tests
Add a Makefile and instructions for running tests locally.

It might be good to have circle.yml call make test too. :+1:


✨TinaCMS Block | Why all these Rules?

Cc:

Hi
Pain

Suggested Solution

Tasks

[x] If it isn't already, create the Why all these Rules component
[x] Add it as an available block to the Sidebar collection
[x] Block should have a preview image (if needed)

More Information

Screenshots

Thanks!

Done - As part of #1570. This was refactored into its own component, and the block is available on TinaCMS.


bump certmanager to v1.14.4

bump cert manager manifests to v1.14.4
bump cert-manager

/assign @izabelacg

/lgtm


@coreui/vue last version not match with @coreui/coreui last version

I've checked the core of @coreui/coreui last version (4.0.1) and the style class it provide has no prefix 'c-' like @coreui/vue last version (3.2.11) provide on his component; so the coreui style not work on @coreui/vue component.  I think this need to be fixed;
PS: sorry i don't know where to put this report ^^

We're working on @coreui/vue@4 it should be available soon.


Limit to-do name to 40 characters

No longer needed due to fixing the display of names to only have an ellipsis at the end.


Extract XLSX logic + Add Data Dictionary + Add Artifacts

TLDR: I'm working on a real writeup for this, and adding docstrings to make this more readable. If you get there beforehand, the commits are quite atomic and could be easily read that way. Also, there are two tests that we'd expect to fail atm, since they rely on changes in the metadata repo here
There are a few things going on here:

A rewrite of the XLSX code to pull our business logic out, and make it a generalized generator of worksheets with tables in them. This bit I feel pretty good about, although I think we need to add back logic about table headers, rather than generating them abstractly.

(Here's where things get muddy) Facilities to convert Dataset attributes into a table format / abstract of a table. This includes design elements like Tables/Rows/Cells/Styles in design.elements.py, as well as abstract_doc.py which will turn a Pydantic model into a tabular_report'ish thing. I wouldn't spend too much time on details here but would love big thoughts about how to simplify this. Here's a comment outlining my thoughts.

Adds a data dictionary for fields on our metadata. This concept feels solid, so nitpicks very welcome.

Adds declarative instructions for generating XLSX files, including what columns to include, and what objects to table'ify. Again, I think this is a solid concept that needs some help settling in. Please pick those nits.

Modifications to existing scripts to start from the full OrgMetadata instead of specific Datasets. In general, we should really never use the dataset metadata directly, as it will not inherit Org attributes, the data dictionary, or artifacts.

I general, I'd love to get input to clean up 1, 3, and 4 above, then merge.
Then for 2, I think we can rewrite this to accommodate the HTML/PDF generation. So for 2) big picture thoughts welcome, but detailed review isn't needed, unless you notice something glaringly wrong.

Not to muddy the waters but have you looked at xlsxwriter? Seems to have a bit more support for formatting. Though it seems like you've managed to make things work pretty well with openpyxl

@fvankrieken I'm currently fixing a few things, and documenting. If you happen to start reviewing imminently, here's what I'm thinking kind of broadly:
I like your idea of a tabular_report - specifically I'm thinking of it as an object you can generate for any of our Pydantic models (though just starting with Metadata), that will translate a pydantic class into information displayable in a table, with the field metadata if it's available. Then we can pass the tabular_report to different renderers (ie XLSX, or HTML for @damonmcc). It would also carry around some suggested styling for cells, (e.g. if you render the column.values rows as a str, you should use a monospaced font) that renderers can use or ignore.
So that'd mean probably removing Rows and Cells from design.elements, and making the XLSX writer a little more prescriptive about generating tables (as opposed to constructing them entirely abstractly)
But I think the DataDictionary and Artifact side of things are pretty solid concepts that need some sharpening. So would love feedback on that.
Attached is a sample XLSX for Zoning Map Amendments. It's a good example for the table formatting in the Column Information tab.
zoning_map_amendments_data_dictionary.xlsx

@alexrichey from looking at the sample XLSX for Zoning Map Amendments you linked to (zoning_map_amendments_data_dictionary.xlsx), this is great!! I compared it to the XLSX on the (private for now) Open Data page for Zoning Map Amendments and they seem identical to me
when you get through the last fixes, happy to approve the PR. before and after that, I'll keep looking through the changes and following the convos

@fvankrieken I'm currently fixing a few things, and documenting. If you happen to start reviewing imminently, here's what I'm thinking kind of broadly:
I like your idea of a tabular_report - specifically I'm thinking of it as an object you can generate for any of our Pydantic models (though just starting with Metadata), that will translate a pydantic class into information displayable in a table, with the field metadata if it's available. Then we can pass the tabular_report to different renderers (ie XLSX, or HTML for @damonmcc). It would also carry around some suggested styling for cells, (e.g. if you render the column.values rows as a str, you should use a monospaced font) that renderers can use or ignore.
So that'd mean probably removing Rows and Cells from design.elements, and making the XLSX writer a little more prescriptive about generating tables (as opposed to constructing them entirely abstractly)
But I think the DataDictionary and Artifact side of things are pretty solid concepts that need some sharpening. So would love feedback on that.
Attached is a sample XLSX for Zoning Map Amendments. It's a good example for the table formatting in the Column Information tab.
zoning_map_amendments_data_dictionary.xlsx

I like this - when you describe it this way, I feel like this is a (much) more complex version of the little things I was bumping up against with my indented_print. More complex formatting obviously. For generalizing to pydantic models, curious on your thoughts around levels of nested models - would you "truncate" at some point in building a more generic report? Or handle that at the level of renderer? This is your tabulate case - something that needs to be coerced to a cell itself has nested structure. So in other words, should the "abstract_doc" have some knowledge of how deep the data can go, or should a renderer have logic to, when it finds another table inside a cell, to call "tabulate" or something like that. Or do we leave all of that up to the specific artifact definition


Correct "encryption/decryption" in description

Hi, just a small correction

LOL. Thanks huge for the patch!

👍


Update scripts so url check is fixed

Purpose/implementation Section
What changes are being implemented in this Pull Request?
URL checker hasn't been working with Rmds: #514
This should fix that! 🤞

Yay. This is working. Going to merge


chore(Tactic/TypeStar): reduce imports

I noticed that this doesn't actually use Std or in fact any of its other imports.
The downstream fallout is pretty small because Mathlib.Tactic.Basic imports Std anyway, so this only impacts files not downstream of that.

Thanks!
I see that there are additions to shake.  Should there also be some deletions, from the no longer imported Std?

I just ran shake --update; I assume this auto-removes ignore instructions that no longer do anything?

This is a question for @digama0.  I suspect that an unused import should have an entry in shake and removing an unused import should therefore imply a removal in shake.
Anyway, this is certainly not an issue with this PR!
maintainer merge

I just ran shake --update; I assume this auto-removes ignore instructions that no longer do anything?

It auto-removes entries from ignore but not ignoreImport or ignoreAll. This one might have been on those other lists.

Can we leave the shake-reconfiguration to a follow-up?

Yes, I think that it does not make much sense to edit these noshake files manually.
Thanks!
maintainer merge


Add this to types repo

Hello, I see in this issue that you suggested adding this directly to mithril.js, too bad that didn't happen :(
But I see you suggested adding it to DT, but I'd like to suggest instead of that, or maybe in addition to that, you add it to types so typings can be used for managing.

Hi - this is getting merged into the mithril.js repo actually. Should be included in the next release.

Nice!!!!


Cosmos DB max_integrated_cache_staleness_in_ms should allow 0 as a value

Package Name: azure-cosmos
Package Version: 4.3.0b3
Operating System: Windows 11
Python Version: 3.8.3

Describe the bug
Setting max_integrated_cache_staleness for read_item to 0 should be valid but throws a "ValueError: Parameter 'max_integrated_cache_staleness_in_ms' can only be a positive integer." error. This input parameter is valid for the query_items function, but it doesn't set the cache staleness to 0 and instead it appears to fall back to the default cache staleness of 5 minutes.
To Reproduce
Steps to reproduce the behavior:

item_response = container.read_item(item='1', partition_key='1', max_integrated_cache_staleness_in_ms=0)
The first query should cost X RUs and the second query should also cost X RUs, indicating that query 1 wasn't cached due to the staleness being set to 0

`query = "SELECT * FROM c"
items = list(container.query_items(
query=query,
max_integrated_cache_staleness_in_ms=0
))
request_charge = container.client_connection.last_response_headers['x-ms-request-charge']
print('Operation consumed {1} request units'.format(request_charge))
items2 = list(container.query_items(
query=query,
max_integrated_cache_staleness_in_ms=0,
))
request_charge2 = container.client_connection.last_response_headers['x-ms-request-charge']
print('Operation consumed {1} request units'.format(request_charge2))`
Expected behavior
Setting max_integrated_cache_staleness_in_ms to 0 should bypass the integrated cache and each subsequent request should be refreshed from the backend. https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-configure-integrated-cache#adjust-maxintegratedcachestaleness

@jcocchi We are looking into it and get back to you for any additional information.

Hi @jcocchi we found the reason why it was raising the error when setting 0, it's a very small and easy fix and we will try to have that out asap. Thank you very much for being thorough with your explanation of the issue.


Chance string returns always the same string

Hi there,
I'm using chance to generate salts for wordpress. It works well, but i don't know why, everytime i run the script, it will generate exactly the same salts each time.
This is a part of the script i use
                // Get chance format
                var format = {
                    length: 64,
                    pool: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%^&*()-_[]{}<>~`+=,.;:/?|'
                };

                // Load Chance
                var Chance = require('chance');

                // Instantiate Chance so it can be used
                var chance = new Chance(format);

                return "echo '>> Generating salts in .env file' && echo '\n" +
                    "AUTH_KEY=\"" + chance.string(format) + "\"\n" +
                    "SECURE_AUTH_KEY=\"" + chance.string(format) + "\"\n" +
                    "LOGGED_IN_KEY=\"" + chance.string(format) + "\"\n" +
                    "NONCE_KEY=\"" + chance.string(format) + "\"\n" +
                    "AUTH_SALT=\"" + chance.string(format) + "\"\n" +
                    "SECURE_AUTH_SALT=\"" + chance.string(format) + "\"\n" +
                    "LOGGED_IN_SALT=\"" + chance.string(format) + "\"\n" +
                    "NONCE_SALT=\"" + chance.string(format) + "\"" +
                    "' >> .env";

The result in the .env file is the following
AUTH_KEY="X1${2<X}M46INA`f:yIQ-[VRZJ,{gEh6bH]:)m>>?Q-_PU)9k$50mW;*UjLQxq(^"
SECURE_AUTH_KEY="PtZmbD3n3u3I.+9OG3N+@if/868psGl&C2GDZdN5?:j6s5o|60wLPQv4oEj87Cm)"
LOGGED_IN_KEY="r;H7[bi4{8i//~QT/f2O^bdNz?kGARk9C~L=ft@YY<xTV=i=Zh,yCa8{l6${AxqJ"
NONCE_KEY="0Xbo]Han9Zy#^z:Mw*ZJ1`Z5u`;9OO}?@kA([LJ8~w0C~:@0%7TV:u5JM32QbQB$"
AUTH_SALT="7zAI3&M~mjAiZF1XZd6/6CMt`mHiN?`x_W#Oji=F$Q|{n+>doT3pl)}<_LZmKcg?"
SECURE_AUTH_SALT="@HOL$e<G/b<ub*G.%&pEUSeErqbp-Pu>F.,2#1c)oT3eZ@v|.y39W<1&%:CXJtsu"
LOGGED_IN_SALT="qt.Z^OS/u9whffNRC~@/H3qWc}g^9RO8W2`$|QtP7+xmbu*~C+I60D]U4a>CyM-~"
NONCE_SALT="q9;P9Rt);u%~wCt:UQc$snM%H6Ptyq0_<&k8Uylp$#JPY{qsnoRlG$.c*&&i+th&"

If i remove thoses lines in my .env file, and run the chance script again, the output will be exactly the same ! How is this possible ? Chance isn't meant to generate random strings from given characters ? Am i missing something ? Is it possible to give an argument to make the generated string REALLY unique ?
Thanks a lot for your advices.

Well,
As i can see in this old issue https://github.com/victorquinn/chancejs/issues/142 , i'm not the only who got this problem and i assume this will probably not being fixed soon.
As a workaround for now, which is really not ideal, i use the following function
String.prototype.shuffle = function () {
        var a = this.split(""),
            n = a.length;

        for(var i = n - 1; i > 0; i--) {
            var j = Math.floor(Math.random() * (i + 1));
            var tmp = a[i];
            a[i] = a[j];
            a[j] = tmp;
        }
        return a.join("");
    };

And then reorder randomly the generated string
chance.string(format).shuffle()

You're using new Chance(seed) to construct your chance instance. This means you always provide the same seed and thus always get the same results.

@oliversalzburg ah, you are totally right ^^ Argh, how could i miss that .. Just used the example in the doc without reading it carefully. Thanks for this tip.


Use Julia Formatter to reformat all files to modern Julia style

Also adds a CI check

Codecov Report

Merging #82 (41a1c54) into main (b5b1efd) will not change coverage.
The diff coverage is 0.00%.

@@          Coverage Diff          @@
##            main     #82   +/-   ##
=====================================
  Coverage   0.00%   0.00%
=====================================
  Files         39      39
  Lines       1423    1456   +33
=====================================
- Misses      1423    1456   +33

Impacted Files
Coverage Δ

src/miscellaneous/helper.jl
0.00% <0.00%> (ø)

src/plotting/plots.jl
0.00% <0.00%> (ø)

src/preprocessing/data_rejection.jl
0.00% <0.00%> (ø)

src/preprocessing/filtering.jl
0.00% <0.00%> (ø)

src/preprocessing/reference.jl
0.00% <0.00%> (ø)

src/preprocessing/triggers.jl
0.00% <0.00%> (ø)

src/read_write/avr.jl
0.00% <0.00%> (ø)

src/read_write/bdf.jl
0.00% <0.00%> (ø)

src/read_write/bsa.jl
0.00% <0.00%> (ø)

src/read_write/dat.jl
0.00% <0.00%> (ø)

... and 28 more

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 b5b1efd...41a1c54. Read the comment docs.


Interrupting non-trivial commands on Cygwin

Hello
When the user presses Ctrl-C to interrupt a build command on Cygwin Ninja will wait until the /bin/sh child process is killed manually. For some reason only commands with a semicolon cause this error. E.g.:
rule test
  command = sleep 10; echo done
build test: test
default test

Disabling setpgid(0, 0) on Cygwin appears to fix these problems. I checked it with the given small example and repeatedly interrupted (and restarted) CMake build. No process survived the interruptions. No additional unit tests are broken. (DiskInterfaceTest.StatBadPath fails)
I must admit that I don't understand what I'm doing or what the original code is supposed to accomplish in the first place. It would be great if someone else could examine this issue in more detail.
Kind regards, Paul

I think this is what's addressed by #967 too, where we kind of decided that supporting this for real is a lot of work with little benefit. I think if you pipe sleep's output to /dev/null it might work iirc.


enhance: resource group declarative api

Related Issue: #244
Related Milvus Issue: https://github.com/milvus-io/milvus/issues/30647

Add resource group configuration proto.

Add UpdateResourceGroups and modify AddResourceGroup api.

Add NodeInfo.

/lgtm

/approve

this seems to be causing some golang tests to fail. in my local go unit test I built milvus using the latest milvus-proto commit on the master branch, and proxy_test.go complains proxyTestServer doesn't have method UpdateResourceGroups


Doc request: compare semverver

semverver is another tool for checking semver violations. Its approach at a high level is to compare rlibs rather than rustdocs.
semverver was originally published as part of GSoC 2017, but has recently been adopted into the rust-lang org to hopefully keep it functional.
Obviously there will be differences in what changes both tools do and don't catch, and keeping a scorecard of that probably isn't really worth the effort. It would be nice, however, to call out semverver as an alternative and list some high-level differences resulting from the different approaches. As an initial intuition, that would include at least

semver-checks by design only checks rustdoc-exposed information, so ignores any #[doc(hidden)] items, which semverver has access to to check.
semver-checks works off of (mostly?) stable metadata from rustdoc; semverver is by design tied to only work on a specific nightly.

Personally, I think diffing the documented surface is the "more correct" approach here, as semver is about public exposed API. Relying on details not contained in the documentation is relying on details outside of the semver guarantee.

Thanks for the suggestion and for the thoughtful writeup! I think it's a good idea and very worth doing.
I've heard of but have never used semverver, and I have only a very shallow understanding of the technique it uses and its tradeoffs. Due to my unfamiliarity, I'm concerned that I might not be able to provide a meaningful and fair comparison.
I'd also like to compare cargo-semver-checks to cargo-public-api, another tool with yet another approach to the problem of semver-checking. That one I'm more familiar with and I would feel more comfortable writing about.
@CAD97, have you used semverver? Would you be interested in giving PR feedback or collaborating on the comparison docs?

I haven't really tried using semverver myself either, so I won't be much help there unfortunately. But what I think is more worth documenting is the high-level differences implied by the technique, rather than implementation, anyway.
I'd be happy to review a PR adding the comparison.

Thanks, I'll try to put something together and run it by you. I'll be travelling so it might be a couple of weeks.


Can't install Nuxt3 RC14: No matching version found for @nuxt/vite-builder-edge

nuxt: 3.0.0-rc.14-27799749.15d4cea.
node: 16.17.0

In an existing project, I remove package-lock.json and rimraf my node_modules folder.  I run the command:
npm i nuxt3@latest
And get this error:
npm ERR! code ETARGET
npm ERR! notarget No matching version found for<EMAIL_ADDRESS>npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.

I would expect that this would simply install without error.

If I use yarn to install it (I previously had problems with Yarn's install, but trying it again):
yarn add nuxt3@latest
It asks me to pick which version of nuxt/vite-builder-edge I want to install and the latest one is for RC9.
3.0.0-rc.9-27703329.537338f
I selected this one and it continued install correctly.
I'm happy for you to close this issue, but I'll leave it open so you're aware there is an issue with NPM.


Strict mode option to automatically cast any to mixed

Proposal
A new strict mode option that, when enabled, automatically casts all instances of any to mixed.
It should affect the results of flow coverage. If any is treated as mixed, the effective coverage should go up.
It should not apply to any instances of a suppress_type alias, much like unclear-type does not currently apply to an instance of a suppress_type alias. This way one could still down-cast.
We'd have to consider whether this ought to influence the behaviour of the untyped-import and the untyped-type-import rules. If any is treated as mixed, then untyped imports would no longer be aliased to any, but to mixed instead.
We should consider whether this should also apply to Object and Function, at least in contexts where a value with either of those types is being referenced. However, in contexts where the type of a value needs instead to match Object or Function, aliasing them to mixed would effectively reduce soundness.

Use case
This is useful to stop accidental use of any not caught by the existing lint rules. E.g. when using the return value of JSON.parse, Response.json, or any 3rd party type definitions that use any in a way that might flow back into the user's codebase.
This would encourage actually refining the return values (and handling potential errors), or at the very least making a type cast explicit by forcing the use of a suppress_type alias, which could thus be searched for in code reviews or by CI tools.
This is similar to what is asked for in https://github.com/facebook/flow/issues/1611, but is not limited to library definitions.
It would also be a solution to https://github.com/facebook/flow/issues/2470 (in particular it would incidentally implement the 3rd suggestion).

Just to note that Function and Object are actually aliased to any since version 0.88.0, vastly simplifiying the handling of these types. In this proposal, they would thus also be aliased to mixed, regardless of where they occur.

Closed for the same reason as #1611


Can't pan on firefox

I'm on Arch linux using the magic mouse.
On Vivaldi or Chrome I can pan and zoom without any problem.
On Firefox, I can zoom, but panning is super slow.
I tried this on multiple examples from the demos and ready to use code with the same result.
Any idea what might be causing the problem?

I am not able to reproduce this problem. I use manjaro linux (which is based on arch) for development and firefox works ok.
I also do not have the magic mouse or a plain arch linux based computer to test this


Ability to vendor a fork of a package

I have forks of particular packages that have new features but are not yet merged with the official repositories. Since the import paths of these packages are exactly the same as the official ones and only the repository path would be different, I tried to import the origin and then update the repository paths manually in the manifest file. When running gvt update I see the repository paths being rewritten to the original repository URL so no luck.
Would be great if we can temporarily vendor forks using the gvt command line tool so we don't have to wait on the main repositories to merge the requests.

That makes sense, but since it's not a common use case, I would not add a fetch option to do this.
I'll teach update and restore about importpath != repository so that the manifest modification you tried will work, and I'll document that.

And done!


2020-11-16 18:04:14 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:14 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>414174835.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:14 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:14 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>414556409.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:14 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:14 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>414779269.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:15 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:15 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>415012810.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:15 VERBOSE  task          current-tv-list REJECTED: `Snuff Box (2006)` by if plugin because matched requirement: trakt_collected and trakt_series_status in ['ended', 'canceled']
2020-11-16 18:04:15 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:15 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>415419172.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:15 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:15 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>415635755.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:15 VERBOSE  task          current-tv-list REJECTED: `Doctor Horrible's Sing-Along Blog (2008)` by if plugin because matched requirement: trakt_collected and trakt_series_status in ['ended', 'canceled']
2020-11-16 18:04:15 VERBOSE  task          current-tv-list REJECTED: `Clone High (2002)` by if plugin because matched requirement: trakt_collected and trakt_series_status in ['ended', 'canceled']
2020-11-16 18:04:16 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:16 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>416012613.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:16 ERROR    lazy_lookup   current-tv-list Unhandled error in lazy lookup plugin: unconverted data remains: :00
2020-11-16 18:04:16 CRITICAL manager       current-tv-list An unexpected crash has occurred. Writing crash report to /etc/flexget/crash_report.2<IP_ADDRESS>416250463.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-16 18:04:16 VERBOSE  details       current-tv-list Summary - Accepted: 0 (Rejected: 90 Undecided: 235 Failed: 0)

Additional information:

FlexGet version: 3.1.89
Python version: 3.8.5
Installation method: pip3 install --upgrade flexget
Using daemon (yes/no): no
OS and version: Ubuntu 20.04.1 LTS (GNU/Linux 3.16.85-62 aarch64)
Link to crash log:
crash_report.2<IP_ADDRESS>413441968.log
crash_report.2<IP_ADDRESS>413667779.log
crash_report.2<IP_ADDRESS>413890265.log
crash_report.2<IP_ADDRESS>414174835.log
crash_report.2<IP_ADDRESS>414556409.log
crash_report.2<IP_ADDRESS>414779269.log
crash_report.2<IP_ADDRESS>415012810.log
crash_report.2<IP_ADDRESS>415419172.log
crash_report.2<IP_ADDRESS>415635755.log
crash_report.2<IP_ADDRESS>416012613.log
crash_report.2<IP_ADDRESS>416250463.log
crash_report.2<IP_ADDRESS>313834864.log
crash_report.2<IP_ADDRESS>314088222.log
crash_report.2<IP_ADDRESS>314308241.log
crash_report.2<IP_ADDRESS>314533671.log
crash_report.2<IP_ADDRESS>315413328.log
crash_report.2<IP_ADDRESS>315617632.log
crash_report.2<IP_ADDRESS>315830924.log
crash_report.2<IP_ADDRESS>316040498.log
crash_report.2<IP_ADDRESS>316257161.log
crash_report.2<IP_ADDRESS>316468854.log
crash_report.2<IP_ADDRESS>316810725.log
crash_report.2<IP_ADDRESS>317016905.log
crash_report.2<IP_ADDRESS>317857928.log
crash_report.2<IP_ADDRESS>318085101.log
crash_report.2<IP_ADDRESS>318422414.log
crash_report.2<IP_ADDRESS>318630906.log
crash_report.2<IP_ADDRESS>318843461.log
crash_report.2<IP_ADDRESS>319057739.log
crash_report.2<IP_ADDRESS>319287220.log
crash_report.2<IP_ADDRESS>319501120.log
crash_report.2<IP_ADDRESS>320446935.log
crash_report.2<IP_ADDRESS>320656227.log
crash_report.2<IP_ADDRESS>320873580.log
crash_report.2<IP_ADDRESS>321119024.log
crash_report.2<IP_ADDRESS>321459142.log
crash_report.2<IP_ADDRESS>321690568.log
crash_report.2<IP_ADDRESS>321916235.log
crash_report.2<IP_ADDRESS>322147408.log
crash_report.2<IP_ADDRESS>322380264.log
crash_report.2<IP_ADDRESS>322608042.log
crash_report.2<IP_ADDRESS>322837403.log
crash_report.2<IP_ADDRESS>323069350.log
crash_report.2<IP_ADDRESS>323360828.log
crash_report.2<IP_ADDRESS>323605885.log
crash_report.2<IP_ADDRESS>323927057.log
crash_report.2<IP_ADDRESS>324154405.log
crash_report.2<IP_ADDRESS>324449128.log
crash_report.2<IP_ADDRESS>324657579.log
crash_report.2<IP_ADDRESS>324935779.log
crash_report.2<IP_ADDRESS>325145232.log
crash_report.2<IP_ADDRESS>325424303.log
crash_report.2<IP_ADDRESS>325641755.log
crash_report.2<IP_ADDRESS>325859540.log
crash_report.2<IP_ADDRESS>326081343.log
crash_report.2<IP_ADDRESS>326301134.log
crash_report.2<IP_ADDRESS>326525687.log
crash_report.2<IP_ADDRESS>327057881.log
crash_report.2<IP_ADDRESS>327266574.log
crash_report.2<IP_ADDRESS>327487537.log
crash_report.2<IP_ADDRESS>327697066.log
crash_report.2<IP_ADDRESS>328281199.log
crash_report.2<IP_ADDRESS>328498438.log
crash_report.2<IP_ADDRESS>328842969.log
crash_report.2<IP_ADDRESS>329056683.log
crash_report.2<IP_ADDRESS>329276517.log
crash_report.2<IP_ADDRESS>329507015.log
crash_report.2<IP_ADDRESS>330094418.log
crash_report.2<IP_ADDRESS>330311177.log
crash_report.2<IP_ADDRESS>330719011.log
crash_report.2<IP_ADDRESS>330951462.log
crash_report.2<IP_ADDRESS>331366304.log
crash_report.2<IP_ADDRESS>331589264.log
crash_report.2<IP_ADDRESS>331880512.log
crash_report.2<IP_ADDRESS>332106911.log
crash_report.2<IP_ADDRESS>332741902.log
crash_report.2<IP_ADDRESS>332980764.log
crash_report.2<IP_ADDRESS>333483611.log
crash_report.2<IP_ADDRESS>333705831.log
crash_report.2<IP_ADDRESS>333942494.log
crash_report.2<IP_ADDRESS>334152507.log
crash_report.2<IP_ADDRESS>334424583.log
crash_report.2<IP_ADDRESS>334628744.log
crash_report.2<IP_ADDRESS>335023825.log
crash_report.2<IP_ADDRESS>335238058.log
crash_report.2<IP_ADDRESS>335831930.log
crash_report.2<IP_ADDRESS>336054081.log
crash_report.2<IP_ADDRESS>336298799.log
crash_report.2<IP_ADDRESS>336547497.log
crash_report.2<IP_ADDRESS>337270223.log
crash_report.2<IP_ADDRESS>337496742.log
crash_report.2<IP_ADDRESS>337736144.log
crash_report.2<IP_ADDRESS>337968974.log
crash_report.2<IP_ADDRESS>338449780.log
crash_report.2<IP_ADDRESS>338652876.log
crash_report.2<IP_ADDRESS>338986613.log
crash_report.2<IP_ADDRESS>339193318.log
crash_report.2<IP_ADDRESS>339419176.log
crash_report.2<IP_ADDRESS>339623256.log
crash_report.2<IP_ADDRESS>340143913.log
crash_report.2<IP_ADDRESS>340348776.log
crash_report.2<IP_ADDRESS>340573814.log
crash_report.2<IP_ADDRESS>340791376.log
crash_report.2<IP_ADDRESS>341262525.log
crash_report.2<IP_ADDRESS>341477694.log
crash_report.2<IP_ADDRESS>341739012.log
crash_report.2<IP_ADDRESS>341961394.log
crash_report.2<IP_ADDRESS>342194540.log
crash_report.2<IP_ADDRESS>342408725.log
crash_report.2<IP_ADDRESS>342746477.log
crash_report.2<IP_ADDRESS>342965857.log
crash_report.2<IP_ADDRESS>343182424.log
crash_report.2<IP_ADDRESS>343415322.log
crash_report.2<IP_ADDRESS>343696630.log
crash_report.2<IP_ADDRESS>343914112.log
crash_report.2<IP_ADDRESS>344643505.log
crash_report.2<IP_ADDRESS>344853963.log
crash_report.2<IP_ADDRESS>345079943.log
crash_report.2<IP_ADDRESS>345307509.log
crash_report.2<IP_ADDRESS>345670542.log
crash_report.2<IP_ADDRESS>345905435.log
crash_report.2<IP_ADDRESS>346114674.log
crash_report.2<IP_ADDRESS>346347729.log
crash_report.2<IP_ADDRESS>346776175.log
crash_report.2<IP_ADDRESS>347022715.log
crash_report.2<IP_ADDRESS>347394370.log
crash_report.2<IP_ADDRESS>347615983.log
crash_report.2<IP_ADDRESS>347857979.log
crash_report.2<IP_ADDRESS>348068360.log
crash_report.2<IP_ADDRESS>348289771.log
crash_report.2<IP_ADDRESS>348496701.log
crash_report.2<IP_ADDRESS>349204871.log
crash_report.2<IP_ADDRESS>349417457.log
crash_report.2<IP_ADDRESS>349901814.log
crash_report.2<IP_ADDRESS>350112820.log
crash_report.2<IP_ADDRESS>350330860.log
crash_report.2<IP_ADDRESS>350558457.log
crash_report.2<IP_ADDRESS>350828768.log
crash_report.2<IP_ADDRESS>351041723.log
crash_report.2<IP_ADDRESS>351316672.log
crash_report.2<IP_ADDRESS>351531952.log
crash_report.2<IP_ADDRESS>351773985.log
crash_report.2<IP_ADDRESS>351992119.log
crash_report.2<IP_ADDRESS>352270133.log
crash_report.2<IP_ADDRESS>352481881.log
crash_report.2<IP_ADDRESS>352701780.log
crash_report.2<IP_ADDRESS>352913993.log
crash_report.2<IP_ADDRESS>353203227.log
crash_report.2<IP_ADDRESS>353432886.log
crash_report.2<IP_ADDRESS>353655171.log
crash_report.2<IP_ADDRESS>353874622.log
crash_report.2<IP_ADDRESS>354147836.log
crash_report.2<IP_ADDRESS>354360667.log
crash_report.2<IP_ADDRESS>354692551.log
crash_report.2<IP_ADDRESS>354904660.log
crash_report.2<IP_ADDRESS>355128756.log
crash_report.2<IP_ADDRESS>355364723.log
crash_report.2<IP_ADDRESS>355585386.log
crash_report.2<IP_ADDRESS>355819372.log
crash_report.2<IP_ADDRESS>356376348.log
crash_report.2<IP_ADDRESS>356591089.log
crash_report.2<IP_ADDRESS>356934910.log
crash_report.2<IP_ADDRESS>357150252.log
crash_report.2<IP_ADDRESS>357441864.log
crash_report.2<IP_ADDRESS>357676651.log
crash_report.2<IP_ADDRESS>357971043.log
crash_report.2<IP_ADDRESS>358219832.log
crash_report.2<IP_ADDRESS>358476232.log
crash_report.2<IP_ADDRESS>358704672.log
crash_report.2<IP_ADDRESS>359009172.log
crash_report.2<IP_ADDRESS>359248599.log
crash_report.2<IP_ADDRESS>359548660.log
crash_report.2<IP_ADDRESS>359780142.log
crash_report.2<IP_ADDRESS>400019105.log
crash_report.2<IP_ADDRESS>400231423.log
crash_report.2<IP_ADDRESS>400576361.log
crash_report.2<IP_ADDRESS>400799281.log
crash_report.2<IP_ADDRESS>401270965.log
crash_report.2<IP_ADDRESS>401488928.log
crash_report.2<IP_ADDRESS>401704369.log
crash_report.2<IP_ADDRESS>401926427.log
crash_report.2<IP_ADDRESS>402140728.log
crash_report.2<IP_ADDRESS>402353047.log
crash_report.2<IP_ADDRESS>402639928.log
crash_report.2<IP_ADDRESS>402850820.log
crash_report.2<IP_ADDRESS>403082276.log
crash_report.2<IP_ADDRESS>403317576.log
crash_report.2<IP_ADDRESS>403624068.log
crash_report.2<IP_ADDRESS>403834899.log
crash_report.2<IP_ADDRESS>404058939.log
crash_report.2<IP_ADDRESS>404267962.log
crash_report.2<IP_ADDRESS>404555794.log
crash_report.2<IP_ADDRESS>404790622.log
crash_report.2<IP_ADDRESS>405227928.log
crash_report.2<IP_ADDRESS>405453826.log
crash_report.2<IP_ADDRESS>405762697.log
crash_report.2<IP_ADDRESS>406000013.log
crash_report.2<IP_ADDRESS>406238817.log
crash_report.2<IP_ADDRESS>406512008.log
crash_report.2<IP_ADDRESS>407032709.log
crash_report.2<IP_ADDRESS>407258236.log
crash_report.2<IP_ADDRESS>407751505.log
crash_report.2<IP_ADDRESS>407981606.log
crash_report.2<IP_ADDRESS>408667553.log
crash_report.2<IP_ADDRESS>408904768.log
crash_report.2<IP_ADDRESS>409199015.log
crash_report.2<IP_ADDRESS>409409306.log
crash_report.2<IP_ADDRESS>409638096.log
crash_report.2<IP_ADDRESS>409843945.log
crash_report.2<IP_ADDRESS>410266350.log
crash_report.2<IP_ADDRESS>410480229.log
crash_report.2<IP_ADDRESS>410697326.log
crash_report.2<IP_ADDRESS>410904465.log
crash_report.2<IP_ADDRESS>411135200.log
crash_report.2<IP_ADDRESS>411356924.log
crash_report.2<IP_ADDRESS>411938491.log
crash_report.2<IP_ADDRESS>412141599.log
crash_report.2<IP_ADDRESS>412438028.log
crash_report.2<IP_ADDRESS>412674634.log
crash_report.2<IP_ADDRESS>413237814.log

I'm seeing the exact same thing, but I use trakt_lookup to get the trakt_watched property that I then use for filtering.
Using daemon (yes/no): yes
OS and version: Linux Mint 20
Rest of configuration same as above, python version, install method etc.
.flexget folder getting flooded with crash reports ...

Same exact issue here as well!!

This issue has been mentioned on Forum - FlexGet. There might be relevant details there:
https://discuss.flexget.com/t/unhandled-error-in-lazy-lookup-plugin-causes-lot-of-crash-reports/5315/2

Same, here, I had to stop the daemon because my computer was unusable due to too many logs.
On a side note: this should not happen, no matter how many times an error happens, it should not flood an hard disk with logs.
Log: https://pastebin.com/p072br4w
Config: https://github.com/effemmeffe/flexget/blob/d4e422ec4a1ee3e8f5e919dee248b3382742734b/config.yml

Is it as simple as the format string should be %H:%M:%S instead of just %H:%M in the call to strptime() in flexget/components/trakt/db.py, line 641?

same here

Same error on latest build

Is it as simple as the format string should be %H:%M:%S instead of just %H:%M in the call to strptime() in flexget/components/trakt/db.py, line 641?

It does fix the issue. Tested on 2.21.35.

Is it as simple as the format string should be %H:%M:%S instead of just %H:%M in the call to strptime() in flexget/components/trakt/db.py, line 641?

didn't work for me:
2020-11-27 22:27:02 ERROR    lazy_lookup   cleanup-lists   Unhandled error in lazy lookup plugin: time data '22:00' does not match format '%H:%M:%S'
2020-11-27 22:27:02 CRITICAL manager       cleanup-lists   An unexpected crash has occurred. Writing crash report to /home/torrent/.flexget/crash_report.2<IP_ADDRESS>702797487.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-27 22:27:03 ERROR    lazy_lookup   cleanup-lists   Unhandled error in lazy lookup plugin: time data '21:00' does not match format '%H:%M:%S'
2020-11-27 22:27:03 CRITICAL manager       cleanup-lists   An unexpected crash has occurred. Writing crash report to /home/torrent/.flexget/crash_report.2<IP_ADDRESS>703398578.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-27 22:27:03 ERROR    lazy_lookup   cleanup-lists   Unhandled error in lazy lookup plugin: time data '21:00' does not match format '%H:%M:%S'
2020-11-27 22:27:03 CRITICAL manager       cleanup-lists   An unexpected crash has occurred. Writing crash report to /home/torrent/.flexget/crash_report.2<IP_ADDRESS>703869696.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-27 22:27:04 ERROR    lazy_lookup   cleanup-lists   Unhandled error in lazy lookup plugin: time data '21:00' does not match format '%H:%M:%S'
2020-11-27 22:27:04 CRITICAL manager       cleanup-lists   An unexpected crash has occurred. Writing crash report to /home/torrent/.flexget/crash_report.2<IP_ADDRESS>704307912.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-27 22:27:04 ERROR    lazy_lookup   cleanup-lists   Unhandled error in lazy lookup plugin: time data '20:00' does not match format '%H:%M:%S'
2020-11-27 22:27:04 CRITICAL manager       cleanup-lists   An unexpected crash has occurred. Writing crash report to /home/torrent/.flexget/crash_report.2<IP_ADDRESS>704776770.log. Please verify you are running the latest version of flexget by using "flexget -V" from CLI or by using version_checker plugin at http://flexget.com/wiki/Plugins/version_checker. You are currently using version 3.1.89
2020-11-27 22:27:05 ERROR    lazy_lookup   cleanup-lists   Unhandled error in lazy lookup plugin: time data '03:00' does not match format '%H:%M:%S'

2020-11-27 22:27:11 DEBUG    utils.requests cleanup-lists   GETing URL https://api.trakt.tv/shows/148826 with args () and kwargs {'params': {'extended': 'full'}, 'allow_redirects': True, 'timeout': 30}
2020-11-27 22:27:13 ERROR    lazy_lookup   cleanup-lists   Unhandled error in lazy lookup plugin: time data '21:00' does not match format '%H:%M:%S'
Traceback (most recent call last):
  File "/home/torrent/.local/lib/python3.6/site-packages/flexget/utils/lazy_dict.py", line 41, in __getitem__
    callee.func(self.store, *(callee.args or []), **(callee.kwargs or {}))
  File "/home/torrent/.local/lib/python3.6/site-packages/flexget/components/trakt/trakt_lookup.py", line 200, in lazy_lookup
    db_data = get_db_data_for(media_type, entry, session)
  File "/home/torrent/.local/lib/python3.6/site-packages/flexget/components/trakt/trakt_lookup.py", line 96, in get_db_data_for
    show = lookup_series(session=session, **series_lookup_args)
  File "/home/torrent/.local/lib/python3.6/site-packages/flexget/components/trakt/api_trakt.py", line 186, in lookup_series
    series = session.merge(db.TraktShow(trakt_show, session))
  File "<string>", line 4, in __init__
  File "/home/torrent/.local/lib/python3.6/site-packages/sqlalchemy/orm/state.py", line 441, in _initialize_instance
    manager.dispatch.init_failure(self, args, kwargs)
  File "/home/torrent/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/home/torrent/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 153, in reraise
    raise value
  File "/home/torrent/.local/lib/python3.6/site-packages/sqlalchemy/orm/state.py", line 438, in _initialize_instance
    return manager.original_init(*mixed[1:], **kwargs)
  File "/home/torrent/.local/lib/python3.6/site-packages/flexget/components/trakt/db.py", line 623, in __init__
    self.update(trakt_show, session)
  File "/home/torrent/.local/lib/python3.6/site-packages/flexget/components/trakt/db.py", line 641, in update
    self.air_time = datetime.strptime(airs.get('time'), '%H:%M:%S').time()
  File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime
    (data_string, format))
ValueError: time data '21:00' does not match format '%H:%M:%S'

Try self.air_time = dateutil_parse(airs.get('time'), ignoretz=True).time() instead of self.air_time = datetime.strptime(airs.get('time'), '%H:%M:%S').time().

Try self.air_time = dateutil_parse(airs.get('time'), ignoretz=True).time() instead of self.air_time = datetime.strptime(airs.get('time'), '%H:%M:%S').time().

That worked for me

I also noticed this these errors in my logs after upgrading over the weekend.

Try self.air_time = dateutil_parse(airs.get('time'), ignoretz=True).time() instead of self.air_time = datetime.strptime(airs.get('time'), '%H:%M:%S').time().

That worked for me

This fix works for me too

How do I apply this temporary fix when I installed from package with pip? Can I just edit the package file? I loose the change should I later update then right?

Thanks for the reports and testing everyone! Next release will contain the fix.

I'm still getting flooded by crash reports, I'm on the last version, the 3.1.91.
Is the fix already in this release or should I wait for a new one?

I’m on 3.1.91. No issues so far.
-Hector

On Dec 5, 2020, at 6:57 AM, effemmeffe<EMAIL_ADDRESS>wrote:

I'm still getting flooded by crash reports, I'm on the last version, the 3.1.91.
Is the fix already in this release or should I wait for a new one?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

I did a restart of the daemon and still got problems, then a reboot and now it's working fine.


Avoiding Feature Bloat

Following this discussion about Catch2 on reddit. Many people recommend this project as a replacement, mainly to get better compile times and the convenience of a header-only library.
The major complaint with Catch2 is that it got too big, too many features, too much complexity, which is what led to the excessive compile-times in the first place.
I watched your CppCon 2017 presentation, and was impressed. However, I can't help but wonder, what is to keep this project from falling into the same trap? I ask because I'm looking for a unittesting framework for my very large project at work. In order to encourage adoption I want something that has simplicity as its guiding principle, as your project seems to.

doctest will remain as light, transparent, and easy to use as possible - that's the only reason it exists in the first place. The current API will remain stable and any feature request is evaluated based on the design goals: https://github.com/onqtam/doctest/blob/master/doc/markdown/features.md
This means sometimes saying no to ideas - or at least finding a way to hack around it for a specific use case.


Cant connect with azure extension to azure blob store

I'm doing that SQL below, but its complaining about the account_name which is part of the created secret, what am I doing wrong?
Tested with:
az://, abfs://, abfss://, azure://
but I always get the issue:
SQL Error: java.sql.SQLException: IO Error: Hit DeltaKernel FFI error (from: While trying to read from delta table: 'az://deltalake/articles/'): Hit error: 8 (ObjectStoreError) with message (Error interacting with object store: Generic MicrosoftAzure error: Account must be specified)
INSTALL delta;
LOAD delta;
INSTALL azure;
LOAD azure;

CREATE SECRET (
    TYPE AZURE,
    PROVIDER CREDENTIAL_CHAIN,
    CHAIN 'cli;env',
    ACCOUNT_NAME 'testsaweud'
);

select
    *
from
    delta_scan('az://deltalake/articles')

select
    *
from
    delta_scan('az://testsaweud.blob.core.windows.net/deltalake/articles')

SQL Error: java.sql.SQLException: IO Error: Hit DeltaKernel FFI error (from: While trying to read from delta table: 'az://testsaweud.blob.core.windows.net/deltalake/articles/'): Hit error: 8 (ObjectStoreError) with message (Error interacting with object store: Generic MicrosoftAzure error: URL did not match any known pattern for scheme: az://testsaweud.blob.core.windows.net/deltalake/articles/)

I think its a duplicate to: https://github.com/duckdb/duckdb_delta/issues/21

PR is up https://github.com/duckdb/duckdb_delta/pull/39

I will close as it is a duplicate to:
https://github.com/duckdb/duckdb_delta/issues/21


⚠ Bofrost.es has degraded performance

In 0a0be19, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1453 ms

Resolved: Bofrost.es performance has improved in 6924caa after 6 minutes.


fix issue related to PyCall

Codecov Report

Merging #6 (a13a92b) into main (f9c0a52) will increase coverage by 48.05%.
The diff coverage is 100.00%.

@@             Coverage Diff             @@
##             main       #6       +/-   ##
===========================================
+ Coverage   44.44%   92.50%   +48.05%
===========================================
  Files           3        3
  Lines          36       40        +4
===========================================
+ Hits           16       37       +21
+ Misses         20        3       -17

Impacted Files
Coverage Δ

src/pyDataverse.jl
100.00% <100.00%> (+100.00%)
: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 f9c0a52...a13a92b. Read the comment docs.


Incorrect version when upgrading to v3.0.0

Summary
after upgrading via cargo install jwt-cli and giving the command ./jwt -V in ~/.cargo/bin the version is still v2.5.1 instead of the expected v3.0.0
Steps to reproduce
see summary. Platform is Fedora 31 amd64.
Expected behavior
see summary.

Hi @ErickStaal, thanks for the issue! It looks like when I pushed up my changes the tag went up but not the actual code. It should work now. If not, let me know!

Hi Mike,
when working from the source code tar.gz file still v2.5.1 pops up when performing a ./jwt -V from ~/.cargo/bin

@ErickStaal Forgot to publish to crates.io! 3.0.0 and 3.0.1 should both be live now 😄


openai-whisper-cpp: 1.4.2 -> 1.5.2

Description of changes

Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[X] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 276056 run on x86_64-linux 1

1 package built:

openai-whisper-cpp

tested download script patch also. Thanks for updating that.


building proposal

Lines

random pattern in gradiant

i love this! is the above what we have now? but with random colors? The above looks so good too.
Can we see the pixels come in sooner, around z18? Right now I don't see them until z20.

Sure! Yesterday I was working on a generalize zoom interpolation module. http://tangrams.github.io/blocks/#functions-zoom
How it works?
Well, you add it like any other block, by importing it and then mixing it to the style.
Then you set the zooms wher should start and end the interpolation, setting the defines: ZOOM_START and ZOOM_END.
Then you use the zoom() function... by default this function gives a number between 0 and 1. But you can change it to interpolate any thing (floats, vec2, vec3, vec4 and even other functions). For that you Just need to change de defines: ZOOM_IN, and ZOOM_OUT.
Another thing that can be change is the type of interpolation, de default is linear, but can be any of the easing functions TangramBlocks. For it you need to change thedefine of this block like this: ZOOM: quadraticInOut
https://github.com/tangrams/tron/blob/gh-pages/layers/buildings.yaml#L56-L57

How about this?


fix: upgrade deps

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


ESP can read values but writing doesn't work

Hi,
I've tried to implement your project and everything seems to work (wifi, mqtt, reading values from jacuzzi) but sending buttons events doesn't, no reaction on the jacuzzi panel. The only difference between schematics and my work is that R1 resistor in my case has 977 Ohm (1k 5%). Does it matter?

The resistor value is ok.
Are you sure, that your esp8266 is running at 160MHz?
This most likely the reason. If it is not running at full speed it misses the time frame to send the key press.
Which implementation are you using?
https://github.com/UlrichMai/MaiPureSpaController is not very stable, and I am not using it anymore.
Did you consider using  https://github.com/UlrichMai/diyscip/tree/support-homekit ?
I ported the code to esphome, because I use homeassistant since 2 years now.

The resistor value is ok. Are you sure, that your esp8266 is running at 160MHz? This most likely the reason. If it is not running at full speed it misses the time frame to send the key press.
Which implementation are you using? https://github.com/UlrichMai/MaiPureSpaController is not very stable, and I am not using it anymore. Did you consider using https://github.com/UlrichMai/diyscip/tree/support-homekit ? I ported the code to esphome, because I use homeassistant since 2 years now.

I'm using this implementation https://github.com/UlrichMai/MaiPureSpaController flashed over Wemos D1 Mini (not sure what's the cpu speed (?)

BTW. Could you share your ESPhome code?


Query method to get mission model resource value schema

Adds a query method + test for getting resource value schema. As implemented, the schema is just stored as a Python dictionary on the ResourceType dataclass for simplicity; this could be branched out into more advanced dataclasses based on the Aerie value schema combinatory types if the need arises.
Closes #4 with the caveat that this doesn't explicitly get enumerations; I left that out because the combinatory schema preclude simply getting enumerated ("variant") values for a given resource.

@mattdailis Thanks for that insight. I don't expect this to be used often; the current use case would be to only call this on a per-deployment cadence to check & update other tools' knowledge of mission model resources.


SegmentedControlOption are getting duplicated on android rotation (ViewCell inside a ListView)

If you put a SegmentedControl into a ViewCell which is part of a ListView, and then rotate the device, the SegmentedControlOptions are once again added to the control, causing a duplication.  Rotating the device again repeats the behavior indefinitely.
It seems like the OnElementChanged method is getting re-triggered incorrectly.  There is no issue on iOS, only Android.

@alexrainman i hope we didn't scare you away.  this is a great control.

@julesx not at all. I have been busy with work. I hope to have some time this week to work on this.

I'll add that it doesn't seem to be rotation specifically, but more the list view rows getting their size re-calculated.  if i manipulate my listview by adding or removing other rows, the same duplication issue occurs

Hi there. I am back in business. I fixed all the issues less this one. Will try to reproduce.

I was able to fix it but the very first time text is aligned to left. Trying to solve that.

Solved.


TODO List

Thanks for making this! It's been really helpful so far. Do you have a roadmap or a todo list for this project? @ASCrookes said this in the other issue, I just wanted to make another issue to discuss it.
I'm still really new to Elixir but I'd love to help out any way I can!

Thank you too for the interest, I am glad you find this implementation useful. As I said in the other comment, I am too learning Elixir, therefore the more eyes seeing this code the better for all of its users :)
The TODO list is a big one, trust me, but here is the gist of it:

introducing the Model concept. I started integrating @raw1z's Model design into mine, and I am very very close to release a first version. he did a wonderful job there, I wish I saw his project before starting mine. Very-very soon, you will be able to declare your neo4j_sips models as simple as this (exact from a current test suite):

defmodule Person do
  use Neo4j.Sips.Model

  field :name, required: true
  field :email, required: true, unique: true, format: ~r/\b[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}\b/
  field :age, type: :integer
  field :doe_family, type: :boolean, default: false # used for testing
  field :neo4j_sips, type: :boolean, default: true

  validate_with :check_age

  relationship :FRIEND_OF, Person
  relationship :MARRIED_TO, Person

  def check_age(model) do
    if model.age == nil || model.age <= 0 do
      {:age, "model.validation.invalid_age"}
    end
  end
end

the only obstacle holding me back from pushing this new release, is a model update bug I am currently working on, but there are only so many hours in a day

clean up the tests and adding more tests for the Model implementation
consolidate the code and starting to work on the Ecto driver (my initial plan, when I started to work on this). Then Phoenix projects using neo4j_sips, like this one Elixir, Phoenix - The Movies would be a breeze to build :)
implement a new Connection(-like) module to support Bolt, Neo4j's upcoming binary protocol.

I was planning this week-end to push a development branch, containing the stable release of the Model code (incl tests. of course) and I'd appreciate if you guys would check it out. Sending pull requests is highly encouraged.
Thanks again for interest.

The model's definitely the biggest feature I was missing. I can test it out once the dev branch is pushed :)

dev branch available: https://github.com/florinpatrascu/neo4j_sips/tree/model_intro, have a look :)
Not ready for production yet.

Also, I started to remove the Mock support, from the tests. Was trying to maintain the model legacy tests as close as possible to their initial intent, but it's just more overhead that hinders on the new development. Rewriting most of the model tests where we used the Mock before. If you want to send any PR, please do not use Mock. Thank you! /cc @ASCrookes

I'll test it out tomorrow morning and let you know how it goes. Got a crazy project deadline tonight.

no worries

finally fixed the tests, they are all green now, see: the model_intro branch, for more details, if interested  /cc @ASCrookes. Will also open few new issues, for tracking the new development.
Will close this issue, as the TODO list is available in branch now.
Cheers!


Add capability of only having Country code

It could be useful if I can have the capability of just getting the country code and for the textfield, I can create one of my own and also handle state on my own

I am no longer developing. You can find the new version here.
https://github.com/jump-sdk/jetpack_compose_country_code_picker_emoji


chore: update deps minor version

Just updating minor versions of dependencies.
Tried updating the dependencies listed in the colors package as well as prettier to 3.0 but both of those broke the build in different ways so skipped that for now.

Why isn't this showing in the package.json?

I ran npm update which updates the dependencies within the bounds set in package.json. so as not to pull in breaking changes etc.

Maybe try this after rebasing?


Adding DeviceInfo custom table

Required items, please complete
Change(s):

Diana and Manny created a custom table JSON file for DeviceInfo

Reason for Change(s):

Added DeviceInfo for another PR that keeps getting errors as it doesn't recognize the table.

Version Updated:

N/A

Testing Completed:

N/A

Checked that the validations are passing and have addressed any issues that are present:

No

Hi @mmelndezlujn, thanks for raising this PR, we will review by 10 Nov 2023.


Add slm language support for templates

Adds support for slm language, based on the https://github.com/slm-lang/vim-slm plugin syntax.

Thanks!


[QUESTION] Cuda graph support for word size > 1

Hi, I noticed that when the enable_cuda_graph flag is set to True, the program halts due to the check of world size > 1 and model parallelism used. What is the reason that cuda graph cannot be used in the model parallel scenario? Thanks

@cyang49, we don't currently support this. @molly-smith, let's add an assert to that users know that we don't support this case.

@cyang49, we don't currently support this. @molly-smith, let's add an assert to that users know that we don't support this case.

@jeffra we already have an assert for this: https://github.com/microsoft/DeepSpeed/blob/3432c740e99cab9e78c67b59ca3c53d49e4b29b7/deepspeed/inference/engine.py#L172

Hi, I saw the code with assertion. Can you say a few words about why? Is it a feature to be implemented or is there some inherent incompatibility for Cuda graph with MP? Thanks


Load testing

Hi everyone! In order to prepare for our demonstration server with the 1kg VCFs I've started to perform some rudimentary single node load testing. Both server and client are in the same region of Microsoft's cloud.
The infrastructure is as follows:
Server (latest source):
Ubuntu 14.04.4 LTS
Apache/2.4.7 (Ubuntu)
Python 2.7.6
MaxKeepAliveRequests 100
KeepAliveTimeout 5
             total       used       free     shared    buffers     cached
Mem:          440G       207G       232G       199G        72M       204G
32 cores of Intel(R) Xeon(R) CPU E5-2698B v3 @ 2.00GHz

Client
Ubuntu 15.10
Python 2.7.10
             total       used       free     shared    buffers     cached
Mem:           55G        10G        44G       336M       150M       9.8G
8 cores of AMD Opteron(tm) Processor 4171 HE

I'm using the locust load testing tool, which spawns individual processes that repeatedly make requests against a few server endpoints. Our load testing suite will be made more complete, but I wanted to share what I've learned so far.
First, Apache must be explicitly told to run the WSGIDaemonProcess with a single thread. When running with the defaults, concurrent requests to the reads API would throw errors like this one:
[Tue Apr 19 21:09:01.459466 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]     for obj, nextPageToken in objectGenerator(request):
[Tue Apr 19 21:09:01.459471 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]   File "/srv/ga4gh/server/newserverenv/lib/python2.7/site-packages/ga4gh-0.2.3.dev4_nge0b07f3-py2.7.e
gg/ga4gh/backend.py", line 520, in readsGenerator
[Tue Apr 19 21:09:01.459484 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]     return self._readsGeneratorSingle(request)
[Tue Apr 19 21:09:01.459489 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]   File "/srv/ga4gh/server/newserverenv/lib/python2.7/site-packages/ga4gh-0.2.3.dev4_nge0b07f3-py2.7.egg/ga4gh/backend.py", line 536, in _readsGeneratorSingle
[Tue Apr 19 21:09:01.459494 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]     request, readGroup, reference)
[Tue Apr 19 21:09:01.459499 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]   File "/srv/ga4gh/server/newserverenv/lib/python2.7/site-packages/ga4gh-0.2.3.dev4_nge0b07f3-py2.7.egg/ga4gh/backend.py", line 157, in __init__
[Tue Apr 19 21:09:01.459514 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]     super(ReadsIntervalIterator, self).__init__(request, parentContainer)
[Tue Apr 19 21:09:01.459519 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]   File "/srv/ga4gh/server/newserverenv/lib/python2.7/site-packages/ga4gh-0.2.3.dev4_nge0b07f3-py2.7.egg/ga4gh/backend.py", line 69, in __init__
[Tue Apr 19 21:09:01.459525 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]     self._initialiseIteration()
[Tue Apr 19 21:09:01.459530 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]   File "/srv/ga4gh/server/newserverenv/lib/python2.7/site-packages/ga4gh-0.2.3.dev4_nge0b07f3-py2.7.egg/ga4gh/backend.py", line 84, in _initialiseIteration
[Tue Apr 19 21:09:01.459535 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]     self._nextObject = next(self._searchIterator, None)
[Tue Apr 19 21:09:01.459548 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]   File "/srv/ga4gh/server/newserverenv/lib/python2.7/site-packages/ga4gh-0.2.3.dev4_nge0b07f3-py2.7.egg/ga4gh/datamodel/reads.py", line 111, in _getReadAlignments
[Tue Apr 19 21:09:01.459553 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]     for readAlignment in readAlignments:
[Tue Apr 19 21:09:01.459558 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392]   File "pysam/calignmentfile.pyx", line 1758, in pysam.calignmentfile.IteratorRowRegion.__next__ (pysam/calignmentfile.c:19488)
[Tue Apr 19 21:09:01.459594 2016] [:error] [pid 9804:tid<PHONE_NUMBER>67392] IOError: truncated file

Note the IOError: truncated file, I believe that pysam attempts to reuse the same filehandle across threads causing .fetch to have unpredictable results. Worst of all, the file can get into an unrecoverable state causing all future requests for data in that BAM to throw a 500.
I was able to reliably reproduce this error with a simpler setup: spawn a few processes each sending a single search/reads request against the ref server running as a WSGI process. When running using the python HTTP server, concurrent requests are queued and handled one at a time and this error will not be reproduced.
I then changed the WSGIDaemonProcess threads to one and set the processes to 10 in the site.conf.
WSGIDaemonProcess processes=10 threads=1

With this setting, load testing could continue, and I was overall very pleased with the results. The load testing framework simulates user action by repeatedly making HTTP requests against a few endpoints. I've simulated 200 users maxing out at around 30 requests/second. At this stage I've performed testing of the endpoints listed below.
Request time summary statistics

Method
Name
# requests
# failures
Median resp time
Avg resp time
Min resp time
Max resp time
Avg content size
Req / s

POST
"/datasets/search"
4254
2
9
14
4
1030
96
0.07

POST
"/features/search"
426379
57
20
26
5
31123
33457
7.04

POST
/featuresets/search"
424892
54
9
14
4
30212
201
7.01

POST
"/readgroupsets/search"
426304
46
260
274
154
29388
6432351
7.03

POST
"/reads/search"
425657
49
47
51
5
26744
163603
7.02

Total

208
38
91
4
31123
1655139
28.18

Worth noting: less than 1% error, average response time appears to scale with the size of the payload, which we expect given we are not performing any real computation at these endpoints. This is great!
As we continue testing I will share more on what is needed to reproduce these results. The locustfile used to generate the swarm is available here.

@david4096, this is just great! This is incredibly useful data, and it's massively encouraging to see the server behaving well under load. I'd love to see more stats on this, and particularly be fascinating to see what happens when we do a distributed swarm (locust looks great by the way, thanks for introducing me!).
Regarding the errors, these look like someone playing with the Swagger front end to me, and not part of the load test. The second one in particular, looks very much like someone sent the default swagger request for searchFeatures (this causes a 500 which is incorrect; I've opened and issue on this in #1135). Is there a client string in these logs? That might help narrow it down.
I'm not sure why the first one resulted in a stack trace; that should be a 400 InvalidJsonException, which  is handled as a normal input error. We should look at our error handling code to make sure we don't pollute the Apache log with this.

@jeromekelleher I believe you are correct, someone was using the swagger docs during the night! Future load tests will be against a private server and performed in a more coordinated fashion across nodes so this kind of confusion won't happen.
I too was very encouraged by our performance without tuning!
I believe we modified the logging code so any exceptions during a request will be logged, not just 500s.

Some follow up questions:

What are the units for the response times?
Do you have more information on the failures section? This should really be zero, I can't think of any good reason for a datasets/search to fail.

Keep the data coming!

All times are in ms.  I think that the failures are due to http requests munging due to overload, though I will let @david4096 postulate on that.  We are currently working on a more complete performance test suite. A more extensive load test will follow once we have that framework in place.

Thanks @kozbo, that sounds good. We should try to build in some more reporting about the nature of these errors. I think we need more information on what's happening here.


kexec fails on Azure virtual machine running Debian 12 Bookworm

Describe the bug
[ 3099.239362] ima: impossible to appraise a kernel image without a file descriptor; try using kexec_file_load syscall.
[ 3895.765035] ima: impossible to appraise a kernel image without a file descriptor; try using kexec_file_load syscall.
kexec_load failed: Permission denied

To Reproduce
Steps to reproduce the behavior:

Use the simplest configuration and run --vm-test that works fine.
Try to ssh with the same config leads to this.

Expected behavior
Should kexec fails, I guess kexec_load_file should be tried ? This is due to IMA subsystem trying to be enforced on Azure machine I believe : https://kernsec.org/pipermail/linux-security-module-archive/2018-October/008951.html

It is due to the machine also being booted with SecureBoot.
System information
Debian Bookworm 12 : Linux dev 6.1.0-10-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-2 (2023-07-27) x86_64 GNU/Linux
Additional context
Specific issue to Azure VMs
A possible workaround may be (source):
To use kexec_file_load() system call, instead of kexec_load(), at kexec
command, '-s' option must be specified. See [2] for a necessary patch for
kexec-tools.

I will try this workaround and open a PR if that fixes it.

I think this is effectively a duplicate of https://github.com/numtide/nixos-anywhere/issues/143?

@phaer I agree

But even trying with kexec -s failed as well due to IMA being enforced.
IMA needs to be disabled on my VM, just so I can kexec.

For future travelers attempting to make nixos-anywhere work with Azure VMs, this might become helpful: https://github.com/tiiuae/ghaf-infra/blob/main/docs/nixos-anywhere.md


Make the number machines to be reserved configurable

Signed-off-by: Yuan Zhou<EMAIL_ADDRESS>

Can one of the admins OK this pull request so I can run a build?

ok to test

Refer to this link for build results (access rights to CI server needed):
http://jenkins.ceph.com//job/teuthology-pull-requests/1404/
Tests passed for this pull request.

I like the idea here. A few small things, though.
One is that the name isn't specific enough; min_to_reserve -> min of what? Maybe reserve_machines or similar would be better.
Another is that, if this were set to a negative number, weird things would happen. There should be some sanity checking, and a value of 0 should disable the feature entirely.
Finally, please include some brief documentation in siteconfig.rst.
Thanks!

Refer to this link for build results (access rights to CI server needed):
http://jenkins.ceph.com//job/teuthology-pull-requests/1427/
Tests passed for this pull request.

@zmc any comments on the new version?

@zhouyuan ah, didn't see the update. This looks great, thanks for making those changes!


Question: How to remap the j and k keys in floating window

Is it possible to remap the j and k keys in the floating window? In telescope, I currently use Ctrl+j to move down and Ctrl+k to move up and would like to keep it consistent, unless this causes issues with oil.nvim. Thoughts?

IMO it's consistent vim-wise. In telescope you could also have j and k working when entering normal mode(Esc). In oil you are in the normal mode by default, so you have the j and k by default.


Authenticating with token

@bigdatasourav can't authentication be made only with access tokens instead of user + password + 2FA ?
https://github.com/turbot/steampipe-plugin-dockerhub/blob/36ddc86a7235b6b4ef66fe53876d3885988ca0f6/dockerhub/utils.go#L57
Ref: https://docs.docker.com/docker-hub/access-tokens/#use-an-access-token

@luisffc personal access token can be used instead of the password in Docker CLI. It's an alternative to the password.
However, the SDK is yet to support it.
For API calls, you need the JWT/Bearer token, which you can get from the login API.
As for the 2FA, it won't break the authentication as once the client is created using the token, we are caching it, and it will work fine. I have tested the scenario.

I see, thanks for expanding on that


Broken link in /knowledge-base/afv1/custom-domain-names/#command-line-tool

file: https://github.com/CenturyLinkCloud/PublicKB/blob/master/AFv1/custom-domain-names.md
link is found under ###Command-ine Tool heading

This looks like it should just link relatively to the markdown file.

b8831995ebea5d65f14d3e848407bbb0faf718e5

Resolved with 6a69dc508d4bb1d1dcbdf238ec783dc821813290 and e8682cfc1199e8b9778aeb5f3ad247a303146831


Expose "required" initializer argument of xmlstream.TLSInitiatingInitializer

Expose "required" initializer argument of xmlstream.TLSInitiatingInitializer through XMPPClient.
Fixes: #28

@juhaz: looking into this, I seem to remember that was more or less intentional. In what circumstances would it be reasonable to have XMPPClient not use TLS?


Possible bug

Hi!
I have found a possible bug. Not sure if I screwed up the markup or not. Please take a look!
Here's the code:
<picture>

     <source data-srcset="http://lorempixel.com/output/nature-q-c-427-407-9.jpg" media="(min-width: 480px)">

</picture>

Images are loaded by an ajax-call after page load and added to the dom.
Whenever the screensize in smaller than 480px they aren't lazyloaded.
Not on resize either. Unless you resize to at least 480px. Then they get loaded like they should.
If I remove the  element it's working. To make things even trickier I have to mention that it's so far it's only Chrome on desktop. Firefox works fine. So it's really an edge case!

Your markup looks good and I couldn't really reproduce it. I'm currently at work will try later.

Just a short question, does it help if you add the following element as first child to your head:
<meta name="viewport" content="width=400, initial-scale=1" />

Or does it help if you have the following markup?
<picture>

     <source srcset="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-srcset="http://lorempixel.com/output/nature-q-c-427-407-9.jpg" media="(min-width: 480px)">

</picture>

Do you use the emulate feature of chrome devtools?

@JonWallsten
Do you have any information on this, did something above help?

Sorry, been a really busy day! I'll report back soon!

I'm using  already btw.

Then please just try this markup:
<picture>

     <source data-srcset="http://lorempixel.com/output/nature-q-c-427-407-9.jpg" media="(min-width: 480px)">

</picture>

And if this doesn't help, the following markup:
<picture>

     <source srcset="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-srcset="http://lorempixel.com/output/nature-q-c-427-407-9.jpg" media="(min-width: 480px)">

</picture>

Back at work! Will try now.

Ok, thank you. Well it is always recommended to add a data uri, but I filed an issue here:
https://code.google.com/p/chromium/issues/detail?id=478153


Jdc sql injection site data field count

This PR fixes a single SQL injection warning in SiteData#field_count
It does this by refactoring field_count to replace
(a) SQL queries composed from string fragments with
(b) complete (uncomposed) AR queries.
(The refactor also fixes an ABC offense.)

@pellaea: Am I messing up performance by doing things this way (uncomposed, single AR query vs composed SQL string).

Thank you for reminding me.  Yes, the site data stuff is very expensive.
It is used by both show_site_stats and show_user.  And since performance
now seems to be completely non-intuitive to me, I would strongly recommend
comparing performance before and after this PR.  On a real DB snapshot, of
course.
On Thu, Jun 30, 2022 at 1:08 PM Joseph D. Cohen @.***>
wrote:

@pellaea https://github.com/pellaea: Am I messing up performance by
doing things this way (uncomposed, single AR query vs composed SQL string).
—
Reply to this email directly, view it on GitHub
https://github.com/MushroomObserver/mushroom-observer/pull/1059#issuecomment-1171473384,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAYTNNNIUHZRPI6U2Q5ZQQTVRXIA3ANCNFSM52KAA3OA
.
You are receiving this because you were mentioned.Message ID:
@.***>


add logger module

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@53d0369). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #4   +/-   ##
=======================================
  Coverage        ?   88.46%
=======================================
  Files           ?        2
  Lines           ?       26
  Branches        ?        0
=======================================
  Hits            ?       23
  Misses          ?        3
  Partials        ?        0

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 53d0369...7427de4. Read the comment docs.