solve virtual environment

Thank you for your work and contribution. Following the installation steps in readme, I use the command "mamba env update -- file environment. yml". there were packages that could not be resolved and did not exist when I was solving virtual environment dependencies. May I ask how I should solve it?

Hi @lijinchang-shazhu,
It is the first time I have seen this issue. It is odd, especially because other users already tried this repo. Could you upload more details? (e.g. logs, OS, cuda version on your machine)

Dear author
Thank you for your response and assistance amidst your busy schedule. Thank you very much.
I encountered an issue while trying to set up the environment for the project using the provided environment.yml file. Here are the other detailed information you have requested:

OS Information：Linux 26b4b5c5fd15 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
CUDA Version：NVIDIA-SMI 535.98      Driver Version: 535.98       CUDA Version: 12.2
Conda Version:  conda 23.3.1
**Error Log：Attachment error log. txt ** error_log.txt
（notes：Because I am unable to upload the file in yml format, I have converted it to a txt format file, as shown in the attachment environment.txt ）
my environment.yml : Attachment environment.yml environment.txt

Thank you very much for responding and helping me solve the problem. If you need any further details, or if I should follow any other steps, please let me know.
Best regards,
JinchangLI

Hi @lijinchang-shazhu ,
You have a different CUDA version...In my opinion, the easiest way is to reinstall it manually. You need four main libraries to reproduce the work: 1) pyg with torch for the computing part https://pytorch-geometric.readthedocs.io/en/latest/install/installation.html ;2) wandb for logging;3) submitit for run on slurm server  https://github.com/facebookincubator/submitit; 4) scikit-learn for metrics https://scikit-learn.org/stable/install. I don't expect many code variations for that, but in case, I can help you. After that, we can open a dedicated branch for that! :)

Hi @Bontempogianpaolo1
Thank you for your detailed suggestions and guidance. I appreciate your help.
I will continue to manually reinstall the necessary libraries. This is my plan:
Install PyTorch Geometry using the appropriate version of PyTorch:
I will follow the installation instructions in the official PyTorch Geometry documentation.
Thank you again for your support!
Best regards,
JinchangLi

Dear Author  @Bontempogianpaolo1
Thank you for your help yesterday. I followed your advice and reinstalled versions of CUDA and other important libraries. Thank you again!At the same time,I greatly appreciate your work and the contributions it has made to my research/work. However, Now there's another problem, I'm really sorry to bother you.The problem is like this, as shown in the following text.
I have encountered an issue while running main.py in the project, and I am seeking your guidance to resolve it. The error message I received is as follows:
Traceback (most recent call last):
  File "....../main.py", line 4, in <module>
    from utilsmil4wsi.process import processDataset
  File "....../mil4wsi/utilsmil4wsi/process.py", line 4, in <module>
    from models import selectModel
  File "....../mil4wsi/models/__init__.py", line 9, in <module>
    from models.hipt.hipt import HIPT_LGP_FC
  File "....../mil4wsi/models/hipt/hipt.py", line 6, in <module>
    import vision_transformer as vits
ModuleNotFoundError: No module named 'vision_transformer'

At the same time, I found these two pieces of code in hipt.py,
 sys.path.append('/mnt/beegfs/work/H2020DeciderFicarra/gbontempo/dino')
 sys.path.append('/homes/gbontempo/dasmil-extension')

which I cannot find. This means that any module in this directory cannot be found and imported by the Python interpreter. May I ask if this has caused a problem

It seems that the vision_transformer module is not included in the project directory. In **hipt.py**, I found that importing and using the 'vision_transformer' module as follows:
self.local_vit = **vits**.__dict__["vit_small"](patch_size=384, num_classes=0)

However, due to the missing module, I am unable to proceed. I have attempted to install the timm library and use its vit_small_patch16_384 model, but I am unsure if this aligns with the original design of your project.
Could you please provide more details about the vision_transformer module or suggest a solution to correctly import and utilize this module? Your assistance would be greatly appreciated.
Thank you once again for developing and sharing this excellent project. I look forward to your response.
Best regards,
JinchangLi

hi @lijinchang-shazhu,
HIPT is a hierarchical solution exploiting vits and DINO. Here their implementation here.  You could fix If you download DINO, and export the repository_path( as explained in t2/readme.py) or copy the visionTransformer class in the current repo


Benchmark results website 2.0

Current solution (bad)
The current website with plots of all the benchmarks is a static website generated from a Jinja template by website_regen.py script hosted with GitHub pages on https://enso-org.github.io/engine-benchmark-results/.
This has many disadvantages:

Hard to maintain. Especially with some Javascript code in the HTML template.
The resulting web pages are huge and very slow to load, because they contain all the data inside Javascript embedded in the HTML.
The Google charts JS library used by the template is ugly and difficult to work with and with insufficient documentation.
It is very difficult to add any dynamic behavior like loading data on demand or comparing results of two branches.

Motivation
There are requests for new features in the current website:

Plot also Enterprise edition benchmarks along with Community edition.
Compare results from a custom branch to the results of the develop branch.

Currently handled only by the bench_download.py cmd line script.

Display standard deviation.

It is easier to implement the current features along with the requested ones from scratch using VueJS than to add them to the current template solution.
VueJS proposal
Let's implement a single page application with VueJS and use some more responsive, sophisticated and better documented plotting library, like ChartJS. The data will be fetched from the cache directory in the same repo. We only need some index.json file that maps names of the files to their timestamps. There is no need for any sophisticated backend or a database yet. Just build static single page application with VueJS and host it on GitHub pages. Access to the cache directory in the same repo should be straightforward. The application won't be needed to regenerate on a daily basis, just when new features are added.
A prototype is being developed in https://github.com/enso-org/engine-benchmark-results/tree/vue
Benchmark data upload
The data for the benchmarks are uploaded daily by the Benchmarks Upload GH Action into the directory https://github.com/enso-org/engine-benchmark-results/tree/main/cache as JSON files. Note that this task does not need any change to the data uploading functionality.
Related

https://github.com/enso-org/enso/issues/5714

Priority is high because the results of Oracle GraalVM (Enterprise Edition) benchmarks, implemented on 2024-03-12 in https://github.com/enso-org/enso/pull/9322 are stored only as GH artifacts so far that are dropped after 3 months without any recovery or backup. The initial results are already dropped. Let's make sure they are stored permanently in engine-benchmark-results repo.

Let's finish integration of this new, cool, Vue.js based SPA!

Added three essential tasks to finish this issue.


Swift Package Manager 4 support

Would be great if this could work with SPM4, so that is could be used like so in Package.swift:
// swift-tools-version:4.0

import PackageDescription

let package = Package(
    name: "Test01",
    dependencies: [
        .package(url: "https://github.com/nomothetis/OptionKit.git", from: "1.0.0"),
    ],
    targets: [
        .target(
            name: "Test01",
            dependencies: ["OptionKit"]),
    ]
)

Currently running swift package generate-xcodeproj returns:
error: noManifest(baseURL: "https://github.com/nomothetis/OptionKit", version: Optional("1.0.0"))
error: product dependency 'OptionKit' not found

Here's a link, which i believe helps:
Updating an Existing Package to the Swift 4 Manifest Format
https://swift.org/blog/swift-package-manager-manifest-api-redesign/


MobileMessagingChatImages.car" not found

Hello Team, I followed the instructions mentioned on README.md file and got the following error:
error: Resource "/Users/user/Library/Developer/Xcode/DerivedData/App-hababimzkwlhcoddzzjplphyfkci/Build/Products/Debug-iphonesimulator/MobileMessaging/MobileMessaging.framework/MobileMessagingChatImages.car" not found. Run 'pod install' to update the copy resources script.
Configurations:
package.json:
"react-native": "0.63.4",
"infobip-mobile-messaging-react-native-plugin": "^2.5.2"

Podfile
platform :ios, '10.0'
use_frameworks! :linkage => :static

Hope someone can help in integration to iOS

@riskpp @tjuric Please help me with this.
Thanks!

Hi @phvillegas, MobileMessaging SDK doesn't support static linkage now.
You can try to make following steps:

remove :linkage => :static
comment out flipper in podfile:

  #use_flipper!
  #post_install do |installer|
    #flipper_post_install(installer)
  #end

make pod deintegrate, pod install

Or, if you have dependencies which doesn't support dynamic linkage, you can integrate MobileMessaging plugin manually
BR, Olga

Hi @riskpp, thanks for your answer.
I'm going to manually integrate MobileMessaging plugin.

I close this issue.


mix server errors out with (UndefinedFunctionError) undefined function: Foo.Router.run/0 as of 0.4.4

Full error:
DixonCider:my_website rnorthrup$ mix server
Compiled lib/yellowapple_site.ex
Compiled lib/yellowapple_site/controllers/main.ex
Compiled lib/yellowapple_site/router.ex
Generated yellowapple_site.app
** (UndefinedFunctionError) undefined function: YellowappleSite.Router.run/0
    (yellowapple_site) YellowappleSite.Router.run()
    lib/mix/tasks/server.ex:27: Mix.Tasks.Server.run/1
    (mix) lib/mix/cli.ex:55: Mix.CLI.run_task/2
    (elixir) lib/code.ex:316: Code.require_file/2

This code works fine with Sugar 0.4.3, which indicates (to me at least) that for some reason moving to HttpRouter broke things, and I've yet to figure out why, though my hunch is that there's some confusion about run's arity.  Thoughts on this?

Content of lib/yellowapple_site/router.ex, for reference (doesn't deviate a whole lot from the defaults):
defmodule YellowappleSite.Router do
    use Sugar.Router
    plug Sugar.Plugs.HotCodeReload

    if Sugar.Config.get(:sugar, :show_debugger, false) do
	    plug Plug.Debugger, otp_app: :your_project
    end

    plug Plug.Static, at: "/static", from: :yellowapple_site

    get "/", YellowappleSite.Controllers.Main, :index
end

And here's config/config.exs:
use Mix.Config

config :sugar, router: YellowappleSite.Router

config :sugar, YellowappleSite.Router, https_only: false, https: false, http: [
	port: 4000
]

@YellowApple I'd have to say that the switch to HttpRouter is the cause, but I'm not sure yet why. The run function should be available thanks to the definition in the __before_compile__/1 macro. I'll dig around and try to figure out what's up.

That's what I figure, too; the run function definition in that macro didn't change at all during the switch to HttpRouter (at least according to the commit diffs), so it should work at least as well as it did before (at least at that point).
For what it's worth, the dirty hack of copying run's definition into lib/yellowapple_site/router.ex makes everything work correctly, even with HttpRouter.  So it's definitely something going on with that macro, but why it would suddenly be a problem now is an unanswered question.

Aaaaand ficks'd.
Turns out we just needed to actually use that macro definition in the __using__ macro; shoving @before_compile Sugar.Router after the use HttpRouter, ... clause fixed everything (at least in my simple hello-world-style app).

Nice job! I was driving to work and remembered that the @before_compile line wasn't there anymore, so I'm glad you figured it out as well. :thumbsup:


Replace links to GitHub Pages with Netlify README

The README links to the demo catalog instance in several places, mostly to the schema view. Since the demo moved from GitHub Pages to Netlify (#421), these links needed to be updated.
Ping #422

Thanks @mslw!
Indeed, there's a bunch of other necessary fixes that would make sense to include in this PR too, thanks for linking the new issue.


Rename system admin

link: https://github.com/confio/tgrade/issues/328
Rename SystemAdminAddress:

[x] in genesis files
[ ] in bootstrap files

Codecov Report

Merging #360 (81ee90f) into main (edf38d7) will not change coverage.
The diff coverage is 96.42%.

@@           Coverage Diff           @@
##             main     #360   +/-   ##
=======================================
  Coverage   57.57%   57.57%
=======================================
  Files          73       73
  Lines        5440     5440
=======================================
  Hits         3132     3132
  Misses       1996     1996
  Partials      312      312

Impacted Files
Coverage Δ

x/poe/bootstrap.go
63.80% <96.15%> (ø)

x/poe/types/genesis.go
93.77% <100.00%> (ø)

Very nice. Can you grep for systemadmin ? There are still some places in tests and scripts not renamed

Very nice. Can you grep for systemadmin ? There are still some places in tests and scripts not renamed

forgot 👍 , checking


When doing GET, params don't work as expected

I'd like to do a GET request with params, like:
import { Httpx } from 'https://jslib.k6.io/httpx/0.0.6/index.js';
import http from "k6/http";

const session = new Httpx({ baseURL: 'https://test.k6.io/' })

export default function () {
    session.get('/nonexisting', { responseCallback: http.expectedStatuses(404) })
}

This does not work. It turns out we need an empty body as second argument (unlike http.get):
session.get('/nonexisting', null, { responseCallback: http.expectedStatuses(404) })

The error seems to be here: https://github.com/grafana/k6-jslib-httpx/blob/bf9af24ee1d51de61c8808bd07efd0e76979e5dd/src/httpx.js#L205
The same goes for HEAD requests.

All http methods in httpx library take the same parameters.
While GET and HEAD should not need body, there are APIs out there that require it.


ROSDEP FAILED error

I'm trying to combine the fsd skeleton with fssim to run the simulation ,doing step by step the process and when i run the command (./update_dependencies.sh -f) for the skeleton i get an error (ROSDEP FAILED). I'm using Ubuntu 18.04 and and ROS melodic.

Me,too.Have you sovled it brother?

probably same problem this issue here.
try out the melodic-devel branch.
cheers


New version: Kingston.SSDManager version <IP_ADDRESS>

Checklist for Pull Requests

[x] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.6 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

Custom switches are no longer needed as InstallerType: inno makes WinGet CLI to provide the required command switches (including /VERYSILENT and /NORESTART)

Hi @MaanuelMM,
This manifest adds Apps and Features entries that aren't present in previous PR versions. These entries should be added to the previous versions, or removed from this version.
(Automated response - build 876.)


FirebaseUI AboutLibraries

Hi, I recently came across library AboutLibraries by Mike Penz, you can find it here: https://github.com/mikepenz/AboutLibraries
Some applications need a disclaimer about opensource libraries used in the project and AboutLibraries makes it easy and painless (no endless copying). AboutLibraries provides auto detection.
To provide info from FirebaseUI we just need to insert one strings file to resources that looks like this:
<?xml version="1.0" encoding="utf-8"?>

<resources>
	<string name="define_int_firebaseuiforandroid—storage"></string>
	<!-- Author section -->
	<string name="library_firebaseuiforandroid—storage_author">Google</string>
	<string name="library_firebaseuiforandroid—storage_authorWebsite">https://firebase.google.com</string>
	<!-- Library section -->
	<string name="library_firebaseuiforandroid—storage_libraryName">FirebaseUI for Android — Storage</string>
	<string name="library_firebaseuiforandroid—storage_libraryDescription">UI bindings for Firebase</string>
	<string name="library_firebaseuiforandroid—storage_libraryWebsite">https://github.com/firebase/FirebaseUI-Android/tree/master/storage</string>
	<string name="library_firebaseuiforandroid—storage_libraryVersion">1.1.1</string>
	<!-- OpenSource section -->
	<string name="library_firebaseuiforandroid—storage_isOpenSource">true</string>
	<string name="library_firebaseuiforandroid—storage_repositoryLink">https://github.com/firebase/FirebaseUI-Android/tree/master/storage</string>
	<!-- ClassPath for autoDetect section -->
	<string name="library_firebaseuiforandroid—storage_classPath">com.firebase.ui.storage</string>
	<!-- License section -->
	<string name="library_firebaseuiforandroid—storage_licenseId">apache_2_0</string>
	<!-- Custom variables section -->
</resources>

to database, auth and storage. It can be generated here: http://def-builder.mikepenz.com/
I can submit a PR containing this and change sample application to include overflow menu with About item.
new LibsBuilder()
        //provide a style (optional) (LIGHT, DARK, LIGHT_DARK_TOOLBAR)
        .withActivityStyle(Libs.ActivityStyle.LIGHT_DARK_TOOLBAR)
        //start the activity
        .start(this);

@krisu7 thanks for showing this to us.  I was not previously familiar with this "AboutLibraries" repository.  I think for right now this is something better left to individual developers and not made part of the core library, since this is the first request we've had.  If we get more requests of this type I'd be happy to reconsider.
Also I went through the wizard and generated strings you can use (although yours look fine too!):
<?xml version="1.0" encoding="utf-8"?>

<resources>
	<string name="define_firebaseui_android"></string>
	<!-- Author section -->
	<string name="library_firebaseui_android_author">Google, Inc</string>
	<string name="library_firebaseui_android_authorWebsite">https://firebase.google.com</string>
	<!-- Library section -->
	<string name="library_firebaseui_android_libraryName">FirebaseUI-Android</string>
	<string name="library_firebaseui_android_libraryDescription">UI bindings for Firebase</string>
	<string name="library_firebaseui_android_libraryWebsite">https://firebase.google.com/docs</string>
	<string name="library_firebaseui_android_libraryVersion">1.1.1</string>
	<!-- OpenSource section -->
	<string name="library_firebaseui_android_isOpenSource">true</string>
	<string name="library_firebaseui_android_repositoryLink">https://github.com/firebase/firebaseui-android</string>
	<!-- ClassPath for autoDetect section -->
	<string name="library_firebaseui_android_classPath">com.firebase.ui</string>
	<!-- License section -->
	<string name="library_firebaseui_android_licenseId">apache_2_0</string>
	<!-- Custom variables section -->
</resources>

@krisu7 I've been using https://github.com/yshrsmz/LicenseAdapter which works quite well for me.

@samtstern Thanks for the string resources
@SUPERCILEX Thanks for the suggestion, it looks nice

+1 for AboutLibraries config file to be included in this project.
@samtstern Thanks again for the string resources. However I think it is important to note that many people disregard the OSS licence requirements, and the easier each project makes it to include valid licencing, the better.
The nice thing in AboutLibraries is that by including that xml file in your repo, Mike Penz's project will automatically include your library in the list without further developer intervention.


Schedule for example daily restarts

Hello,
i'm missing the ability for daily restarts. Even better would be a schedule to perform actions like restarts, backups (as requestes in another issue) or custom commands every X minutes/hours/days.
Let me know what you think. ;)

This would be useful for keeping SRCDS servers up to date as well. Nothing more frustrating than having your client update while the server is out of date.

This is definitely a highly requested feature at this point. I don't know exactly when this will make it in but it is for sure something we will implement.

Working on it for a 0.8.x release hopefully. :)


threedd to mc3d-structure and add tin-antimony-sulfoiodide profile

As mentioned by Nicola, we need to remove threedd and only use mc3d-structure.

Do you want to group the mc2d-structure DB as well while you're at it?

Hi Capser, thanks for looking at this. But it is confused to me that the materials cloud tools are also servered through dokku? I guess this repository is the leftover one?


fix(check-net): remove println call in network strategy

:tada: This PR is included in version 1.4.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


explain all 4 data pieces you will need to configure

also projects are called jobs in jenkins

Jenkins refers uses 'Project' in some cases. Like 'Delete Project'. But people refer to it as jobs. Like multijob plugin. So i guess it is fine and it is better than it was! Cheers :+1:


[SE-0381] discardResults becomes [Throwing]DiscardingTaskGroup

According to SE review, we are introducing a new type after all for this functionality.
This updates the proposal to reflect this, along with more discussion about the implicit error handling.

Discussed with @DougGregor earlier that we can amend and keep this review going 👍


scrollable: add static_content

Sometimes it's useful to use Scrollable to perform scroll calculations without having the content inside actually be transformed. For example, you might have a custom widget that uses the scroll offsets to draw its own graphics with non-standard scroll behaviour. I'm working on a spreadsheet program that has idiosyncratic scrolling behaviour, and I previously used QAbstractScrollArea in Qt for this purpose. This PR enables similar behaviour in iced's Scrollable with minimal changes.

I don't see why the translation needs to be undone. "Normal" widgets draw things manually with fill_quad too.
If your widget has certain bounds, then it can render things where they should be in its virtual boundaries and everything should work as expected.

Thanks — I'll look into this and report back.


Pretrained model

Hi, can you release the pre-trained model of MobileNetV2?

Sorry, we don't have a plan to release pre-trained model for MobileNetV2.

Sorry, we don't have a plan to release pre-trained model for MobileNetV2.

I close this issue, sorry we cannot help you.


Dark mode: Icon size consistency

Please, have a look at issue I raised.
Made some cosmetic changes as well.
Issue: #113
@arncv Please have a look.

Thank you for contributing! Merging🚀


Starting v2022.11.15 release for the IDEA and CLion plugin

Please comment with any significant changes that you want to be mentioned in the release changelog.

#4003
#4019


add init boot script for portus

This script has been used in the appliance. However, we need this same
script for setting up some test scenarios with default vaules

LGTM


field headers and values nodes; polycurves instead of nurbs

Added nodes to get values from fields using the dbfReader obj;
Polycurves are created instead of NURBs;
for multipoints/multilinestrings/multipolygons the curves are kept grouped
Check for duplicate points when creating curves

@sanzoghenzo thanks for looking into it and enhancing it with dbfReader. I appreciate your contribution, please keep it up.

I hope I fixed all the issues you commented!

@sanzoghenzo thanks again. I'll merge it and fix the double dispose issue and then update the package.


Use pip to install mkdocs for base conda build env

Addresses #2975
Currently, mkdocs is not available in the default conda channel (anaconda). It is available in the conda-forge channel.
There are two possible ways to add mkdocs into the core conda build environment:

conda install -c conda-forge mkdocs which if done I would recommend installing all the core conda packages from conda-forge

Alternatively, install mkdocs into the core conda build environment using pip.

I've gone ahead and created a PR for the second approach since it does not add additional code just moves the mkdocs package from one list to another.

Thanks @agjohnson.


8455 - SL_ERR_FRESH_CRED_REQUIRED_BY_SERVER

Hi ... nice tool :-)
Tried this on standard W10 install ... works well.
But on enterprise environment (AD managed and configured) I get following error :
8455 - SL_ERR_FRESH_CRED_REQUIRED_BY_SERVER
Quick check:
https://docs.microsoft.com/en-us/windows/win32/termserv/imstscaxevents-ondisconnected
"The server authentication policy does not allow connection requests using saved credentials. The user must enter new credentials"
I tried to disable GPO using procedures similar to this:
http://woshub.com/fix-saved-rdp-credentials-windows/
No success ...
Since password is provided in command line I'm not sure why "saved credential?" issue pops-up.
Possible BUG ?
Just FYI ... normal RDP works fine,so creds and connections are OK ...

There could be a configuration I didn't account for, I'll need to look into this and get back to you.

Any more insights into this error? Running into the same thing

can help troubleshoot if you're interested


Home UI redesign

fixes #233
Changes
Desktop

Mobile

Please let me know if any changes are required

@jayesh2474, @jain-anshika Please have a look

@dipanshparmar
the new home page looks great!
Thank you for you contribution


Indeterminate progress doesn't work correctly on older API versions

in api 16 new horizontal indeterminate dialog doesn't show the progress bar, just title and content are visible.

I've confirmed this bug.

I've confirmed myself physically via a Galaxy S2 API 16.
Also a user sent me a screenshot where this failed on a Galaxy S4 mini API 19 (which prompted my investigation)

I've narrowed it down, but after spending the last few hours through the source, I have to move on.  Hope what I've found helps:

using the default layout md_dialog_progress_indeterminate_horizontal in a custom view works (make sure you pass false to wrap w/in scroll view).  Snippet:
        MaterialDialog dialog = new MaterialDialog.Builder(v.getContext())
                .customView(R.layout.md_dialog_progress_indeterminate_horizontal, false)
                .build();

        dialog.show();

I modified md_stub_progress_indeterminate_horizontal, and changed ProgressBar so that  minHeight was 20dp and layout_height was 20dp.  This did not solve the issue.  It appears that MDRootLayout is not respecting those heights; or the content height is not correct

I also modified MDRootLayout of md_dialog_progress_indeterminate_horizontal to have a layout_height of 200dp, and this didn't work either.

I can't say if it is Ssung specific, but certainly could be the case.  Indeterminate horizontal works fine on the following:

N7, N6, Moto G 2nd gen all running Lollipop 21 and 22

I also found this which might help:
https://github.com/DreaminginCodeZH/MaterialProgressBar/issues/1
My workaround for now is to use a MD customView with the DreaminginCodeZ/MaterialProgressBar library...which of course is not nice, but unfortunately I'm in a sprint and don't have the time -- mainly needed a workaround for the end user complaint.
Thanks and let me know if I can run anything else.

@javaguy44

Sorry for the delay.
Thanks for the library @javaguy44, since that library is relatively light weight, I think I'll be integrating it into the library. It's definitely a good solution for backwards compatibility.

Actually, nevermind, that library only supports API 14 and above.

Should be fixed for Android 4.0+ in the upcoming release.

https://github.com/afollestad/material-dialogs/releases/tag/<IP_ADDRESS>

Great stuff.  Sorry I couldn't be of more help, but glad that library helped.
Best and thanks for an awesome libray

Hi, I'm the author of MaterialProgressBar, and I'm glad that my library helped.
I've just updated my library this afternoon to provide a simple widget MaterialProgressBar which saves the boilerplate java code for setting the progress drawable, please feel free to integrate it.
Detailed usage can be found in the updated README.

Hey, Thanks for great library, I will integrate soon.
On Wed, Sep 23, 2015 at 10:43 AM, Zhang Hai<EMAIL_ADDRESS>wrote:

Hi, I'm the author of MaterialProgressBar
https://github.com/DreaminginCodeZH/MaterialProgressBar, and I'm glad
that my library helped.
I've just updated my library this afternoon to provide a simple widget
MaterialProgressBar which saves the boilerplate java code for setting the
progress drawable, please feel free to integrate it.
Detailed usage can be found in the updated README
https://github.com/DreaminginCodeZH/MaterialProgressBar#using-widget.
—
Reply to this email directly or view it on GitHub
https://github.com/afollestad/material-dialogs/issues/636#issuecomment-142517174
.

@dreamingincodezh thanks, I'll definitely use that and include credits ☺

@AshkanImmortal his library is already being used, he just made it easier to use it


Slot swap with several instances, not all instances are correctly swapped.

Hi,
I've encountered a strange behavior when i perform slot swap.
The app service is hosted on ASE V2, on Isolated I1 with 2 instances.
The production slot and the preview slot has system assigned managed identity, where only production slot has access to cosmos db.
After a swap, I've encountered that 1 of the instances dont have access to cosmos DB in production slot.
And the error message is:
Response status code does not indicate success: Forbidden (403); Substatus: 5301; ActivityId: f11c0fb6-3be5-4e94-a3a9-775d05bc64f7; Reason: (Request blocked by Auth "databasename" : Request is blocked because principal [principalId of preview slot managed identity ] does not have required RBAC permissions to perform action [Microsoft.DocumentDB/databaseAccounts/readMetadata] on resource [/].
The other instance are correctly swapped and has access.
This is not always happening, but I've encountered it several times.

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

ID: f6e09089-1ae2-8943-5ce2-9d48f458c81f
Version Independent ID: ba780cba-f604-b0a4-a81a-23c7d2384762
Content: Set up staging environments - Azure App Service
Content Source: articles/app-service/deploy-staging-slots.md
Service: app-service
GitHub Login: @cephalin
Microsoft Alias: cephalin

@knuterik91 Thanks for reaching here! Could you please double check on if following Swap operation steps correctly.
Just to highlight below steps:

If auto swap is enabled with custom warm-up, trigger Application Initiation by making an HTTP request to the application root ("/") on each instance of the source slot.

If applicationInitialization isn't specified, trigger an HTTP request to the application root of the source slot on each instance.
If an instance returns any HTTP response, it's considered to be warmed up.

If all instances on the source slot are warmed up successfully, swap the two slots by switching the routing rules for the two slots. After this step, the target slot (for example, the production slot) has the app that's previously warmed up in the source slot.

Also, please see: Which settings are swapped?

@SnehaAgrawal-MSFT Thanks for feedback.
We have not implemented any custom warm up and we're not using auto swap.
Since both production slot and preview slot have their own system assigned identity.
where the production slot system assigned identity has access to cosmos db, but preview slot system assigned identity does not.
And the error message comes from production slot, and saying that the system assigned identity dont have access, and the principal id match preview slot's system assigned identity.
Could it be some internal msi token cache issue or is token cache cleared during swap ?


build: fix node-publish workflow

Linked to BOM-2160
Description:
Node Release Workflow wasn't working as expected and this got uncovered after we published a new version on github. This PR fixes the node release workflow

Closed in favor of PR


EncryptedEmailField() Not Compatible With Allauth Custom User Model

This github project's EncryptedEmailField() is not compatible with allauth for encrypting an email during the allauth custom user model sign up process from my website's form. When I create a user from the command line or admin, this github project works perfectly. But when trying to create a user from the allauth sign up form, it gives me this error message:
Error:
django.core.exceptions.FieldError: EncryptedEmailField 'iexact' does not support lookups
I have the following custom user model:
from fernet_fields import EncryptedEmailField

class CustomUserManager(BaseUserManager):
	def _create_user(self, email, password,is_staff, is_superuser, **extra_fields):
		now = timezone.now()
		if not email:
			raise ValueError('The given email must be set')
		email = self.normalize_email(email)
		user = self.model(email=email,is_staff=is_staff, is_active=True,is_superuser=is_superuser, last_login=now,**extra_fields)
		user.set_password(password)
		user.save(using=self._db)
		return user
	def create_user(self, email, password=None, **extra_fields):
		return self._create_user(email, password, False, False,**extra_fields)
	def create_superuser(self, email, password, **extra_fields):
		return self._create_user(email, password, True, True,**extra_fields)

class CustomUser(AbstractBaseUser, PermissionsMixin):
	objects = CustomUserManager()
	email = EncryptedEmailField()
	identifier = models.CharField(unique=True, max_length=50, default=uuid.uuid1)
	username = models.CharField(_('username'), max_length=30, blank=True, default='', unique=True)
	USERNAME_FIELD = 'username'
	first_name = models.CharField(_('first name'), max_length=30, blank=True)
	last_name = models.CharField(_('last name'), max_length=30, blank=True)
	is_staff = models.BooleanField(_('staff status'), default=False,
    	help_text=_('Designates whether the user can log into this admin '
                	'site.'))
	is_mod = models.BooleanField(_('moderator status'), default=False,
    	help_text=_('Designates whether the user can access mod pages and do mod things.'))
	is_active = models.BooleanField(_('active'), default=True,
    	help_text=_('Designates whether this user should be treated as '
                	'active. Unselect this instead of deleting accounts.'))
	EMAIL_FIELD = 'email'
	REQUIRED_FIELDS = ['email']

Allauth files interfering with this:
https://github.com/pennersr/django-allauth/blob/master/allauth/utils.py#L145
https://github.com/pennersr/django-allauth/blob/master/allauth/account/forms.py#L336
https://github.com/pennersr/django-allauth/blob/master/allauth/account/adapter.py#L300
The main reason I want to do this is to protect myself from PII violations. Since allauth is probably the most popular django authentication package, I think this should be a required fix.
More details:
https://www.reddit.com/r/djangolearning/comments/fm7cnt/custom_user_model_encrypt_email/
I also created this same issue on the allauth github project page.

The reason this doesnt work (and wont be fixable) is that allauth requires to query the email field for lookups.
You cannot query an encrypted field. Nor index it.
btw, under GDPR you dont have to encrypt email data.


Add --help to ProgramOptions

By default, -h or --help should print the help.

Done, although output is ugly for positional options.


Clean up of Save and move error handling to handlers

Altered Save to be more idiomatic. Moved error handling and logging to their respective HTTP handlers.

Thanks for the PR!


fix(versions): update Activiti/example-runtime-bundle versions into master

UpdateBot pushed maven dependency: org.activiti.cloud.rb:activiti-cloud-runtime-bundle-dependencies to: 7.1.181

UpdateBot commands:
updatebot push-version --kind maven org.activiti.cloud.rb:activiti-cloud-runtime-bundle-dependencies 7.1.181


Add mariner

Implements one approach to adding Mariner vulnerability feed, see https://github.com/anchore/grype/issues/1220.
Wanted to get some feedback on a couple of things:

This uses xsdata, a new dependency, to generate dataclasses representing the OVAL XML found in the repo
This uses lxml's element tree and XPath's to pull apart the XML before handing it off to xsdata for parsing
1 and 2 are a new pattern, implemented independently of the OVAL definition work
1 and 2 have a bit of a hack between them, namely that, in order to get item by item handling out of xsdata, we repeatedly parse partial documents, so there's a bit of redundant serialization/deserialization going on.

There are also some things that are probably missing:

The update strategy - in this draft PR, the downloader just always runs. We need to figure out a better strategy there.
The XML we observe over at https://github.com/microsoft/CBL-MarinerVulnerabilityData is narrower than the OVAL XML specification allows. (For example, every criteria node seems to have AND as its operator.) We might need to talk about future proofing. The current revisions future proofing is basically done by parsing the XML one CVE at a time and logging failures.
The config object for the new provider is basically copy/pasted; more configuration might be needed than this implements.

The update strategy - in this draft PR, the downloader just always runs. We need to figure out a better strategy there.

Definitely think this can be a future PR thing - current PR looks good and it's fine for now that it always runs

The XML we observe over at https://github.com/microsoft/CBL-MarinerVulnerabilityData is narrower than the OVAL XML specification allows. (For example, every criteria node seems to have AND as its operator.) We might need to talk about future proofing. The current revisions future proofing is basically done by parsing the XML one CVE at a time and logging failures.

Nothing to add beyond what was discussed

This uses xsdata, a new dependency, to generate dataclasses representing the OVAL XML found in the repo

Nice change and really appreciated the FAQ!
Whole PR is LGTM - I don't have significant comments to add that would halt this or change the discussion from earlier comments. My biggest concern might be the update strategy, but that's more of a wait and see if it needs any more fine tuning beyond always running.


Unable to see Camera V 1.1.143

On the status page (both windows 10 app and windows native exe) i see the Camera Line, but no link for "view feed"  I know the camera works because i can navigate to http://IP:8080/?action=stream and get the feed just fine.
Printer firmware is v1.2.1
Note, i haven't used an earlier version of this app, so i dont know if this is a regression or not.
I've seen this every time i've used the app (when i've submitted a gcode file through the app, as well as just connecting to the printer after i've submitted it via flashprint (and then disconnected from flash print so i could open this app)

Thanks for providing a detailed report. Looks like the app is getting stuck figuring out if the printer has a camera or not.
I’m looking into reproducing it here. In the meantime the printer looks for a camera by making a request to http://:8080, would you mind confirming that on your printer this gives a webpage.
Thanks

Thanks for providing a detailed report. Looks like the app is getting stuck figuring out if the printer has a camera or not.
I’m looking into reproducing it here. In the meantime the printer looks for a camera by making a request to http://:8080, would you mind confirming that on your printer this gives a webpage.
Thanks

Hi Andy, thanks for the quick reply.   I can confirm my printer does not respond on that port 8080 unless i add ?action=stream  (makes me wonder if there are other URLs it does respond to)    I don't get a 404, 403 or anything, it just sits there waiting for a reply and eventually times out.  (Perhaps this changed on this firmware version?)  I just got the printer at Christmas and first thing I did was update it so I can't say if it ever did respond before.

Hi Andy, thanks for the quick reply.   I can confirm my printer does not respond on that port 8080 unless i add ?action=stream  (makes me wonder if there are other URLs it does respond to)    I don't get a 404, 403 or anything, it just sits there waiting for a reply and eventually times out.  (Perhaps this changed on this firmware version?)  I just got the printer at Christmas and first thing I did was update it so I can't say if it ever did respond before.

Ah, that's good to know, can you try it with '/?action=snapshot' to get a still image because the app can easily check that.

Ah, that's good to know, can you try it with '/?action=snapshot' to get a still image because the app can easily check that.

just tried (and a few other variations like =image, =still, =jpeg, =capture with no luck.  same thing where it just spins until a timeout.  I have tried various guess on this before because i was trying to find how to get stills but couldn't figure it out.   unfortunately the traffic to/from polarcloud is encrypted so I haven't been able to sniff it on wireshark either as they do grab stills from the device (delayed significantly though so maybe they are grabbing a short video burst i dont know and decoding?)  Anyhow no luck there.

just tried (and a few other variations like =image, =still, =jpeg, =capture with no luck.  same thing where it just spins until a timeout.  I have tried various guess on this before because i was trying to find how to get stills but couldn't figure it out.   unfortunately the traffic to/from polarcloud is encrypted so I haven't been able to sniff it on wireshark either as they do grab stills from the device (delayed significantly though so maybe they are grabbing a short video burst i dont know and decoding?)  Anyhow no luck there.

Sounds like they've changed something in the firmware. According to the webpage I got on mine it supports /?action=snapshot and ?action=stream. If stream works, I can update the app to use that and send over a pre-release build for you to test.

Sounds like they've changed something in the firmware. According to the webpage I got on mine it supports /?action=snapshot and ?action=stream. If stream works, I can update the app to use that and send over a pre-release build for you to test.

I'd be happy to try that

I'd be happy to try that

Hi Andy, this worked  kindof.  When i wasn't printing i could see the feed.  I sent a GX file through the app,  (that i prepared with flashprint) and when back to status and clicked View feed.  i had a second of feed, then it disconnected (while my view through firefox stayed running)  Back on status page then it said it wasn't able to connect to the feed with a link to "view help"  I disconnected and reconnected a few times and now i can see the feed again and it looks good.   Perhaps adding a refresh button next to the Camera line in case of temporary glitches like this.. (maybe your program already auto refreshes on an interval? if so, there isn't any visual indication this is happening so i did the disconnect and reconnect method on my end which may have not been necessary)
All in all, this is awesome!  Thanks for tweaking for me so quick on this.
It seems if i return the the status page, and then go back to the camera feed a few seconds later i get the very short burst of video (maybe only 5 frames) and then error.    This time i disconnected and reconnected 5 times before it came back with "view feed"      This behavior is repeatable.   I dont know if the app is having troubles with the multiple concurrent attempts to access the same steaming url (once for the check and again for the actual viewing?)
It seems that after some amount of time (60 seconds maybe?) i am able to reconnect.
I refreshed my browser version of this URL while the app wasn't connecting and i got an immediate "connection was reset" error so i believe the streaming server is rejecting connections as it probably has a limited number that it will support concurrently.  (Wish they had that =snapshot option on this firmware/hardware revision)
So this being said, i think, if you get a successful stream connection to where you can provide the "view feed" link, perhaps you can have it automatically view the feed and have it to the right of all the status data so you can see both at the same time?  THis would be awesome (i understand that not everyone would want that so maybe a checkbox to enable/disable auto view feed)  I personally like having the feed AND the data at the same time.
Sorry for the novel

Hi Andy, this worked  kindof.  When i wasn't printing i could see the feed.  I sent a GX file through the app,  (that i prepared with flashprint) and when back to status and clicked View feed.  i had a second of feed, then it disconnected (while my view through firefox stayed running)  Back on status page then it said it wasn't able to connect to the feed with a link to "view help"  I disconnected and reconnected a few times and now i can see the feed again and it looks good.   Perhaps adding a refresh button next to the Camera line in case of temporary glitches like this.. (maybe your program already auto refreshes on an interval? if so, there isn't any visual indication this is happening so i did the disconnect and reconnect method on my end which may have not been necessary)
All in all, this is awesome!  Thanks for tweaking for me so quick on this.
It seems if i return the the status page, and then go back to the camera feed a few seconds later i get the very short burst of video (maybe only 5 frames) and then error.    This time i disconnected and reconnected 5 times before it came back with "view feed"      This behavior is repeatable.   I dont know if the app is having troubles with the multiple concurrent attempts to access the same steaming url (once for the check and again for the actual viewing?)
It seems that after some amount of time (60 seconds maybe?) i am able to reconnect.
I refreshed my browser version of this URL while the app wasn't connecting and i got an immediate "connection was reset" error so i believe the streaming server is rejecting connections as it probably has a limited number that it will support concurrently.  (Wish they had that =snapshot option on this firmware/hardware revision)
So this being said, i think, if you get a successful stream connection to where you can provide the "view feed" link, perhaps you can have it automatically view the feed and have it to the right of all the status data so you can see both at the same time?  THis would be awesome (i understand that not everyone would want that so maybe a checkbox to enable/disable auto view feed)  I personally like having the feed AND the data at the same time.
Sorry for the novel

Okay so update.  I've done some more testing.
If i close the app (native windows exe) and reopen it, reconnect to printer, it seems to work (3 times in a row successful) but as soon as i leave the feed to go to status, and then come back, it get a few frames then disconnected with difficultly reconnecting.  (closing the exe and re-launching seems to fix)
Looking in resource monitor, when edge is connected to the feed or firefox, i only see one connection to the printer on port 8080 for the stream.  With Adventure Client, when i switch to status, and then try to return, it opens a new TCP connection when i still see the old one active in Resource monitor (bandwidth still chomping away)  so my deduction is that when you are leaving the feed, the existing TCP connection isn't being closed and its trying to open a new one from the same PID (different local tcp port) and for whatever reason the streaming server doesn't like that.
When i close the application the bandwidth usage immediately stops (so those TCP connections are killed) and i'm able to reconnect to the feed first try.  Hope that helps.

Okay so update.  I've done some more testing.
If i close the app (native windows exe) and reopen it, reconnect to printer, it seems to work (3 times in a row successful) but as soon as i leave the feed to go to status, and then come back, it get a few frames then disconnected with difficultly reconnecting.  (closing the exe and re-launching seems to fix)
Looking in resource monitor, when edge is connected to the feed or firefox, i only see one connection to the printer on port 8080 for the stream.  With Adventure Client, when i switch to status, and then try to return, it opens a new TCP connection when i still see the old one active in Resource monitor (bandwidth still chomping away)  so my deduction is that when you are leaving the feed, the existing TCP connection isn't being closed and its trying to open a new one from the same PID (different local tcp port) and for whatever reason the streaming server doesn't like that.
When i close the application the bandwidth usage immediately stops (so those TCP connections are killed) and i'm able to reconnect to the feed first try.  Hope that helps.

Firstly – huge thanks for taking the time to research this so thoroughly, this is really useful for getting to the bottom of this.
The app refreshes the connection on the status page every 5 seconds an M119, M115, and M115 down the connection to the printer on port 8899 to get the print stats. It then makes a web request to the printer on port 8080 to test if the camera is enabled.
While you’re viewing the feed, this refresh is stopped and replaced by a check every 5 seconds to check if the camera is still available (because is the camera is in auto mode and the print finishes, the camera will turn off).
In theory, it’s now testing the camera by connecting to the stream, waiting for the first byte then aborting the connection. From your investigation, it seems that isn’t working as expected and its overwhelming the printer.
I’ll take a second look and see what I missed.
RE: Showing the feed on the main page – The more I think of it, the more it makes sense to show the feed alongside the other data – something I’ll give some thought to once we’ve made it work reliably for you :)

Firstly – huge thanks for taking the time to research this so thoroughly, this is really useful for getting to the bottom of this.
The app refreshes the connection on the status page every 5 seconds an M119, M115, and M115 down the connection to the printer on port 8899 to get the print stats. It then makes a web request to the printer on port 8080 to test if the camera is enabled.
While you’re viewing the feed, this refresh is stopped and replaced by a check every 5 seconds to check if the camera is still available (because is the camera is in auto mode and the print finishes, the camera will turn off).
In theory, it’s now testing the camera by connecting to the stream, waiting for the first byte then aborting the connection. From your investigation, it seems that isn’t working as expected and its overwhelming the printer.
I’ll take a second look and see what I missed.
RE: Showing the feed on the main page – The more I think of it, the more it makes sense to show the feed alongside the other data – something I’ll give some thought to once we’ve made it work reliably for you :)

From what i can tell, once i've opened the feed, it starts pulling data and if i return to status it keeps pulling the data (based on monitoring bandwidth and resource monitor and wireshark) and the stream is still coming in.  THen trying to open another and it dies.  Note i have had the printer running a couple simultaneous streams no problem (browser and VLC on phone at the same time)
I'm happy to try any tweaks out as you have time to make them.  Thanks again!

From what i can tell, once i've opened the feed, it starts pulling data and if i return to status it keeps pulling the data (based on monitoring bandwidth and resource monitor and wireshark) and the stream is still coming in.  THen trying to open another and it dies.  Note i have had the printer running a couple simultaneous streams no problem (browser and VLC on phone at the same time)
I'm happy to try any tweaks out as you have time to make them.  Thanks again!

Okay, this was adventure.
On the older printer firmware versions, the camera server was powered by an open source project that doesn’t seem to have received much love in a while. My guess is that the newer firmware versions have moved to something else, which is why only the stream link works now. In both cases, it seems to be streaming an MJPEG which has pretty patchy support in the browsers.
You’re right about the view feed page leaving connections open, so I think there’s a couple of things going on here:
1 - The feed page is checking the camera stream every second to see if it is enabled, which may be stressing the printer server a little.
2 – The open connections are probably acuminating and we’re hitting a TCP connection limit in Chromium.
I’ve made a few changes to be gentler on the printer in the hope that helps:

The connection is now properly closed when leaving the feed page (in resource monitor you should see one black connection to the printer open the whole time and one intermittent connection to port 8080 for the check. It will show some old greyed out ones for a while, but these are okay as they’re released)
The camera enabled check is slowed down to ever 5 seconds (I tried to use events off the img element to check the status of the actual stream, rather than using a second connection. But I hit an issue where Chromium does not raise events in the same way as Firefox for MJPEG streams, so wasn’t able to)
The app will now wait longer before giving up on a connection.

An updated build is here if you want to give it a go: https://github.com/andycb/AdventurerClientJS/releases/tag/v1.2.108-bu

Okay, this was adventure.
On the older printer firmware versions, the camera server was powered by an open source project that doesn’t seem to have received much love in a while. My guess is that the newer firmware versions have moved to something else, which is why only the stream link works now. In both cases, it seems to be streaming an MJPEG which has pretty patchy support in the browsers.
You’re right about the view feed page leaving connections open, so I think there’s a couple of things going on here:
1 - The feed page is checking the camera stream every second to see if it is enabled, which may be stressing the printer server a little.
2 – The open connections are probably acuminating and we’re hitting a TCP connection limit in Chromium.
I’ve made a few changes to be gentler on the printer in the hope that helps:

The connection is now properly closed when leaving the feed page (in resource monitor you should see one black connection to the printer open the whole time and one intermittent connection to port 8080 for the check. It will show some old greyed out ones for a while, but these are okay as they’re released)
The camera enabled check is slowed down to ever 5 seconds (I tried to use events off the img element to check the status of the actual stream, rather than using a second connection. But I hit an issue where Chromium does not raise events in the same way as Firefox for MJPEG streams, so wasn’t able to)
The app will now wait longer before giving up on a connection.

An updated build is here if you want to give it a go: https://github.com/andycb/AdventurerClientJS/releases/tag/v1.2.108-bu

Hey Andy,
So i've tested this again (confirming build 1.2.108, 64 bit windows exe not store app) and when leaving the feed page, the bandwidth doesn't drop, nor does the connection switch in resource monitor to grey.  I clicked view feed a second time, and the bandwidth usage doubled and then stopped showing video (but connections remained)
If i disconnect from the printer it doesn't help.

Hey Andy,
So i've tested this again (confirming build 1.2.108, 64 bit windows exe not store app) and when leaving the feed page, the bandwidth doesn't drop, nor does the connection switch in resource monitor to grey.  I clicked view feed a second time, and the bandwidth usage doubled and then stopped showing video (but connections remained)
If i disconnect from the printer it doesn't help.

With some joy I just managed to reproduce this - seems like it might be intermittent, I had to keep going forwards and backwards a few times.... I'll continue investigating

With some joy I just managed to reproduce this - seems like it might be intermittent, I had to keep going forwards and backwards a few times.... I'll continue investigating

Well now that is working super slick!  (1.2.109)  Video comes up right away and closes properly. I haven't been able to mess it up.
Thanks Andy!!  (Now to just have this and the status data on the same screen at the same time.  Do you want me to put in a issue for you to track this as an enhancement?)

Well now that is working super slick!  (1.2.109)  Video comes up right away and closes properly. I haven't been able to mess it up.
Thanks Andy!!  (Now to just have this and the status data on the same screen at the same time.  Do you want me to put in a issue for you to track this as an enhancement?)

Fantastic! Got there in the end. That’s for your patience testing it. I’ll fix a couple of the ither issues before I push out though the store. I generally like to call out contributors (code, time, suggestions), would you be okay being called out in the release notes / about page?
Yes, please open an issue for that enhancement.

Fantastic! Got there in the end. That’s for your patience testing it. I’ll fix a couple of the ither issues before I push out though the store. I generally like to call out contributors (code, time, suggestions), would you be okay being called out in the release notes / about page?
Yes, please open an issue for that enhancement.

I don't mind, but also not necessary!  Thanks for fixing it, super pumped!

I don't mind, but also not necessary!  Thanks for fixing it, super pumped!


Implement protections against sybil attacks

At some point we may want to implement some scheme to make sybil attacks against Portal Network more difficult or costly. For  example without any protections there is nothing preventing a malicious actor from spinning up many portal nodes each with a unique ENR and spamming the network with bad offers. If they send offers that fall within the radius of other nodes, these nodes will use resources to accept, download, validate and then reject the data.
We should implement a range of protections to reduce the impact and protect against attacks like this, such as adding misbehaving nodes to a temporary ban list and limiting the number of concurrent offers that will be accepted from each node. Some portal client may already implement some or all of these protections but even so it is easy to get around these protections by spinning up more nodes with unique ENRs because each new ENR will not be in any ban lists.
In order to make it harder and more costly to create new ENRs/nodes perhaps we could consider using some form of 'proof of work' like scheme that would require some computational puzzle to be completed when creating a new ENR. A modify version of Kademlia called 'S/Kademlia' does just this.  It could be used to make it more difficult to create a large number of malicious nodes. Once having something like that in place, you can start to add restrictions or limits per ENR/nodeID which are assumed to be difficult to generate.
The scheme is described here:

https://telematics.tm.kit.edu/publications/Files/267/SKademlia_slides_2007.pdf
https://www.giulianomega.com/post/2023-07-24-secure-kademlia/

Perhaps we should also consider using a modern memory hard hash function such as Argon2 instead of sha256 when hashing public keys in order to prevent GPUs and ASICs from bypassing the protections. I'm not sure if the ENR spec allows this, requires more investigation.

cc @pipermerriam


Problem for project with newer Docker client

What version of Go (go version) and dep (git describe --tags) are you using?
Go: 1.8.3
dep: v0.3.0-132-g2097d86
Issue
I have a project that uses a new version of the Golang Docker client (17.06).  I realize Docker is in a state of flux with the move to the moby/moby Github repo and the docker/docker-ce repo and dep does not seem to handle this well.
If you create a simple project with one main.go file with the following content and run dep init -v it will run forever following all of the Docker client versions.  Is there a way to get it to just use the 17.06.0-ce version from the repo?
package main

import (
	"github.com/docker/docker-ce/components/engine/client"
)

func main() {
	client.NewClient("unix:///var/run/docker.sock", "", nil, nil)
}

I tried this and it only took less than 2m on my machine and network.
Does dep init -v actually keep running for ever? Or it just takes a long time? Could you please share the full output of dep init -v?


on Jscholarship metadata page, if the embargo checkbox is checked, Embargo enddate is a required field.

OTherwise, it is not

There's an example on how to do interdependent field validation here in the alpaca docs

For this issue, I will also address moving the title and journal titles out of NIH and on to the COMMON schema.

verified on rev #d3c7797f


Make descriptions even more clear

A persistent problem with our documentation is that it fails to clarify the thing it describes. For instance, here are some fields for "hyponym":

short definition: "a word that is more specific than a given word"
long definition: "A relation between two concepts where concept B is a type of concept A."
Examples:

beef hyponym meat
pear hyponym edible fruit
dictionary hyponym wordbook

The short definition isn't so bad, but the long definition depends on the understanding that "A" is meant to be the hyponym, not "B". Also, the short definition says that a hyponym is a word while the long definition says it is a relation between concepts. We should clarify these to be consistent such that hyponym is the concept and hyponymy is the relation. Then the examples are terrible because it's often confused whether that short form means "beef is a hyponym of meat" (correct) or "beef has hyponym meat" (incorrect).
I propose the following template:

short definition: "a concept that is more specific than a given concept"
long definition: "Concept A is a hyponym of a given concept B when A is a subtype of B
long definition (alternative): "Hyponymy is a relation between concepts where A is a hyponym of B when A is a subtype of B.
Examples:

beef is a hyponym of meat
pear is a hyponym of edible fruit
dictionary is a hyponym of wordbook

I think the examples read more fluidly in the "A is a (relation) of B" form than "B has (relation) A" and it better matches the patterns in the definition.
Thoughts, anyone?

I agree that this is a good template, and I am very ok with using "A is a
(relation) of B".
On Mon, Oct 5, 2020 at 9:23 AM Michael Wayne Goodman <
<EMAIL_ADDRESS>wrote:

A persistent problem with our documentation is that it fails to clarify
the thing it describes. For instance, here are some fields for "hyponym":

short definition: "a word that is more specific than a given word"
long definition: "A relation between two concepts where concept B is
a type of concept A."
Examples:

beef hyponym meat
pear hyponym edible fruit
dictionary hyponym wordbook

The short definition isn't so bad, but the long definition depends on the
understanding that "A" is meant to be the hyponym, not "B". Also, the short
definition says that a hyponym is a word while the long definition says it
is a relation between concepts. We should clarify these to be consistent
such that hyponym is the concept and hyponymy is the relation. Then
the examples are terrible because it's often confused whether that short
form means "beef is a hyponym of meat" (correct) or "beef has
hyponym meat" (incorrect).
I propose the following template:

short definition: "a concept that is more specific than a given
concept"
long definition: "Concept A is a hyponym of a given concept B
when A is a subtype of B
long definition (alternative): "Hyponymy is a relation between
concepts where A is a hyponym of B when A is a subtype of B.
Examples:

beef is a hyponym of meat
pear is a hyponym of edible fruit
dictionary is a hyponym of wordbook

I think the examples read more fluidly in the "A is a (relation) of B"
form than "B has (relation) A" and it better matches the patterns in the
definition.
Thoughts, anyone?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/globalwordnet/gwadoc/issues/39, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIPZRRGOEB3FW444REEVSTSJEN2FANCNFSM4SECLMRQ
.

--
Francis Bond http://www3.ntu.edu.sg/home/fcbond/
Division of Linguistics and Multilingual Studies
Nanyang Technological University

Good :smiley:
Do you have a preference of the alternatives for the long definition? That is, whether the description maintains the focus on the concept or on the relation itself?

I think that the descriptions should focus on the relation rather than the
concept here.
On Tue, Oct 6, 2020 at 8:30 PM Michael Wayne Goodman <
<EMAIL_ADDRESS>wrote:

Good 😃
Do you have a preference of the alternatives for the long definition? That
is, whether the description maintains the focus on the concept or on the
relation itself?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/globalwordnet/gwadoc/issues/39#issuecomment-704235799,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIPZRVW45F5RYU3LQJLB33SJMEXHANCNFSM4SECLMRQ
.

--
Francis Bond http://www3.ntu.edu.sg/home/fcbond/
Division of Linguistics and Multilingual Studies
Nanyang Technological University

In that case I think the short definition should be adjusted to match. Perhaps, "When a concept is more specific than some given concept"

That makes sense.
On Tue, Oct 6, 2020 at 11:34 PM Michael Wayne Goodman <
<EMAIL_ADDRESS>wrote:

In that case I think the short definition should be adjusted to match.
Perhaps, "When a concept is more specific than some given concept"
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/globalwordnet/gwadoc/issues/39#issuecomment-704355188,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIPZRTELVTHQ6UCLWQF4I3SJM2GPANCNFSM4SECLMRQ
.

--
Francis Bond http://www3.ntu.edu.sg/home/fcbond/
Division of Linguistics and Multilingual Studies
Nanyang Technological University

@gconnect @yoyo-go Can you both take note of the above discussion when working on the relations documentation? In particular:

For short and long definitions, change "word" to "concept" and rephrase them to focus on the relation.
For short definitions, it's probably as simple as putting "When" at the beginning and adjusting for grammaticality. E.g.:

"a word that is more specific than a given word" -> "when a concept is more specific than some given concept"

But some may require more work. E.g.:

"an occurrence of something" -> "when a concept is an instance of some given concept"

For long definitions, try to make the direction of the relation explicit. E.g.:

"A relation between two concepts where concept B is a type of concept A." -> "Hyponymy is a relation between concepts where A is a hyponym of B when A is a subtype of B."

For examples, try to use the "(A) is a (relation) of (B)" when it fits. When it doesn't (e.g., 'see also'), we could find a precise way of stating the same thing (e.g., "(A) is in a see-also relation with (B)"), or propose a more natural alternative (e.g., "(A); see also (B)").

Alright. I will take note of that. Thanks for the clarification.
On Wed, 7 Oct 2020, 08:16 Michael Wayne Goodman<EMAIL_ADDRESS>wrote:

@gconnect https://github.com/gconnect @yoyo-go
https://github.com/yoyo-go Can you both take note of the above
discussion when working on the relations documentation? In particular:

For short and long definitions, change "word" to "concept" and
rephrase them to focus on the relation.
For short definitions, it's probably as simple as putting "When" at
the beginning and adjusting for grammaticality. E.g.:

"a word that is more specific than a given word" -> "when a concept
is more specific than some given concept"

But some may require more work. E.g.:

"an occurrence of something" -> "when a concept is an instance of
some given concept"

For long definitions, try to make the direction of the relation
explicit. E.g.:

"A relation between two concepts where concept B is a type of
concept A." -> "Hyponymy is a relation between concepts where A is a
hyponym of B when A is a subtype of B."

For examples, try to use the "(A) is a (relation) of (B)" when it
fits. When it doesn't (e.g., 'see also'), we could find a precise way of
stating the same thing (e.g., "(A) is in a see-also relation with (B)"), or
propose a more natural alternative (e.g., "(A); see also (B)").
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/globalwordnet/gwadoc/issues/39#issuecomment-704745115,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AFPXA4B3SKXD3WIHGRJ6FXDSJQIULANCNFSM4SECLMRQ
.

@gconnect @yoyo-go Can you both take note of the above discussion when working on the relations documentation? In particular:

For short and long definitions, change "word" to "concept" and rephrase them to focus on the relation.
For short definitions, it's probably as simple as putting "When" at the beginning and adjusting for grammaticality. E.g.:

"a word that is more specific than a given word" -> "when a concept is more specific than some given concept"

But some may require more work. E.g.:

"an occurrence of something" -> "when a concept is an instance of some given concept"

For long definitions, try to make the direction of the relation explicit. E.g.:

"A relation between two concepts where concept B is a type of concept A." -> "Hyponymy is a relation between concepts where A is a hyponym of B when A is a subtype of B."

For examples, try to use the "(A) is a (relation) of (B)" when it fits. When it doesn't (e.g., 'see also'), we could find a precise way of stating the same thing (e.g., "(A) is in a see-also relation with (B)"), or propose a more natural alternative (e.g., "(A); see also (B)").

Thanks for that suggestion, I have revised the Domain relation groups and submitted the commit per your latest request.

@gconnect when you are checking this, can you also make sure the relations with tests in EWN are linked to the correct test, and link to the actual page (see what I did with attribute).

Alright. I will check what you did in Attribute and follow suit

I checked Attribute relations but can't seem to find what you did to link the correct test to the actual page.

Hi,
the short definitions are still not very harmonious.
You can easily seem the all from the new summary page (created as follows):
python build.py --lang en --object summary html > docs/summary.en.html
I think I would like to change the suggested template to something like:

"one concept is more general than another concept"

so that it can be read as a definition

a hypernym relation holds when "one concept is more general than another concept"

Note that umbrella terms like 'constitutive' may not follow this template and instance hypernymy is special, I have adjusted their definitions.

This is what I did for attribute:
pdf/EWN_general.pdf#page=24
The '#page=24' links to the page.  You can find the example in the doc_en.py file.

Okay, I will check it again


[BUG] Boring-registry upload concatenates file name with extension

I noticed when I upload to GCS via boring-registry upload command, the resulted archive file contains:
boring-registryhcl
maintf
Notice the missing dot from filenames.
After fetching the module the filenames are still wrong.
Expectations:
boring-registry.hcl
main.tf
I was executing "boring-registry upload --flags... ." from current folder, once I cd-d back to parent folder I could execute the command with folder name and seems working.

Hi @tszebeni-asml! Thanks for your bug report. Just to clarify, for the following directory structure:
.
└── modules/
    └── example-module/
        ├── main.tf
        └── boring-registry.hcl

you performed:
$ cd modules/example-module
$ boring-registry upload --flags... .

which did not work.
But the following worked?
$ cd modules
$ boring-registry upload --flags... ./example-module

I will try to reproduce it when I have some free time :)

Hi @oliviermichaelis ,
Yes I did as you mention.


Composer Issue with PHP8

Apologies if this is the wrong place. I am having issues installing your package using composer with PHP 8.0.3
  Problem 1
    - winzou/state-machine[0.4.1, ..., v0.4.x-dev] require php ^7.1.3 -> your php version (8.0.3) does not satisfy that requirement.
    - Root composer.json requires winzou/state-machine ^0.4.1 -> satisfiable by winzou/state-machine[0.4.1, v0.4.x-dev].

Hi,
That's weird, the latest version (0.4.1) also accepts PHP version 8.0: https://packagist.org/packages/winzou/state-machine#0.4.1

Yes, super strange. I got to the point of spinning up both a new local docker and a digital ocean droplet and both of those instances throw the same error.

This is interesting. I'm getting the same error, but when I look at what's in my vendor folder winzou\state-machine\composer.json it's not a match for the file on your latest release
    "require": {
        "php":                         "^7.1.3",
        "symfony/event-dispatcher":    "~4.3|~5.0",

@winzou  - This issue is persisting, perhaps tagging a new release will trigger an update?
I also see the same issue on a fresh install that @willhatchVista saw:

How did you get to that fresh install exactly?

I cleared my local composer cache then initialized existing project from git  and installed composer via the composer.lock file that requires 0.4.1 of this package.

That's really weird. I've created a new tag https://github.com/winzou/state-machine/releases/tag/0.4.2 can you try again?

Success! That did it. Very strange indeed.
Thank you for your help and the package!

Great, thanks for reporting!


Improve API-Ref on ReadTheDocs

Currently the API-Ref was broken, as it was not updated during the refactorings and restructurings of the code base.
closes #67
This is fixed by running:
sphinx-apidoc -o docs/source -Fa mango to create current automodule files
build and improve the docs using
make -C docs html
and inspect the result using:
python -m http.server --directory docs/build/html
There are still various warnings as the documentation is not up to date or has syntax errors, but at least we do have a huge improvement.

It might be useful to enable building the docs for a PR, which is a check available in the readthedocs administration interface.


Universal Hero block

Logging this issue to consolidate and simplify the different types of "hero" blocks that we have. Sharing some initial thoughts:
Have 1 hero block. It can optionally have horizontal/vertical tabs. As for content placement, the hero block usually has 2 items in it - the image and content. The author can be given choices about how to layout these 2 items like:

Placement - background/foreground
Alignment - left/right
Shift - left/right/top/bottom
Tabs - specified if needed
Tab Orientation - vertical / horizontal

No longer applicable.


Frequent failures in odo service command tests for OperatorHub

/kind failing-test
odo test statistics dashboard is reporting quite a few failures for odo service command tests for OperatorHub When operator backed services are created.
When we delete example3 service using oc delete EtcdCluster/example3, it succeeds. Next we check if odo service list returns the message No operator backed services found in the namesapce but it doesn't. From the logs, it seems like example2 service started before example3 test is not getting deleted.

Surprisingly, I've never seen this issue in local environment when I run the tests. It's only showing up on the CI. Looks like something related to parallel tests running on multiple CI nodes.

Surprisingly, I've never seen this issue in local environment when I run the tests. It's only showing up on the CI. Looks like something related to parallel tests running on multiple CI nodes.

@amitkrout can you please help understand what's the problem here? I have a feeling that we'll need to use helper.WaitForCmdOut so that this issue doesn't pop up. Or, change the expectation for stdOut to not contain the name of the service being deleted (here example3) instead of expecting it to contain No operator backed services found in the namesapce.

Here's the error that it keeps showing:
Running oc with args [oc delete EtcdCluster example3]
[oc] etcdcluster.etcd.database.coreos.com "example3" deleted
Running odo with args [odo service list]
[odo] I0522 05:29:24.393559    9641 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:24.393690    9641 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:24.510108    9641 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:24.510230    9641 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:24.510295    9641 service.go:227] Getting list of services
[odo] I0522 05:29:24.510331    9641 operators.go:17] Fetching list of operators installed in cluster
[odo] I0522 05:29:24.602114    9641 service.go:239] Getting services started from operator: etcdoperator.v0.9.4
[odo] I0522 05:29:24.602158    9641 service.go:277] Getting instances of: etcdclusters.etcd.database.coreos.com
[odo] I0522 05:29:24.632337    9641 service.go:277] Getting instances of: etcdbackups.etcd.database.coreos.com
[odo] I0522 05:29:24.659886    9641 service.go:277] Getting instances of: etcdrestores.etcd.database.coreos.com
[odo] I0522 05:29:24.687668    9641 service.go:239] Getting services started from operator: mongodb-enterprise.v1.5.2
[odo] I0522 05:29:24.687698    9641 service.go:277] Getting instances of: mongodb.mongodb.com
[odo] I0522 05:29:24.715236    9641 service.go:277] Getting instances of: mongodbusers.mongodb.com
[odo] I0522 05:29:24.742976    9641 service.go:277] Getting instances of: opsmanagers.mongodb.com
[odo] NAME         TYPE            AGE
[odo] example2     EtcdCluster     14s

• Failure [18.765 seconds]
odo service command tests for OperatorHub
/go/src/github.com/openshift/odo/tests/integration/operatorhub/cmd_service_test.go:21
  When operator backed services are created
  /go/src/github.com/openshift/odo/tests/integration/operatorhub/cmd_service_test.go:169
    should list the services if they exist [It]
    /go/src/github.com/openshift/odo/tests/integration/operatorhub/cmd_service_test.go:170

    Failed after 0.498s.
    Running odo with args [odo service list]
    Expected
        <int>: 0
    not to match exit code:
        <int>: 0

Link to one of the failed tests.

Due to the parallel execution of the tests, it seems to me that last test in the file is executed first:
+ make test-operator-hub
ginkgo  -randomizeAllSpecs -slowSpecThreshold=120 -timeout 7200s -nodes=2 -focus="odo service command tests" tests/integration/operatorhub/
Running Suite: Operatorhub Suite
================================
Random Seed: 1590125344 - Will randomize all specs
Will run 7 specs

Running in parallel across 2 nodes

••••
------------------------------
Running odo with args [odo project set ci-operator-hub-project]
[odo] Switched to project : ci-operator-hub-project
Running odo with args [odo catalog list services]
[odo] I0522 05:29:06.419040    8848 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:06.540933    8848 operators.go:17] Fetching list of operators installed in cluster
[odo] I0522 05:29:06.652839    8848 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:06.652966    8848 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] Operators available in the cluster
[odo] NAME                          CRDs
[odo] etcdoperator.v0.9.4           EtcdCluster, EtcdBackup, EtcdRestore
[odo] mongodb-enterprise.v1.5.2     MongoDB, MongoDBUser, MongoDBOpsManager
Running odo with args [odo service create etcdoperator.v0.9.4 --crd EtcdCluster --dry-run]
[odo] I0522 05:29:06.877562    8878 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:06.877740    8878 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:06.877798    8878 operators.go:17] Fetching list of operators installed in cluster
[odo] I0522 05:29:06.968051    8878 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:06.968185    8878 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] apiVersion: etcd.database.coreos.com/v1beta2
[odo] kind: EtcdCluster
[odo] metadata:
[odo]   name: example
[odo] spec:
[odo]   size: 3
[odo]   version: 3.2.13
[odo]
Running odo with args [odo service create --from-file /tmp/anrgha.yaml]
[odo] I0522 05:29:07.189731    8918 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:07.189949    8918 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:07.190154    8918 operators.go:17] Fetching list of operators installed in cluster
[odo] I0522 05:29:07.284867    8918 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] Deploying service of type: EtcdCluster
[odo]  •  Deploying service  ...
[odo] I0522 05:29:07.285103    8918 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo]
 ✓  Deploying service [46ms]
[odo]  ✓  Service 'example3' was created
[odo]
[odo] Progress of the provisioning will not be reported and might take a long time
[odo] You can see the current status by executing 'odo service list'
[odo] Optionally, link  to your component by running: 'odo link <component-name>'
Running oc with args [oc get pods -n ci-operator-hub-project]
[oc] NAME                             READY   STATUS     RESTARTS   AGE
[oc] etcd-operator-7bf4c7ddb8-msjmf   3/3     Running    0          77m
[oc] example3-wrhp5mb6nx              0/1     Init:0/1   0          0s
Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Pending"Running oc with args [oc get pods example3-wrhp5mb6nx -o template="{{.status.phase}}" -n ci-operator-hub-project]
[oc] "Running"Running odo with args [odo service list]
[odo] I0522 05:29:23.020845    9574 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:23.021014    9574 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:23.141125    9574 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:23.141287    9574 preference.go:188] The path for preference file is /tmp/artifacts/.odo/preference.yaml
[odo] I0522 05:29:23.141379    9574 service.go:227] Getting list of services
[odo] I0522 05:29:23.141392    9574 operators.go:17] Fetching list of operators installed in cluster
[odo] I0522 05:29:23.229627    9574 service.go:239] Getting services started from operator: etcdoperator.v0.9.4
[odo] I0522 05:29:23.229662    9574 service.go:277] Getting instances of: etcdclusters.etcd.database.coreos.com
[odo] I0522 05:29:23.257473    9574 service.go:277] Getting instances of: etcdbackups.etcd.database.coreos.com
[odo] I0522 05:29:23.284714    9574 service.go:277] Getting instances of: etcdrestores.etcd.database.coreos.com
[odo] I0522 05:29:23.312516    9574 service.go:239] Getting services started from operator: mongodb-enterprise.v1.5.2
[odo] I0522 05:29:23.312547    9574 service.go:277] Getting instances of: mongodb.mongodb.com
[odo] I0522 05:29:23.339807    9574 service.go:277] Getting instances of: mongodbusers.mongodb.com
[odo] I0522 05:29:23.368596    9574 service.go:277] Getting instances of: opsmanagers.mongodb.com
[odo] NAME         TYPE            AGE
[odo] example2     EtcdCluster     13s
[odo] example3     EtcdCluster     16s

In above output, age of example2 service is less than that of example3 service. As a result, this particular check is going to fail: https://github.com/openshift/odo/blob/fb8315105361c8c5accb72713685e8e1a4d722d2/tests/integration/operatorhub/cmd_service_test.go#L222-L223
I'll open a PR with that part modified. But it would mean that we can't check for the following two outputs in tests:
$ odo service list
odo service list
 ✗  No operator backed services found in the namesapce

and:
odo service list -o json
{
    "kind": "Error",
    "apiVersion": "odo.dev/v1alpha1",
    "metadata": {
        "creationTimestamp": null
    },
    "message": "No operator backed services found in the namesapce"
}

I'll open a PR with that part modified. But it would mean that we can't check for the following two outputs in tests:

TBH I don't understand what is the use case you are trying to resolve here. Can you please add some more context?

$ odo service list
odo service list
✗  No operator backed services found in the namesapce

I am confused in which namespace operator backed service is not found. Ideally we should display the name of the namespace as well for better user experience. I think we can create a separate pr to update it.

TBH I don't understand what is the use case you are trying to resolve here. Can you please add some more context?

Honestly, I'm not sure how to add any more context than what I have already added. It's a test that's failing on CI but not in my local setup. There's also this comment https://github.com/openshift/odo/issues/3193#issuecomment-629956794. And the test in question is: https://github.com/openshift/odo/blob/fb8315105361c8c5accb72713685e8e1a4d722d2/tests/integration/operatorhub/cmd_service_test.go#L169-L170
I should have mentioned the test that's failing, my bad.

$ odo service list
odo service list
✗  No operator backed services found in the namesapce

I am confused in which namespace operator backed service is not found. Ideally we should display the name of the namespace as well for better user experience. I think we can create a separate pr to update it.

I'm not sure why the user experience matters when we're discussing the tests. But anyway, since odo service list in the experimental mode doesn't accept extra flags like --app, --project, we've ensured that proper namespace is set before each spec is executed. https://github.com/openshift/odo/blob/fb8315105361c8c5accb72713685e8e1a4d722d2/tests/integration/operatorhub/cmd_service_test.go#L23-L29
I think I know how to fix this test from failing. I'll open a PR and we'll hopefully be able to address it. That should also help clear the confusion.

When we delete example3 service using oc delete EtcdCluster/example3, it succeeds. Next we check if odo service list returns the message No operator backed services found in the namesapce but it doesn't. From the logs, it seems like example2 service started before example3 test is not getting deleted.

Yes, This will happen when we are running parallel test in a single namespace .
So the possible solution would be run it sequentially to avoid the flake that you ar facing right now or create separate namespace for each operator backed service and define it during the test.

It's a test that's failing on CI but not in my local setup.

Yes, sometimes CI behaves slowly which causing the issue. As part of your local setup is concerned may be you have a goood  set up configuration to run this test. Hence there is a less chance of getting such Flake.

I'm not sure why the user experience matters when we're discussing the tests.

We are hiding the information from the user like which namespace in which namespace operator backed service is not found. This is not about the test, I am talking in general. So adding the namespace name in the message will add more weightage.

But anyway, since odo service list in the experimental mode doesn't accept extra flags like --app, --project.

I checked while debugging the failure and found that we do have flags like --app, --project, even in experimental mode.
$ odo preference view
PARAMETER             CURRENT_VALUE
UpdateNotification    false
NamePrefix
Timeout
PushTimeout
Experimental          true
PushTarget
$ odo service list -h
List all services in the current application

[...]
Flags:
      --app string       Application, defaults to active application
      --context string   Use given context directory as a source for component settings
  -h, --help             Help for list
      --project string   Project, defaults to active project
[...]

we've ensured that proper namespace is set before each spec is executed.

Yes, thats true even I can see in the test.

I have a feeling that we'll need to use helper.WaitForCmdOut so that this issue doesn't pop up.

I am sure this won't work in parallel execution because you never know the immediate parallel test may add more similar result to the same command you trying to verify.

Or, change the expectation for stdOut to not contain the name of the service being deleted (here example3) instead of expecting it to contain No operator backed services found in the namesapce.

This will be a good approach if we want to stick to parallel run. However @prietyc123 suggested series run also deserves a mention.

Due to the parallel execution of the tests, it seems to me that last test in the file is executed first

yes, ginkgo uses a random algorithm to pick test in parallel run. So this is expected.

I'll open a PR with that part modified. But it would mean that we can't check for the following two outputs in tests:
$ odo service list
odo service list
✗  No operator backed services found in the namesapce
and:
odo service list -o json
{
"kind": "Error",
"apiVersion": "odo.dev/v1alpha1",
"metadata": {
"creationTimestamp": null
},
"message": "No operator backed services found in the namesapce"
}

Let's not compromise test spec due to parallel run constraint on a single namespace. Then i guess @prietyc123 has nice suggestion of running test in series.

I checked while debugging the failure and found that we do have flags like --app, --project, even in experimental mode.

They are available doesn't translate to they are working. :wink:
Anyway, in this case odo service list --project myproject works. But, if you use --app flag it would fail till #3134 is merged and I use that to take #2801 to a closure.
The relief in this case was the my assumption about --project not working was incorrect. Since it's working, I've modified the tests without any compromise to the spec and making it less ugly than what I had come up with earlier. :smile:

I checked while debugging the failure and found that we do have flags like --app, --project, even in experimental mode.

They are available doesn't translate to they are working. 😉
Anyway, in this case odo service list --project myproject works. But, if you use --app flag it would fail till #3134 is merged and I use that to take #2801 to a closure.
The relief in this case was the my assumption about --project not working was incorrect. Since it's working, I've modified the tests without any compromise to the spec and making it less ugly than what I had come up with earlier. 😄

Thanks @dharmit for detailed information. Actually I was really worried if these flags are not working then why are they still visible in UX experimental mode. I was about to create the issue on the basis of my observation. But thanks to clear my doubts.


Add new features

Add new feature that allows users to specify the output directory and user can pass apk object directly instead of apk file path.

Thx!


Add support for Lightning LTC<->BTC cross-chain swap

Please!
I have a lightning node running on Litecoin mainnet!
Wish I could pay the BTC invoice with my LTC!

The source code is open now, if you'd like to try building this feature you're welcome to have a go!


(fix) remove non-Ethereum network tests

Before submitting this PR, please make sure:

[X] Your code builds clean without any errors or warnings
[X] You are using approved title ("feat/", "fix/", "docs/", "refactor/")

A description of the changes proposed in the pull request:
This removes non-Ethereum network tests run in the standard coverage tests

This fixes the failing test for now. It manages to eliminate the network that is causing the workflow to fail.
Only Goerli is patched in the workflow file, that is why this fix will always run deterministiscally.
Ideally, all network that is being referenced in any of the test files in ./test should also be patched so they can run deterministically with no issues in the future.


[Timeline] Added timezone prop

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Docs: API reference links to source are 404

In the documentation API reference, the Source link at the bottom of each page results in a 404. Example from http://deck.gl/#/documentation/deckgl-api-reference/deck
Actual:
text: modules/core/src/core/lib/deck.js
url: https://github.com/uber/deck.gl/blob/5.3-release/modules/core/src/core/lib/deck.js
Expected:
text: modules/core/src/lib/deck.js
url: https://github.com/uber/deck.gl/blob/5.3-release/modules/core/src/lib/deck.js

Fixed in 5.3-release branch