&self vs. &mut self for executors.

A continuation of this thread.
The executor PR diverged from the RFC.
Generally, &mut self would provide more flexibility for implementations. Whether that flexibility is needed or not is TBD.
@aturon says:

Then you can't implement Executor on an Arc<E: Executor>.

This is true, but how common is that? Also, a work around would be taking T: Executor + Clone.
@cramertj  says

I don't think the Executor for Arc<E: Executor> is the critical piece: the important part is that this needs to work somehow:
let local_pool = LocalPool::new();
let local_exec = local_pool.executor();
local_pool.run_until(|f| future
    .and_then(|_| local_exec.spawn_local(some_other_task))
    .and_then(...));

But this doesn't seem related to the mutability of self as local_exec is owned and can be moved into the closure.
Either way, I don't think there is a critical problem, but the reasoning should be clear.

I don't have a strong preference here; &mut seems fine.

@carllerche

But this doesn't seem related to the mutability of self as local_exec is owned and can be moved into the closure.

Indeed-- my point was that, because local_exec has to be owned, it isn't possible to eliminate the Rc<RefCell<_>> underneath, so &mut doesn't give the implementation any more freedom.

I mentioned this on IRC, but I'll post here for the record.
I tried adding an implementation of Executor or the current_thread executor included w/ Tokio. See here.
This implementation takes advantage of &mut self and does not need RefCell, which is nice. If &self is required, it probably could be switched to RefCell or UnsafeCell, but it is kind of nice to not have to :)

I think I'm convinced we should go with &mut self. Originally I had been thinking that with &self we could allow users of executors to decide on the memory management strategy (by applying an Rc/Arc themselves), but in practice I think these are usually baked into the executor anyway.

This is now addressed on the 0.2 branch.


chirpstack: add gateway-id support from uci for sx1302

The gateway_id in uci config for concentratord it's ignored by config builder.
The objective is made possible to configure gateway_id from user config.
I don't know if other methods already exists, but it work for sx1301 and I used the same method
Linked with #10

Little mistake missing "" on gateway_id="$gateway_id"

Thanks!


Improve REPL to use a byte buffer with fgetc() to read line

Fix for #79 with some context from #78:
Introduced a new function readLine() that utilizes the byte buffer together with fgetc() to read input from the STDIN. This enables the REPL to read characters one at a time for validation & in a safer manner where the buffer gets to be resized if it's full.

Wow, thanks for the improvement!


gpg2 does not also install pinentry

If I run nix-env -i gnupg, I get gpg2. Cool. But if I try to generate a key, I soon run into an issue: there is a missing dependency, a program called 'pinentry' which was not installed at all.
This is actually a bit of a known issue of sorts - the gpg2 nix file actually starts with some instructions in comments. Unfortunately, this isn't good enough. It's only visible to people who know where to look, and it shouldn't be necessary to do hack workarounds at all.
Where gpg2 is installed, it should either put pinentry into the $PATH, or configure gpg2 to know where to look in /nix/store. There should be no manual configuration to make this work, just install and go.

Fixed via 5302ae07


Adding single-threaded dict with different interface.

Hey Alex, this looks okay for now so I'm just going to merge it and plug it in. We can iterate on it once it's running.


Add support for udev_monitor_*

libudev exposes functionality around monitoring for device changes that seem to be in libudev-sys, but aren't wrapped in libudev-rs.  Would it be possible to have them added?

@hlieberman Yes, absolutely. This should be added.

@hlieberman I pushed up a commit that adds support for udev_monitor_*: https://github.com/dcuddeback/libudev-rs/commit/430fcb20c18c0acb09a58817aff52ed2606e22ec I'll release it to crates.io later this week after I add some documentation. Please feel free to reopen this issue if there are any issues with the implementation.


Optimize Tiny YoloV2 model by fusing the conv + batchNormalization

Fuse conv + batchNormalization would bring some performance benefit
Convert weights to fp16 for GPU and NPU backends

@huningxin, PTAL, though Tiny Yolo doesn't work on NPU now, this optimization can still bring some benefit for GPU.
I am thinking of adding data type option to support both fp32 and fp16 and disabling the unsupported models for each backend in a follow up.
If this one looks good, please help merge the test-data change at https://github.com/webmachinelearning/webnn-samples/pull/231 firstly.

though Tiny Yolo doesn't work on NPU now

Does it make sense to hide TinyYolo when user select NPU until it is supported?


response,extensions: add useful helpers to Authorization and Extension::List

Add helpers for Authorization to query and extract its contents, and add a helper to Extension::List to easily enable the list_app_keys extension.

Codecov Report

Merging #96 (7e322d0) into master (f5b4d18) will decrease coverage by 0.73%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master      #96      +/-   ##
==========================================
- Coverage   57.25%   56.51%   -0.74%
==========================================
  Files          25       25
  Lines        1530     1550      +20
==========================================
  Hits          876      876
- Misses        654      674      +20

Impacted Files
Coverage Δ

src/extensions/list.rs
0.00% <0.00%> (ø)

src/response.rs
79.50% <0.00%> (-7.87%)
:arrow_down:

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 f5b4d18...7e322d0. Read the comment docs.

bors r+

bors r=@davidor


License

Hi everyone,
thank you very much for this amazing resource!
I was wondering if you were planning to add a license to the repro soon(-ish), outlining
respective usage rights?
Thanks again. Cheers,  Peer

Sorry for the oversight and thanks for bringing this to our attention. I just attached an MIT license: https://github.com/ahwillia/netrep/pull/9


Update dynamic-prices.mdx

Translated German to English

@Gertjezzz thanks for your translation 💚

The title would be better called: "Dynamic Prices"


add SelectionList

Project URL
https://github.com/yonat/SelectionList
Category
Table View / Collection View
Description
Simple single-selection or multiple-selection checklist, based on UITableView.
Why it should be included to awesome-ios (optional)
Checklist

[x] Only one project/change is in this pull request
[x] Has unit tests, integration tests or UI tests
[x] Addition in chronological order (bottom of category)
[x] Supports iOS 9 / tvOS 10 or later
[x] Supports Swift 4 or later
[x] Has a commit from less than 2 years ago
[x] Has a clear README in English

          1 Warning

:warning:
Found 1 link issue, a project collaborator will take care of these, thanks :)

Link issue by awesome_bot

Line
Status
Link

1641
301
https://github.com/necolt/Swifton redirects tohttps://github.com/sauliusgrigaitis/Swifton

  Generated by :no_entry_sign: Danger


Pre-fill suggested package/build names based on POM information

Package names normally used in koji-maven are a concatenation of groupId and artifactId. For most cases, it should be possible to guess this value by reading the topmost POM and grabbing the groupId/artifactId from it.

Folks, sorry for overlooking this, I am monitoring the issues on Jenkins Jira, so please file there in the future under Jenkins-Koji component.


Where it says "IP-based SSL binding", shouldn't that be TLS binding?

Where it says "IP-based SSL binding", shouldn't that be TLS binding?
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4e44d6d0-0592-2a9b-c293-e1c9cbd03358
Version Independent ID: 46809322-79e6-ba2c-c7f9-1f038b603d4c
Content: Prepare for SSL IP address change - Azure App Service
Content Source: articles/app-service/ip-address-change-ssl.md
Service: app-service
GitHub Login: @cephalin
Microsoft Alias: cephalin

@inknochen Thank you for your question.
There are two types of SSL bindings for web apps. SNI and IP based. SNI is the newer standard but only works on newer browsers.
IP based offers two advantages in that it's compatible with a wider range of browsers and provides the web app with a static IP address that provides peace of mind that it will not be changed and cause site availability issues.
The article appears to be using the correct language as pertains to Azure App Services.
We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


[QUESTION]. Upgrading from 2 to 3 using VUE

Prerequisites
Versions

PHP version: 7.2
Laravel version:  5.7
Package version: upgrading from 2 to 3.1

Description
hi,
I'm using the version 2 and use Vue interface to download the files.   To make it possible I'm using ->string(xls), but in the new version I don't found this function. Someone can help me? how can I download files from VUE in 3.1 version?

@juanjoFactoria you need Excel::raw(...) then

Thanks patrick, but testing I found an issue. In documentation shows like function works with only one parameter. But I'm receiving this error:
Too few arguments to function Maatwebsite\Excel\Excel::raw(), 1 passed in /var/www/factic-back/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 223 and exactly 2 expected"
thanks again

You are probably fewing a PWA-cached version of the docs. In the right bottom corner you'll see a "New content is available." modal. Docs shows the correct usage:
$contents = Excel::raw(new InvoicesExport, Excel::XLSX);


Refactor release.sh to apply the same build_release function as other knative projects

Need to source the release.sh under knative/test-infra, so that this repo can release the same way as any other knative repo.

/assign @houshengbo

/assign @k4leung4

/unassign @k4leung4


Range syntax distribution

removed the Range type and uses the range syntax instead.
Yes, picking out single random numbers is slower than before. The subtraction and modulo are done "every" time. Inlining and optimizations should kill them in most cases. Also generating random numbers is some powers slower than the subtract and mod.
benchmarks with PR
test bench::rand_isaac                                    ... bench:       651 ns/iter (+/- 52) = 1228 MB/s
test bench::rand_isaac64                                  ... bench:       358 ns/iter (+/- 24) = 2234 MB/s
test bench::rand_shuffle_100                              ... bench:      1661 ns/iter (+/- 130)
test bench::rand_std                                      ... bench:       379 ns/iter (+/- 14) = 2110 MB/s
test bench::rand_xorshift                                 ... bench:         0 ns/iter (+/- 0) = 800000 MB/s
test distributions::exponential::bench::rand_exp          ... bench:       868 ns/iter (+/- 42) = 921 MB/s
test distributions::gamma::bench::bench_gamma_large_shape ... bench:      2214 ns/iter (+/- 158) = 361 MB/s
test distributions::gamma::bench::bench_gamma_small_shape ... bench:      2421 ns/iter (+/- 41) = 330 MB/s
test distributions::normal::bench::rand_normal            ... bench:       612 ns/iter (+/- 53) = 1307 MB/s
test distributions::range::bench::rand_float              ... bench:       183 ns/iter (+/- 12) = 4371 MB/s
test distributions::range::bench::rand_int                ... bench:       148 ns/iter (+/- 3) = 5405 MB/s

benchmarks w/o PR (but added the same benchmark code)
test bench::rand_isaac                                    ... bench:       635 ns/iter (+/- 42) = 1259 MB/s
test bench::rand_isaac64                                  ... bench:       358 ns/iter (+/- 24) = 2234 MB/s
test bench::rand_shuffle_100                              ... bench:      1661 ns/iter (+/- 131)
test bench::rand_std                                      ... bench:       366 ns/iter (+/- 19) = 2185 MB/s
test bench::rand_xorshift                                 ... bench:         0 ns/iter (+/- 0) = 800000 MB/s
test distributions::exponential::bench::rand_exp          ... bench:       836 ns/iter (+/- 118) = 956 MB/s
test distributions::gamma::bench::bench_gamma_large_shape ... bench:      2166 ns/iter (+/- 149) = 369 MB/s
test distributions::gamma::bench::bench_gamma_small_shape ... bench:      2411 ns/iter (+/- 94) = 331 MB/s
test distributions::normal::bench::rand_normal            ... bench:       609 ns/iter (+/- 51) = 1313 MB/s
test distributions::range::bench::rand_float              ... bench:       183 ns/iter (+/- 15) = 4371 MB/s
test distributions::range::bench::rand_int                ... bench:       150 ns/iter (+/- 6) = 5333 MB/s

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @alexcrichton (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. The way Github handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see CONTRIBUTING.md for more information.

r? @huonw

Hi, @oli-obk, thanks for the PR, it looks great, but I'm not keen on merging it now. I took a similar approach in the design I proposed in https://github.com/rust-lang/rfcs/pull/722, I'd prefer to not do a breaking change here when the intention is to move towards something more like that, that is, do one breaking change instead of two.
Thanks for the PR, though!


Why the CLI after all these years?

It's incredible that Microsoft have still not added GUI publishing support for nuget packages into Visual Studio. I half expected to see something appear in Visual Studio 2019 but alas no. I can use the GUI to edit package details, I can use the GUI to run "pack" but then I must open a command window (which will no doubt require me to enter a bunch of CD commands to get to the right folder, then perhaps edit my "path" setting to ensure I can find nuget.exe) and enter some cryptic command and hope I don't mistype anything.
Why have Microsoft STILL no added this support?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 18071970-cf13-78af-ac1d-9adefefdb693
Version Independent ID: 3bf15a5c-8b3e-0e69-0bf6-03b44654970c
Content: Create and publish a .NET Standard package using Visual Studio on Windows
Content Source: docs/quickstart/create-and-publish-a-package-using-visual-studio.md
Product: nuget
GitHub Login: @karann-msft
Microsoft Alias: karann

Issue moved to NuGet/Home #7975 via ZenHub


Upload NS status when possible.

Before this checkin, ns-loop created the status data, and uploaded it to nightscout (if possible).
But in case of failure, the file will get overwritten.
This means that in the case of no internet, OAPS decisions get lost.
This checkin fixes it by adding timestamps to the files.
When internet is available, the files will be uploaded according to the correct order.
Files older than a day will be deleted.
Testing:
I have prevented uploading of files for a few hours, and when it was enabled again, data was shown correctly in nightscout site.
Decreased timeout, and saw the files being deleted.
Signed-off-by: Tzachi Dar<EMAIL_ADDRESS>

😍 How typical is it currently for the upload skipping to happen? Wondering about the impact on the amount of data sent to Nightscout, as this could impact the NS performance on many levels

I guess that it depends on your network. Our rigs that are at home never miss an upload, and the one that are at school miss a few hours every week.
Probably there are people who don't have internet at day, and connect only at night, and for them there will be some load at night once they connect.
That said, In my experiment, data of a whole day was loaded in 5-10 minutes, and I did not notice any issue with NS.

Please note that I have added another commit to this pr.

Tested and working well.


How to Add all screen Responsive using media Queries

Not able to add all screen Media Queries for fully Responsiveness  for 4k and above screens

/* Extra small devices (phones, less than 576px) */
@media (max-width: 575.98px) {
// Your Css
}
/* Small devices (landscape phones, 576px and up) */
@media (min-width: 576px) and (max-width: 767.98px) {
// Your Css
}
/* Medium devices (tablets, 768px and up) */
@media (min-width: 768px) and (max-width: 991.98px) {
// Your Css
}
/* Large devices (desktops, 992px and up) */
@media (min-width: 992px) and (max-width: 1199.98px) {
// Your Css
}
/* Extra large devices (large desktops, 1200px and up) */
@media (min-width: 1200px) and (max-width: 1599.98px) {
// Your Css
}
/* Extra extra large devices (very large desktops, 1600px and up) */
@media (min-width: 1600px) and (max-width: 1919.98px) {
// Your Css
}
/* Ultra high resolution devices (4K displays, 1920px and up) */
@media (min-width: 1920px) and (max-width: 3839.98px) {
// Your Css
}
/* Ultra high resolution devices (5K displays, 3840px and up) */
@media (min-width: 3840px) {
// Your Css
}


Virus detected in release 0.3.2

As soon as I downloaded the Laser_Level_Webcam_v0.3.2.exe the Windows antivirus flagged it up. The report says Trojan:Win32/Wacatac.H!ml - This program is dangerous and executes commands from an attacker.
The release v0.3.1 has passed antivirus checks but I'm still not comfortable running it.

Yeah it’s getting picked up as a false positive. I also ran it on www.virustotal.com and it thinks it has all kinds of different viruses. Only one of them (ESET-NOD32) correctly identified that it is a Python packaged with Nuitka.
I could submit a false positive bug report to Microsoft by honestly it’s not worth the time because I’ll be making updated to the tool and it’ll probably think it’s now a different kind of virus.
So instead if you don’t want to run the binary (which is understandable when virus software freaks out), You have 2 options.
You can run the tool from python. See “Running from Python source” in the README.md. This means downloading Python version 3.10 specifically and running the pip command to get the dependencies the tool needs.
If you’ve done option 1 and you want to compile the python code yourself as an exe using Nuitka, Run the compile.bat file which will compile the python tool into an exe. Because your own machine has built the exe itself, your computer's signature would likely get past your virus software. A warning for people wanting to build the EXE, you need Python 3.10 not 3.11. You will also want to install the dependencies into a venv. See https://docs.python.org/3/library/venv.html Otherwise Nuitka will very likely pick up other dependencies and bloat the size and compile time of the exe.
You can read up more on the annoyances with trying to make python code easier for others here: https://medium.com/@markhank/how-to-stop-your-python-programs-being-seen-as-malware-bfd7eb407a7
And also a common topic on stack overflow:
https://stackoverflow.com/questions/43777106/program-made-with-pyinstaller-now-seen-as-a-trojan-horse-by-avg
I’ll leave this ticket open in case others run into the same issues and want to know how to run from python or build the exe by themselves.

Same for me, reported as a virus and not even able to download the exe. (0.3.2)
To lazy to compile myself.
Found some suggestions to fix the same problem by encrypting:
https://stackoverflow.com/questions/64788656/exe-file-made-with-pyinstaller-being-reported-as-a-virus-threat-by-windows-defen
Maybe that could work?

Jumping through hoops to make these anti virus tools happy is hopeless. You can override your antivirus to tell it that a specific exe is safe. If you don’t want to do that, I would suggest just running the tool from Python.

@larskarla I added a zip file for 0.3.2 It should allow you to at least download the binary before your antivirus automatically deleting it.

Yes, I like what you have done, but still, I'm running the previous version now, and I haven't suffered from the memory leak yet... How come that version is OK? Isn't it compiled the same way? Same compiler version?

The memory thing is kind of a runaway effect if your computer isn't able to keep up one of the worker threads the QT media components will start offering and it causes a cascading effect where it feel up all your RAM.  This version also because of those issues regardless if it's feeling your rim up or not it uses about four times the cpu power.
I'm going to look at a bug fix someone noted on the tool and merge it in if it's all good. I'll make a new release and that one may or may not show up as a virus.
If this tool gets more popular or if anyone wants to donate funds towards it, I'll go through the headaches and costs of getting signatures from Microsoft so it'll show up as not a virus.

This is no longer an issue because I have put the tool onto pip. Installing it from there is now much easier and It'll add it as a  command line tool that you can run by typing laser-level-webcam


Image Cache race condition

@lgritz I'm hitting another bug as well:
If  a record of the last file read is kept and this file is invalidated if a different file is read, then we may enter a race condition with multiple threads:
Thread A:

ImageCacheImpl::invalidate(filename) will call ImageCacheFile::invalidate() which in turns calls invalidate_spec()  which clears m_subimages. This operation is protected by m_input_mutex.
Set the purge = 1 atomic int  in purge_perthread_microcaches(), actually queueing a purge of the tile pointer on all the per-threads data (meaning thread B included)

Thread B:

Inside ImageCacheImpl::get_pixels, before purge_perthread_microcaches() is called from thread A, so the purge is not actually done by thread B yet (i.e: the tile pointer is not reset)
The tile member on the per-thread data of thread B is in a dirty state: its spec has been invalidated but the pointer is still around
An assertion is triggered right after in get_pixels when entering this line:

https://github.com/OpenImageIO/oiio/blob/master/src/libtexture/imagecache.cpp#L2680
Which in turns calls
https://github.com/OpenImageIO/oiio/blob/master/src/libtexture/imagecache.cpp#L1389
Which leads to this assert being triggered:
https://github.com/OpenImageIO/oiio/blob/master/src/libtexture/imagecache_pvt.h#L265
It is triggered because the spec is invalidated (so m_subimages has been cleared) but the pointer can still be accessed.
It appears to me that there are 2 possible solutions:

Either take a global lock (ruining multi-threading)
Let the last thread using the tile (i.e: when the use_count of the ref counted ptr drops to 1)  call invalidate on the ImageCacheFile instead of doing it immediately whilst others could still be using that tile.

Note that the cache may be empty when entering check_max_mem, because add_tile_to_cache didn't find the tile and thus holds no lock.
Patch for RB-1.5 available at https://raw.githubusercontent.com/MrKepzie/Natron/5ed58e179312130852ca8e7302ded3fffe97b756/tools/MacOSX/ports/graphics/openimageio/files/oiio-1.5.23-checkmaxmem.patch
(easy to transpose to other branches)

This patch fixes potential crash arising from this bug: https://github.com/MrKepzie/Natron/blob/workshop/tools/MacOSX/ports/graphics/openimageio/files/oiio-1.5.23-invalidatespec.patch
It may not "solve" the issue, but at least fixes the crash.
This bug may be reproducible in any application that does the following:
1)- Thread A: Pick a file
2)- Thread A: Install a watcher on the file to get notified from file system modifications (such as removal)
3)- Thread B: Read a file from the OIIO cache
4)- Thread A: Clear the OIIO cache whenever the handler of the notifier gets called
If 3) is still running while 4) happens, the the crash is likely to happen
If

I believed this was fixed by #1696, but we never closed the issue. (N.B. An issue will auto-close upon a PR merge if somewhere in the PR discussion there is the phrase "Fixes #<issue>".)


nvm-windows uses hardcoded urls to download node & npm

In our environment, we have proxy and malware filter enabled for all network traffic outside of our corporate network. So in order to have access to all version of nodejs & npm (which some versions contain binaries blocked by our malware filter), we have local mirrors of those two dist sites.
It would be very nice to have separate settings for nodejs & npm download urls. This way people in strictly managed corporate environments, like us, would be able to use nvm-windows as well.
Would it be possible to include this feature in the upcoming releases of nvm-windows?

Thanks for reporting this. This is something I'll consider supporting in the next version. I'll need a little time to think through the implementation. My biggest concern is distribution.
In your environment, how are you attempting to install NVM for Windows? Would users have local administrative rights? Does the installer get repackaged and deployed (perhaps through an AD environment)? Ultimately, I'll probably just make it all adjustable via the CLI, but I might be able to put an option in the installer to set it up initially.

Hi,
we don't have local admin rights. Usually all the software is auto installed for us centrally. So the option with CLI is more suitable.
I had a look at it and tried to work on fix. I was just enriching settings.xml with two url options, and then having in the code your hardcoded defaults. So users would be able to change it when needed. Could this be sufficient? It should work for us. Haven't tested it yet, but that would be the logic behind.

+1 My organization has similar limitations: no admin rights and we need to make the software available internally. Right now, we are using JFrog Artifactory to redistribute the Node.js MSI. We are using the Scoop package manager to install Node, which gets around the need to have Admin rights. Basically, the only thing we are doing is changing the URL where we retrieve node, but it's the same MSI but it is installed to ~\AppData\Local\scoop\apps\nodejs

@marty-buly & @damnhandy - Do your environments also maintain a list of available releases, or do they mirror the entire node ecosystem? From a usability perspective, I can see people getting frustrated if  running nvm list available doesn't sync with what is truly available.

Yes. We create a full mirror of https://nodejs.org/dist/ so the only thing that would change is prefix. We're using an Artifactory Remote repo that proxies https://nodejs.org/dist/.

To be more specific, I'd very happy if we would do something like the Maven Frontend Plugin and the Gradle Node Plugin, which both allow you to specify a downloadRoot to get the node binaries from. It makes the assumption that the downloadRoot is 100% compatible with the Node.JS distribution site. Both of these plugins work great against our Artifactory instance.

I completely agree with @damnhandy. We have the same setup and usage case.

It's been a long time coming, but thanks to a PR by @lijie371, node mirrors are now in the master branch. I'll close this when the installer has been updated.

Node mirrors are now released in 1.1.1.


How to test your android application’s vulnerability to reverse engineering

Introduction
The cyber security attacks have increased with targeted attacks against android applications. Reverse engineering is a common tactic used by hackers to deconstruct and identify ways in which one can exploit a system. This is done by breaking the code apart, analyzing it, and possibly conducting a repackaging attack by modifying the apk file, including malicious content, signing, and publishing to the public. Worst of all, users often cannot identify the attack as the application’s apk seem identical.
Key takeaways

Understand what reverse engineering is
Identify common tools that the developers can use to test
Understand the repackaging attack methodology
Ways to prevent repackaging attacks.

Article quality
This article will focus on equipping developers to create robust solutions that are not easily exploitable using the repackaging attack. Additionally, it can be used by cyber security researchers in their ethical hacking activities to test android applications against these attacks.

Topic approved @NPKIN1998 This will help improve your profile.


Enhancement: Expose Evolution Numbers & Make These Numbers Sortable

Although the current UI exposes candy numbers, it does not give the user any information about how many of a given species can be evolved. This information is very useful when planning "Lucky Evolutions" (mass evolutions using a Lucky Egg). The UI should be enhanced to provide the user with information. Furthermore, this metric should be included in the set of sortable properties.

I intend to implement this enhancement.


fs.open not a function

When I execute the infoByFilename function i get the error: fs.open is not a function.
I am using it in an angular project and I need the browserify.js to execute the fs=require('fs') dependency.
Any ideas?

WFI was built for NodeJS to read a file on the server, not the browser. However, the approach is fairly simple, so if you can get all of the other dependancies working, you should be able to get it working with a file through the browser.
You might want to try something like this: https://github.com/jvilk/BrowserFS\
Let me know if you have any success.

I manage to make the 'fs' dependency work but now when I do the fs.open() i get the error:
Uncaught Error: ENOENT, no such file or directory '/audios'.
I take the file from a directory called 'audios' inside my project folder

is /audios a web accessible directory?  I'm not sure about how you're doing this or using FS in the browser, so I don't know how much more I can help, unfortunately.

the fs.open() method looks for the file in which directory? Does it look for it in the same directory where the  wfi.js file is located?


1346_avoid_unnecessary_endpoint_calls

Avoid unnecessary calls to some endpoints by :

redirecting empty routes paths to final routes in bot.module, nlp.module, quality.module and test.module
sharing rest queries observables between simultaneous calls in ApplicationService and BotSharedService

tries to dix #1346


About CV: Enable JavaScript for webview (Fixes #18).

This Pull Request enables JavaScript while rendering URLs in flutter_webview. This fixes issue #18 in which JS specific components like hamburger menu and search were not working.

Pull Request Test Coverage Report for Build 361910936

0 of 1 (0.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 51.086%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/ui/views/about/about_view.dart
0
1
0.0%

Totals

Change from base Build 290057509:
0.0%

Covered Lines:
1952

Relevant Lines:
3821

💛  - Coveralls

Search should be using search api endpoint and native view instead of the
web view.
On Fri, 13 Nov, 2020, 10:23 pm Coveralls<EMAIL_ADDRESS>wrote:

Pull Request Test Coverage Report for Build 361910936
https://coveralls.io/builds/34954394

0 of 1 (0.0%) changed or added relevant line in 1 file are
covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 51.086%

Changes Missing Coverage Covered Lines Changed/Added Lines %
lib/ui/views/about/about_view.dart
https://coveralls.io/builds/34954394/source?filename=lib%2Fui%2Fviews%2Fabout%2Fabout_view.dart#L28
0 1 0.0%
Totals [image: Coverage Status] https://coveralls.io/builds/34954394
Change from base Build 290057509 https://coveralls.io/builds/33942957:
0.0%
Covered Lines: 1952
Relevant Lines: 3821
💛 - Coveralls https://coveralls.io
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/CircuitVerse/mobile-app/pull/20#issuecomment-726873525,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAXYAEAWGV66HJZQUQBTLUDSPVP7DANCNFSM4TUX7RHQ
.

@tachyons You mean the links should open outside the app in native browser ?

Adding to what @tachyons said, this whole page/view needs to be written natively and not just a web view.
Search and related stuff may then be done natively.

@Nitish145 Thanks for helping, this is my day 1 of exploring mobile-app. I would require some time to do that. Also I have seen many pages loading from WebView instead of being natively written, Is there any roadmap as such to begin with ?
Also should I close this PR ? since we are now focusing on future implementation of all the WebView pages.

@manjotsidhu the privacy policy and the terms and conditions needs to be written natively AFAIR.
And yes this PR can be closed.


evalue filtering via -e flag. Evalue becomes zero when specified e-value threshold is < 1E-45 for easy-search

Maybe I'm going crazy, but this really does seem like a bug. Perhaps there's something obvious here, but I'm not seeing it.
Expected Behavior
Returning hits with e-values less than specified e-value threshold on the command line when using easy-search.
Current Behavior
e-value threshold becomes zero when specified e-value < 1E-45
mmseqs easy-search da7915829ba14fe0a86c3cc539a89f43.constructs.fa /db/mmseqs/uniprotkb_swiss-prot result.m8 /dev/shm/tmp3343 -e 1E-46
MMseqs Version:                         12.113e3
Substitution matrix                     nucl:nucleotide.out,aa:blosum62.out
Add backtrace                           false
Alignment mode                          3
Allow wrapped scoring                   false
E-value threshold                       0
Seq. id. threshold                      0
Min alignment length                    0

Steps to Reproduce (for bugs)
Run an easy-search. Specift an e-value threshold < 1E-45
MMseqs Output (for bugs)
MMseqs Version:                         12.113e3
Substitution matrix                     nucl:nucleotide.out,aa:blosum62.out
Add backtrace                           false
Alignment mode                          3
Allow wrapped scoring                   false
E-value threshold                       0
Seq. id. threshold                      0
Min alignment length                    0
Seq. id. mode                           0
Alternative alignments                  0
Coverage threshold                      0
Coverage mode                           0
Max sequence length                     65535
Compositional bias                      1
Realign hits                            false
Max reject<PHONE_NUMBER>
Max accept<PHONE_NUMBER>
Include identical seq. id.              false
Preload mode                            0
Pseudo count a                          1
Pseudo count b                          1.5
Score bias                              0
Gap open cost                           nucl:5,aa:11
Gap extension cost                      nucl:2,aa:1
Zdrop                                   40
Threads                                 96
Compressed                              0
Verbosity                               3
Seed substitution matrix                nucl:nucleotide.out,aa:VTML80.out
Sensitivity                             5.7
k-mer length                            0
k-score<PHONE_NUMBER>
Alphabet size                           nucl:5,aa:21
Max results per query                   300
Split database                          0
Split mode                              2
Split memory limit                      0
Diagonal scoring                        true
Exact k-mer matching                    0
Mask residues                           1
Mask lower case residues                0
Minimum diagonal score                  15
Spaced k-mers                           1
Spaced k-mer pattern
Local temporary path
Rescore mode                            0
Remove hits by seq. id. and coverage    false
Sort results                            0
Mask profile                            1
Profile E-value threshold               0.001
Global sequence weighting               false
Allow deletions                         false
Filter MSA                              1
Maximum seq. id. threshold              0.9
Minimum seq. id.                        0
Minimum score per column                -20
Minimum coverage                        0
Select N most diverse seqs              1000
Omit consensus                          false
Min codons in orf                       30
Max codons in length                    32734
Max orf gaps<PHONE_NUMBER>
Contig start mode                       2
Contig end mode                         2
Orf start mode                          1
Forward frames                          1,2,3
Reverse frames                          1,2,3
Translation table                       1
Translate orf                           0
Use all table starts                    false
Offset of numeric ids                   0
Create lookup                           0
Add orf stop                            false
Chain overlapping alignments            0
Merge query                             1
Search type                             0
Search iterations                       1
Start sensitivity                       4
Search steps                            1
Slice search mode                       false
Strand selection                        1
Disk space limit                        0
MPI runner
Force restart with latest tmp           false
Remove temporary files                  true
Alignment format                        0
Format alignment output                 query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits
Database output                         false
Overlap threshold                       0
Database type                           0
Shuffle input database                  true
Createdb mode                           0
Write lookup file                       0
Greedy best hits                        false

Context
Want to identify close homologues in uniprotkb from RCSB. Filtering by e-value seems a reasonable choice.
Your Environment
Installed via a fresh  miniconda env last week.

I think I know what's going on. We read the value as float (instead of double) during command line parameter parsing. I can look into fixing it later. The lowest you should be currently able to specify is about 1e-38.

Should be fixed now. Statically built binaries with the fix will be available at http://mmseqs.com/latest/ in about an hour. We will also make a new release in the next few weeks.

Terrific. Thank you. I'll let you know if things behave accordingly. I suspected it might be single precision float, but the numbers weren't quite lining up. Glad you all were able to pinpoint it and fix it so quickly. Much appreciated.


'Origin authentication failed' when posting to the accounts:register endpoint from Marketplace

Describe the bug
When attempting to register the account after a purchase, on the pop-up window navigating to: https://api.datashare-demo-2.fsi.joonix.net/v1alpha/projects/cds-demo-2/accounts:register receiving: 'Origin authentication failed.' error.

This error is caused by a missmatch between the Marketplace SA JWT aud and the Istio AuthZ policy aud https://github.com/GoogleCloudPlatform/datashare-toolkit/blob/master/api/v1alpha/istio-manifests/1.4/authz/allow-marketplace-service-account-policy.tmpl.yaml#L17


libavif: add pcre2 to fix cross

Description of changes
libavif appears to require pcre2, which it can find (indirectly) through the nativeBuildInputs for native builds.  For cross builds we need to add it explicitly.
Error which this fixed:
-- Found PkgConfig: /nix/store/13a2qvyl3lfcw0i50kfzlry5apjagn9f-aarch64-unknown-linux-gnu-pkg-config-wrapper-0.29.2/bin/aarch64-unknown-linux-gnu-pkg-config (found version
"0.29.2")
-- Checking for one of the modules 'gdk-pixbuf-2.0'
Package libpcre2-8 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libpcre2-8.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libpcre2-8', required by 'glib-2.0', not found
Package libpcre2-8 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libpcre2-8.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libpcre2-8', required by 'glib-2.0', not found
Package libpcre2-8 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libpcre2-8.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libpcre2-8', required by 'glib-2.0', not found
Package libpcre2-8 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libpcre2-8.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libpcre2-8', required by 'glib-2.0', not found

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.

That error occurs in the native build as well, and appears to be caused by harmless missing Requires.private dependencies. The real error is later:
Builder called die: Cannot wrap '/nix/store/vnrgzs1llc6a9a7md9pnmgkzbcgqhy7z-gdk-pixbuf-armv6l-unknown-linux-gnueabihf-2.42.10/bin/gdk-pixbuf-thumbnailer' because it is not an executable file
Backtrace:
7 assertExecutable /nix/store/l27vvihygpnqcbjz34imfjj6dj2jx3bn-make-shell-wrapper-hook/nix-support/setup-hook
43 makeShellWrapper /nix/store/l27vvihygpnqcbjz34imfjj6dj2jx3bn-make-shell-wrapper-hook/nix-support/setup-hook
36 makeWrapper /nix/store/l27vvihygpnqcbjz34imfjj6dj2jx3bn-make-shell-wrapper-hook/nix-support/setup-hook
132 _callImplicitHook /nix/store/ypp192asf7wwb2da0df4v7c9jgd8mf7r-stdenv-linux/setup
144 _eval /nix/store/ypp192asf7wwb2da0df4v7c9jgd8mf7r-stdenv-linux/setup
87 runHook /nix/store/ypp192asf7wwb2da0df4v7c9jgd8mf7r-stdenv-linux/setup
1404 installPhase /nix/store/ypp192asf7wwb2da0df4v7c9jgd8mf7r-stdenv-linux/setup
1596 genericBuild /nix/store/ypp192asf7wwb2da0df4v7c9jgd8mf7r-stdenv-linux/setup
6 main /nix/store/6xg259477c90a229xwmb53pdfkn6ig3g-default-builder.sh

It looks like gdk-pixbuf simply doesn't support thumbnailers when cross-compiling: https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/blob/master/meson.build#L376.
We should probably just disable gdk-pixbuf support in libavif when cross-compiling.

https://github.com/NixOS/nixpkgs/pull/250813


PR keeps failing automerge with this error: unsupported file modified: /dev/null

Hi,
I've been trying to update the logos and social media links for my token but it's been failing with this error
unsupported file modified: /dev/null

Not sure what's issue here? https://github.com/solana-labs/token-list/pull/8130

expected; deletions don't automerge
merged


link in section (3) of README is broken

the link to the monitor_wdl_pipelines.sh in the README is broken

Thanks Sheila. "pipeline" should be singular in the file name: monitor_wdl_pipeline.sh

still broken -- could someone fix this typo please?  thx!

Hi Sheila,
The Broad has taken over the wdl_runner.
We will update docs soon to reference it:
https://github.com/openwdl/wdl/tree/develop/runners/cromwell_on_google

The link has been corrected on the openwdl site with https://github.com/openwdl/wdl/pull/145.


Does not compile

The first code sample is incorrect. This line
protected override void OnListItemClick(ListView l, View v, int position, long id)
does not compile because it has no body.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0a7120d0-7a67-58f6-6932-df0d3f97ba83
Version Independent ID: 2c8aa4f7-d3ec-56f3-5a96-2400d7a1a338
Content: Populating a Xamarin.Android ListView With Data - Xamarin
Content Source: docs/android/user-interface/layouts/list-view/populating.md
Product: xamarin
Technology: xamarin-android
GitHub Login: @conceptdev
Microsoft Alias: crdun

Thanks for the tip @genifycom, looks like that line shouldn't be in the first code block (it is covered further down the page). Removed!


fix: azure vault unseal

This is a fix for #845
Tested and it works but one thing to be VERY careful about is that when you add an external provider for storing unseal secrets, that it will delete the kubernetes secret containing the keys without pushing them to keyvault, so you absolutely need to take a backup of that key before enabling this configuration.
I have included a warning in the field description in the values schema to help people avoid losing their keys (in both Core and API).
Respective PR in API

@staticvoid255 please don't resolve issues others have started and have to approve/agree to

@staticvoid255 please don't resolve issues others have started and have to approve/agree to

I don't know what you mean as I did no such thing, and was myself the creator of the issue. Since you are on sabbatical I went through Jeho for this, so please take it up with him.


Update index.html

Proposed Changes
Please merge this latest html code for index.html
I will be making changes in styles.css and index.js within few minutes.
Consider this as contribution under GSSOC 2022

@YashAryanTheCoder Describe what changes you did and mention your Issue No. here


Memory Leak 1.21

What is your Quests version / build number (do not say "latest")?
5.1.2
5.1.1
5.1.0
5.0.5
5.0.4
Describe the problem and how to replicate it.
Quest Plugin Performance Issue
When generating new chunks, the Quest plugin continuously checks for quest updates via the YAML file. This process results in an endless loop of loading, causing excessive server RAM usage and tick rate overload. Consequently, the server crashes.
The plugin consumes 100% of the server's ticks, RAM, and CPU resources.
I tested multiple server setups, all yielding the same outcome:
RAM configurations: 6 GB, 10 GB, 20 GB, 60 GB
CPU configurations: AMD Ryzen 7 (12 threads), Intel i7 11th Gen (6 threads), AMD Ryzen 9 (24 threads)
Server versions: Purpur 1.21 (builds 2284, 2283, 2282) and Paper 1.21 (builds 130, 129)
These issues seem to occur exclusively on version 1.21, and the presence of other plugins does not affect the outcome. The problem persists even when only the Quest plugin and chunk generation are enabled.
Any console errors to share?
Error Trace:

me.pikamug.quests.BukkitQuestsPlugin.lambda$delayLoadQuestInfo$3()
me.pikamug.quests.storage.implementation.file.BukkitQuestYamlStorage.init()
me.pikamug.quests.storage.implementation.file.BukkitQuestYamlStorage.loadQuest()
Error Description: Java heap out of memory.

If applicable, can you provide an example quest from quests.yml?
No response

Reminds me of #2273

When generating new chunks, the Quest plugin continuously checks for quest updates via the YAML file

How did you come to this conclusion? The delayLoadQuestInfo method from your error is only called once at startup.

Error Description: Java heap out of memory.

This indicates that the server does not have enough heap space. You can assign this for your server using java -Xms<initial heap size> -Xmx<maximum heap size> options.


Add custom score functions

Does not fit in the current architecture with scores stored in the database. If someone wishes to compute scores themselves, they can fetch the data using the API and do own computations.


Purge dictionary packages

These packages were added years ago with the following commit messages:

Passphrase entropy checkign needs a dictionary.
Add in missing dictionary pkg

However, dictionaries-common and miscfiles aren't installed on the dev VM so applications can't need them anymore.
wbritish-small is on the dev VM, but I would be surprised if we still needed it for anything.

Looks fine. Merge away.

Looks like EFG is broken as a result of this:
An Errno::ENOENT occurred in password_expired#update:

  No such file or directory @ rb_sysopen - /usr/share/dict/words
  lib/devise/models/strengthened.rb:15:in `strong_enough_password?'

I've suggested to the EFG team that they follow https://github.com/alphagov/signonotron2/pull/122 as a guide to migrating - I'll see what they come back with.

Sorry :see_no_evil:

On the plus side we can add them to the manifest for that application so we know where the requirement comes from rather than have it more 'free floating'

They've changing the app, no problems :+1:


iamrahulpanchal

Demo Website for Tech Summit Conference.
It displays the list of speakers. It contains sections of FAQ's. It contains the Schedule Page where all the events are listed with the time.
I have read the Code Of Conduct.
I have followed all the steps of submission properly.

Thanks, @iamrahulpanchal, for opening the pull request! 👏
Star ⭐  this project and tweet about your contributions.
Ready to go!!!


test_config unit tests fail for different cluster config files

Background
Three unit tests in test_config.py fail when the cluster config file prod.json doesn't exist.
In my setup, the production cluster is named production.json. The contents of the cluster config are supposed to be mocked in test_config.py, but CLIConfig() will list the actual contents of the conf/clusters directory to retrieve the cluster filenames.
Subsequently CLIConfig attempts to open conf/clusters/production.json and doesn't get the mocked content (or mocked prod cluster name) leading to KeyErrors.
======================================================================
ERROR: CLI - Adding CloudWatch metric alarm, cluster
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched
    return func(*args, **keywargs)
  File "/Users/jeremy/projects/streamalert/tests/unit/stream_alert_cli/test_config.py", line 98, in test_cluster_alarm_creation
    config.add_metric_alarm(alarm_info)
  File "/Users/jeremy/projects/streamalert/stream_alert_cli/config.py", line 366, in add_metric_alarm
    self._add_metric_alarm_per_cluster(alarm_info, metric_function)
  File "/Users/jeremy/projects/streamalert/stream_alert_cli/config.py", line 205, in _add_metric_alarm_per_cluster
    function_config = (self.config['clusters'][cluster]['modules']
KeyError: 'prod'

======================================================================
ERROR: CLI - Metric toggling
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched
    return func(*args, **keywargs)
  File "/Users/jeremy/projects/streamalert/tests/unit/stream_alert_cli/test_config.py", line 62, in test_toggle_metric
    config.toggle_metrics(True, ['prod'], ['alert_processor'])
  File "/Users/jeremy/projects/streamalert/stream_alert_cli/config.py", line 161, in toggle_metrics
    [function]['enable_metrics'] = enabled
KeyError: 'prod'

======================================================================
FAIL: CLI - Aggregate alarm check
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/jeremy/projects/streamalert/tests/unit/stream_alert_cli/test_config.py", line 77, in test_cluster_alarm_exists
    assert_true(result)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 353 tests in 68.910s

FAILED (errors=2, failures=1)

Desired Change
Create a mock filesystem using pyfakefs instead of only mocking out __builtin__.open(), so that os.path.listdir() will return conf/clusters/prod.json.
I'm happy to submit a PR for this.

Hi @stoggi - great catch, thanks for this!! You're welcome to submit a PR if you have a fix in mind (which it sounds like you do). If not, we can try to get a fix in place asap. Just let us know if you decide to work on it!

On Oct 18, 2017, at 9:24 PM, Jeremy Stott<EMAIL_ADDRESS>wrote:
Background
Three unit tests in test_config.py fail when the cluster config file prod.json doesn't exist.
In my setup, the production cluster is named production.json. The contents of the cluster config are supposed to be mocked in test_config.py, but CLIConfig() will list the actual contents of the conf/clusters directory to retrieve the cluster filenames.
Subsequently CLIConfig attempts to open conf/clusters/production.json and doesn't get the mocked content (or mocked prod cluster name) leading to KeyErrors.
======================================================================
ERROR: CLI - Adding CloudWatch metric alarm, cluster
Traceback (most recent call last):
File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched
return func(*args, **keywargs)
File "/Users/jeremy/projects/streamalert/tests/unit/stream_alert_cli/test_config.py", line 98, in test_cluster_alarm_creation
config.add_metric_alarm(alarm_info)
File "/Users/jeremy/projects/streamalert/stream_alert_cli/config.py", line 366, in add_metric_alarm
self._add_metric_alarm_per_cluster(alarm_info, metric_function)
File "/Users/jeremy/projects/streamalert/stream_alert_cli/config.py", line 205, in _add_metric_alarm_per_cluster
function_config = (self.config['clusters'][cluster]['modules']
KeyError: 'prod'
======================================================================
ERROR: CLI - Metric toggling
Traceback (most recent call last):
File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched
return func(*args, **keywargs)
File "/Users/jeremy/projects/streamalert/tests/unit/stream_alert_cli/test_config.py", line 62, in test_toggle_metric
config.toggle_metrics(True, ['prod'], ['alert_processor'])
File "/Users/jeremy/projects/streamalert/stream_alert_cli/config.py", line 161, in toggle_metrics
[function]['enable_metrics'] = enabled
KeyError: 'prod'
======================================================================
FAIL: CLI - Aggregate alarm check
Traceback (most recent call last):
File "/Users/jeremy/.local/share/virtualenvs/streamalert-iKoON-og/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/Users/jeremy/projects/streamalert/tests/unit/stream_alert_cli/test_config.py", line 77, in test_cluster_alarm_exists
assert_true(result)
AssertionError: False is not true

Ran 353 tests in 68.910s
FAILED (errors=2, failures=1)
Desired Change
Create a mock filesystem using pyfakefs instead of only mocking out builtin.open(), so that os.path.listdir() will return conf/clusters/prod.json.
I'm happy to submit a PR for this.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@ryandeivert, yep! I can submit a PR. I've got a working proof of concept with pyfakefs. If you are happy with the new dependency then I'll tidy it up and submit.

The new dependency is fine - just add it to the requirements.txt with a min version. We'll have other uses for pyfakefs anyway 👍


Implementation of FakeGate does not show history graph...

Hi,
I'm trying to add FakeGate to the homebridge-knx plugin. When I check the device in the eve App, I see the graph, but it says "No data available". If I dump the "loggingService" variable, I could see historical data. So not sure what I'm doing wrong here...
Any ideas how to further debug and get this up and running?
Thanks....
Debug Output:
[6/4/2018, 12:51:27 PM] [homebridge-knx.KNX] ** Fakegato-storage AddWriter : Temperatur Wohnzimmer History8
[6/4/2018, 12:51:27 PM] [homebridge-knx.KNX] ** Fakegato-storage read FS file: /home/knx/.homebridge/knx_Temperatur Wohnzimmer History8_persist.json
[6/4/2018, 12:51:27 PM] [homebridge-knx.KNX] ** Fakegato-timer Subscription : Temperatur Wohnzimmer History8
....
[6/4/2018, 12:54:15 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur Wohnzimmer History8 { time:<PHONE_NUMBER>, temp: 26 }  immediate:  false

Dump of loggingService:
FakeGatoHistory {
  displayName: 'Temperatur Wohnzimmer History8 History',
  UUID: 'E863F007-079E-48FF-8F27-9C2605A29F52',
  subtype: 'SUB_dbcb770a-9b2e-4e69-8695-7317969d8a38',
  iid: 21,
  characteristics:
   [ Characteristic {
       displayName: 'Name',
       UUID: '00000023-0000-1000-8000-0026BB765291',
       iid: 22,
       value: 'Temperatur Wohnzimmer History8 History',
       status: null,
       eventOnlyCharacteristic: false,
       props:
        { format: 'string',
          unit: null,
          minValue: null,
          maxValue: null,
          minStep: null,
          perms: [ 'pr' ] },
       subscriptions: 0,
       _events: { change: [Function: bound ] },
       _eventsCount: 1 } ],
  optionalCharacteristics: [],
  isHiddenService: false,
  isPrimaryService: false,
  linkedServices: [],
  size: '365',
  minutes: 10,
  storage: 'fs',
  path: '/home/knx/.homebridge',
  filename: undefined,
  disableTimer: false,
  accessoryName: 'Temperatur Wohnzimmer History8',
  log:
   { [Function: bound ]
     debug: [Function],
     info: [Function],
     warn: [Function],
     error: [Function],
     log: [Function],
     prefix: 'homebridge-knx.KNX' },
  loaded: true,
  accessoryType116: '04 0102 0202 0402 0f03',
  accessoryType117: '0f',
  accessoryType: 'room',
  firstEntry: 0,
  lastEntry: 4,
  history:
   [ 'noValue',
     { time:<PHONE_NUMBER>, setRefTime: 1 },
     { temp: 25.9, time:<PHONE_NUMBER> },
     { temp: 25.94, time:<PHONE_NUMBER> },
     { temp: 26, time:<PHONE_NUMBER> } ],
  memorySize: '365',
  usedMemory: 4,
  currentEntry: 1,
  transfer: false,
  setTime: true,
  refTime: 549800758,
  memoryAddress: 0,
  dataStream: '',
  saving: false,
  service:
   Service {
     displayName: 'Temperatur Wohnzimmer History8 History',
     UUID: 'E863F007-079E-48FF-8F27-9C2605A29F52',
     subtype: 'room',
     iid: 11,
     characteristics:
      [ Characteristic {
          displayName: 'Name',
          UUID: '00000023-0000-1000-8000-0026BB765291',
          iid: 12,
          value: 'Temperatur Wohnzimmer History8 History',
          status: null,
          eventOnlyCharacteristic: false,
          props:
           { format: 'string',
             unit: null,
             minValue: null,
             maxValue: null,
             minStep: null,
             perms: [Object] },
          subscriptions: 0,
          _events: { change: [Function: bound ] },
          _eventsCount: 1 },
        Characteristic {
          displayName: 'S2R1',
          UUID: 'E863F116-079E-48FF-8F27-9C2605A29F52',
          iid: 13,
          value: 'sQQAAAAAAAA2S8UgBAECAgIEAg8DBQBtAQAAAAAAAAAAAQE=',
          status: null,
          eventOnlyCharacteristic: false,
          props:
           { format: 'data',
             unit: null,
             minValue: null,
             maxValue: null,
             minStep: null,
             perms: [Object] },
          subscriptions: 0,
          _events: { change: [Function: bound ] },
          _eventsCount: 1 },
        Characteristic {
          displayName: 'S2R2',
          UUID: 'E863F117-079E-48FF-8F27-9C2605A29F52',
          iid: 14,
          value: 'EwMAAABYAgAADyIKAAAAAAAAAA==',
          status: null,
          eventOnlyCharacteristic: false,
          props:
           { format: 'data',
             unit: null,
             minValue: null,
             maxValue: null,
             minStep: null,
             perms: [Object] },
          subscriptions: 0,
          _events:
           { change: [Function: bound ],
             get: [Function: bound getCurrentS2R2] },
          _eventsCount: 2 },
        Characteristic {
          displayName: 'S2W1',
          UUID: 'E863F11C-079E-48FF-8F27-9C2605A29F52',
          iid: 15,
          value: 'ARQDAAAAAA==',
          status: null,
          eventOnlyCharacteristic: false,
          props:
           { format: 'data',
             unit: null,
             minValue: null,
             maxValue: null,
             minStep: null,
             perms: [Object] },
          subscriptions: 0,
          _events:
           { change: [Function: bound ],
             set: [Function: bound setCurrentS2W1] },
          _eventsCount: 2 },
        Characteristic {
          displayName: 'S2W2',
          UUID: 'E863F121-079E-48FF-8F27-9C2605A29F52',
          iid: 16,
          value: '0k7FIA==',
          status: null,
          eventOnlyCharacteristic: false,
          props:
           { format: 'data',
             unit: null,
             minValue: null,
             maxValue: null,
             minStep: null,
             perms: [Object] },
          subscriptions: 0,
          _events:
           { change: [Function: bound ],
             set: [Function: bound setCurrentS2W2] },
          _eventsCount: 2 } ],
     optionalCharacteristics: [],
     isHiddenService: false,
     isPrimaryService: false,
     linkedServices: [],
     _events:
      { 'service-configurationChange': [Function: bound ],
        'characteristic-change': [Function: bound ] },
     _eventsCount: 2 },
  _events:
   { 'service-configurationChange': [Function: bound ],
     'characteristic-change': [Function: bound ] },
  _eventsCount: 2,
  initialTime:<PHONE_NUMBER> }

To which service type are you attaching fakegato? Eve is very sensitive to services and custom characteristics, not every combinations works. Have a look at others temperature plugins (https://github.com/simont77/fakegato-history/network/dependents).

I'm attaching it to "Current Temperature" for a FakeGato Type "room".
And yes, I already looked into other implementations. When I dump the services to the console it all looks pretty similar. So I'm kind of lost here.
Is there any additional way to debug it? Why does it show the graph in the eve app, but no data?

oh, I see you are already using -D. So you should see fakegato offering data and Eve requesting it. If not, it means that something is wrong. Could you upload the complete log after few entries are added?

Service is "TemperatureSensor".
Data is stored, I see the graph, but it's still empty. If I go to measurements under the graph details it is empty. Even though data is stored in the file and seems to be delivered...
When I kill eve and relaunch it, I can see the following request in the debug:
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Clock adjust Temperatur H13: a0a8c620
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Data request Temperatur H13:<PHONE_NUMBER>0000
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Address requested Temperatur H13: 1
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Data Temperatur H13:<PHONE_NUMBER> 0100 0000 81739ec6200000 0000 00 0000
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 2, Address: 2
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 3, Address: 3
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 4, Address: 4
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 5, Address: 5
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 6, Address: 6
[6/5/2018, 1:16:48 PM] [homebridge-knx.KNX] Data Temperatur H13:  10<PHONE_NUMBER>00000007f60900000000 10 03000000c202000007f60900000000 10 040000001a05000007f60900000000 10<PHONE_NUMBER>07000007ec0900000000 10 06000000ca090000

Here are the relevant debug information from Fakegato:
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] ** Fakegato-storage AddWriter : Temperatur H13
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] Loading...
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] ** Fakegato-storage read FS file: /home/oscar/.homebridge/playground_Temperatur H13_persist.json
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] ** Fakegato-timer Subscription : Temperatur H13
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] Registring Events Temperatur H13
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] Platform Temperatur H13
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] read data from Temperatur H13 : {"firstEntry":0,"lastEntry":2,"usedMemory":2,"refTime":549887603,"initialTime":1528194803,"history":["noValue",{"time":1528194803,"setRefTime":1},{"temp":25.5,"time":1528194803}]}
[6/5/2018, 12:34:29 PM] [homebridge-knx.KNX] History Loaded from Persistant Storage
[6/5/2018, 12:35:09 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:35:10 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:38:06 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:38:42 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:43:59 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:43:59 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:45:09 PM] [homebridge-knx.KNX] **Fakegato-timer: executeCallbacks**
[6/5/2018, 12:45:09 PM] [homebridge-knx.KNX] First entry Temperatur H13: 0
[6/5/2018, 12:45:09 PM] [homebridge-knx.KNX] Last entry Temperatur H13: 3
[6/5/2018, 12:45:09 PM] [homebridge-knx.KNX] Used memory Temperatur H13: 3
[6/5/2018, 12:45:09 PM] [homebridge-knx.KNX] 116 Temperatur H13: c202000000000000739ec62003 0102 0202 030204006d0100000000000000000101
[6/5/2018, 12:45:09 PM] [homebridge-knx.KNX] ** Fakegato-storage write FS file: /home/oscar/.homebridge/playground_Temperatur H13_persist.json "firstEntry":0,"lastEntry":3,"usedMemory":3,"refTime":549887603,"initialTime":15
[6/5/2018, 12:45:09 PM] [homebridge-knx.KNX] **Fakegato-timer: emptyData ** Temperatur H13
[6/5/2018, 12:46:07 PM] [homebridge-knx.KNX] Data request Temperatur H13:<PHONE_NUMBER>0000
[6/5/2018, 12:46:07 PM] [homebridge-knx.KNX] Address requested Temperatur H13: 1
[6/5/2018, 12:46:07 PM] [homebridge-knx.KNX] Data Temperatur H13:<PHONE_NUMBER> 0100 0000 81739ec6200000 0000 00 0000
[6/5/2018, 12:46:07 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 2, Address: 2
[6/5/2018, 12:46:07 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 3, Address: 3
[6/5/2018, 12:46:07 PM] [homebridge-knx.KNX] Data Temperatur H13:  10<PHONE_NUMBER>00000007f60900000000 10 03000000c202000007f60900000000
[6/5/2018, 12:49:52 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:49:52 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.5 }  immediate:  false
[6/5/2018, 12:55:09 PM] [homebridge-knx.KNX] **Fakegato-timer: executeCallbacks**
[6/5/2018, 12:55:09 PM] [homebridge-knx.KNX] First entry Temperatur H13: 0
[6/5/2018, 12:55:09 PM] [homebridge-knx.KNX] Last entry Temperatur H13: 4
[6/5/2018, 12:55:09 PM] [homebridge-knx.KNX] Used memory Temperatur H13: 4
[6/5/2018, 12:55:09 PM] [homebridge-knx.KNX] 116 Temperatur H13: 1a05000000000000739ec62003 0102 0202 030205006d0100000000000000000101
[6/5/2018, 12:55:09 PM] [homebridge-knx.KNX] ** Fakegato-storage write FS file: /home/oscar/.homebridge/playground_Temperatur H13_persist.json "firstEntry":0,"lastEntry":4,"usedMemory":4,"refTime":549887603,"initialTime":15
[6/5/2018, 12:55:09 PM] [homebridge-knx.KNX] **Fakegato-timer: emptyData ** Temperatur H13
[6/5/2018, 12:55:45 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 12:55:45 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 12:58:41 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 12:58:42 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 1:01:38 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 1:01:38 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Clock adjust Temperatur H13: aba5c620
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Data request Temperatur H13:<PHONE_NUMBER>0000
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Address requested Temperatur H13: 1
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Data Temperatur H13:<PHONE_NUMBER> 0100 0000 81739ec6200000 0000 00 0000
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 2, Address: 2
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 3, Address: 3
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Temperatur H13 Entry: 4, Address: 4
[6/5/2018, 1:04:11 PM] [homebridge-knx.KNX] Data Temperatur H13:  10<PHONE_NUMBER>00000007f60900000000 10 03000000c202000007f60900000000 10 040000001a05000007f60900000000
[6/5/2018, 1:04:34 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 1:04:35 PM] [homebridge-knx.KNX] **Fakegato-timer: addData  Temperatur H13 { time:<PHONE_NUMBER>, temp: 25.4 }  immediate:  false
[6/5/2018, 1:05:09 PM] [homebridge-knx.KNX] **Fakegato-timer: executeCallbacks**
[6/5/2018, 1:05:09 PM] [homebridge-knx.KNX] First entry Temperatur H13: 0
[6/5/2018, 1:05:09 PM] [homebridge-knx.KNX] Last entry Temperatur H13: 5
[6/5/2018, 1:05:09 PM] [homebridge-knx.KNX] Used memory Temperatur H13: 5
[6/5/2018, 1:05:09 PM] [homebridge-knx.KNX] 116 Temperatur H13:<PHONE_NUMBER>000000739ec62003 0102 0202 030206006d0100000000000000000101
[6/5/2018, 1:05:09 PM] [homebridge-knx.KNX] ** Fakegato-storage write FS file: /home/oscar/.homebridge/playground_Temperatur H13_persist.json "firstEntry":0,"lastEntry":5,"usedMemory":5,"refTime":549887603,"initialTime":15
[6/5/2018, 1:05:09 PM] [homebridge-knx.KNX] **Fakegato-timer: emptyData ** Temperatur H13

Check if the clock is ok on both iOS and Homebridge machine

Yes, both devices are fine. The Raspberry Pi has ntp running and on the iOS it's set to automatic.
Anything else I can to for debugging?

Communication is ok, so I see two possibilities:
1 - There is a problem with the timestamps. If reference time is "in the future" no data will be shown. Check if also timezone is ok, and check if refTimeStamp is correct (it should the unix epoch). Remove persisted file before.
2 - The combination Service/Characteristics/Type is not ok, but you said you are using a TempSensor service with weather type, so should be ok.

Okay, I finally managed it to work.  Even though you mentioned it in your comments, that was the same for all devices.
I now create a random device serial number and everything works fine.
Thanks again for your help and the great work...
Can't wait to see the eve valve to arrive and (hopefully) been implemented here.


Unique validator run before MACAddress validator

The unique validator causes problems when used with Postgres types such as MACADDR. Select on a table with an invalid MAC Address will cause an error and I see no easy way to force MAC Address validation to run before the unique validator. Is there a way to disable the unique validator? The only workaround I currently see is to avoid using 'unique=True' in the model altogether.

I just bumped in the same issue.
My workaround is to monkey patch the Unique validator from flask-admin to disable it:
from flask_admin.contrib import sqla

# Monkey patch flask-admin Unique validator to disable it
sqla.form.Unique.__call__ = lambda x, y, z: None

I bumped into this as well (though with Ltree values instead).
We ended up making a new field type to convert values between a string type for the form, and the ORM types. I think this is probably the most-idiomatic approach.
In any case, the error messages here are fairly opaque, and at least in our case occurred in a large stack stack trace that was entirely sqla, flask-admin, wtforms, flask, etc. Even if there's no clear fix here, it would be humane to raise a more specific error here--or at least log a warning--so that it's more obvious that this is a user-fixable issue and not just a compatibility issue between modules.
Here's an example stack:
Traceback (most recent call last):
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1997, in __call__
    return self.wsgi_app(environ, start_response)
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "/nix/store/4snngfi163xc94h2cwmvrwm3hmb7m18l-python3.6-flask-restplus-0.10.1/lib/python3.6/site-packages/flask_restplus/api.py", line 557, in error_router
    return original_handler(e)
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/nix/store/4snngfi163xc94h2cwmvrwm3hmb7m18l-python3.6-flask-restplus-0.10.1/lib/python3.6/site-packages/flask_restplus/api.py", line 557, in error_router
    return original_handler(e)
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/nix/store/0cpxr6y9wghj4bmvrgdwa6dk30k36h5d-python3.6-Flask-0.12.2/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/nix/store/bwqr0injyycddpfwxysi801y995ahn8h-python3.6-Flask-Admin-1.5.5/lib/python3.6/site-packages/flask_admin/base.py", line 69, in inner
    return self._run_view(f, *args, **kwargs)
  File "/nix/store/bwqr0injyycddpfwxysi801y995ahn8h-python3.6-Flask-Admin-1.5.5/lib/python3.6/site-packages/flask_admin/base.py", line 368, in _run_view
    return fn(self, *args, **kwargs)
  File "/nix/store/bwqr0injyycddpfwxysi801y995ahn8h-python3.6-Flask-Admin-1.5.5/lib/python3.6/site-packages/flask_admin/model/base.py", line 2086, in create_view
    if self.validate_form(form):
  File "/nix/store/bwqr0injyycddpfwxysi801y995ahn8h-python3.6-Flask-Admin-1.5.5/lib/python3.6/site-packages/flask_admin/model/base.py", line 1382, in validate_form
    return validate_form_on_submit(form)
  File "/nix/store/bwqr0injyycddpfwxysi801y995ahn8h-python3.6-Flask-Admin-1.5.5/lib/python3.6/site-packages/flask_admin/helpers.py", line 72, in validate_form_on_submit
    return is_form_submitted() and form.validate()
  File "/nix/store/zzsri88dahy8gkhxg6cgync60xc9jv5a-python3.6-WTForms-2.2.1/lib/python3.6/site-packages/wtforms/form.py", line 310, in validate
    return super(Form, self).validate(extra)
  File "/nix/store/zzsri88dahy8gkhxg6cgync60xc9jv5a-python3.6-WTForms-2.2.1/lib/python3.6/site-packages/wtforms/form.py", line 152, in validate
    if not field.validate(self, extra):
  File "/nix/store/zzsri88dahy8gkhxg6cgync60xc9jv5a-python3.6-WTForms-2.2.1/lib/python3.6/site-packages/wtforms/fields/core.py", line 206, in validate
    stop_validation = self._run_validation_chain(form, chain)
  File "/nix/store/zzsri88dahy8gkhxg6cgync60xc9jv5a-python3.6-WTForms-2.2.1/lib/python3.6/site-packages/wtforms/fields/core.py", line 226, in _run_validation_chain
    validator(form, self)
  File "/nix/store/bwqr0injyycddpfwxysi801y995ahn8h-python3.6-Flask-Admin-1.5.5/lib/python3.6/site-packages/flask_admin/contrib/sqla/validators.py", line 37, in __call__
    .filter(self.column == field.data)
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3358, in one
    ret = self.one_or_none()
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3327, in one_or_none
    ret = list(self)
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3403, in __iter__
    return self._execute_and_instances(context)
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3428, in _execute_and_instances
    result = conn.execute(querycontext.statement, self._params)
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 984, in execute
    return meth(self, multiparams, params)
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 293, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1103, in _execute_clauseelement
    distilled_params,
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1178, in _execute_context
    e, util.text_type(statement), parameters, None, None
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1482, in _handle_dbapi_exception
    sqlalchemy_exception, with_traceback=exc_info[2], from_=e
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 178, in raise_
    raise exception
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1175, in _execute_context
    context = constructor(dialect, self, conn, *args)
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 834, in _init_compiled
    for key in compiled_params
  File "/nix/store/g3xs0m74n3yl755l17cm838zlr5ca7gj-python3.6-SQLAlchemy-1.3.15/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 834, in <genexpr>
    for key in compiled_params
  File "/nix/store/yakl48d7c2869lg8xabmf43s9vvl4yh9-python3.6-SQLAlchemy-Utils-0.33.6/lib/python3.6/site-packages/sqlalchemy_utils/types/ltree.py", line 68, in process
    return value.path
sqlalchemy.exc.StatementError: (builtins.AttributeError) 'str' object has no attribute 'path'
[SQL: SELECT content.id AS content_id, content.path AS content_path, content.parent_id AS content_parent_id, content.number AS content_number, content.show_num AS content_show_num, content.name AS content_name, content.description AS content_description, content.free_content AS content_free_content, content.topic_id AS content_topic_id, content._discriminator AS content__discriminator, content.purchase_url AS content_purchase_url, content.market AS content_market, content.type AS content_type, content.lb_path AS content_lb_path, content._name_template AS content__name_template, content.media_id AS content_media_id
FROM content
WHERE content.lb_path = %(lb_path_1)s AND content._discriminator IN (%(discriminator_1)s, %(discriminator_2)s)]
[parameters: [immutabledict({})]]


issue with companyName

Hi,
I tried adding a company name in RavePayInitializer(companyName=''), but this doesnt work because your initializer is requiring a Widget.
I think you should change it from  Widget companyName; to String companyName; because of your code here:
var rightStr =_initializer.companyName ?? _initializer.staging ? Strings.demo : '';
var rightText = Text(
    rightStr,
    maxLines: 1,
    style: TextStyle(color: Colors.grey[800], fontSize: 16),
);

As you can see _initializer.companyName is being added to the Text widget already so doesnt need to be cast as a widget.
Meanwhile var rightStr =_initializer.companyName ?? _initializer.staging ? Strings.demo : ''; should have brackets enclosed like this var rightStr =_initializer.companyName ?? (_initializer.staging ? Strings.demo : ''); because its introducing a bug.

Thanks for the heads-up, man. This has been fixed.