Logical definition for alternative pathways

Hello,
Looking at logical definitions using 'has_intermediate' - this was used for pathways that have alternate intermediary steps, for example:
id: GO:1902767
name: isoprenoid biosynthetic process via mevalonate
def: "The chemical reactions and pathways resulting in the formation of isoprenoid via mevalonate."
 Shouldn't we have 'has output some isoprenoid' ?
Should we not distinguish the MF rather than the intermediate ?

@ukemi @deustp01 @cmungall
Thanks, Pascale

The output should be indicated in the parent and would be inherited for the alternative-pathway subclasses.
I think most biologist use the chemicals to distinguish the pathways. If we go with an MF distinctions we might need to use more than one. If you want to change how we do that, we can.

Thanks !

The output should be indicated in the parent and would be inherited for the alternative-pathway subclasses.

I will fix (because for this example it is not the case) and add some documentation.

I think most biologist use the chemicals to distinguish the pathways. If we go with an MF distinctions we might need to use more than one. If you want to change how we do that, we can.

That certainly makes sense, but in terms of GO-CAM and how we validate annotation it may be more useful to have the MF rather than the intermediate ? The intermediate could be displayed as the output of the MF.
Thanks, Pascale

In a perfect world, at some point we will have the Rhea definitions and the chemical will be represented. There will be no need for a curator to add it. My guess is that when they are reading the paper, the paper will talk about the intermediate chemical and the curator will have to add the MF. It doesn't really matter to me. We can do it however you want.

Mevalonate: MetaCyc :https://biocyc.org/META/NEW-IMAGE?type=PATHWAY&object=PWY-922


added ttl adjustments

Added ttl adjustments, because when testing DNS caching isn't always your friend :)

Merged. Thanks for contribution!


Create Nix flakes

For now, a simple flake with dev shell should suffice.
List of possible dependencies:

NodeJS
yarn
npm
Turbo (ELF-patched binaries)

We can re-use the example here.

I saw this line from the docs:

Nix flakes are an experimental feature of the Nix package manager.

Which, that's fine, but I'd prefer to avoid a lot of thrash if "experimental" means "rapidly changing", so I'm thinking a little bit about whether it makes more sense to gitignore these files, or to support them. How frequent is their release schedule? How often does the API change?

@doug-wade It has been stable for quite some time, so that won't be an issue. I could've gone for the shell.nix approach, but it would mean that I'd have to write a whole bunch of ELF-patching for the binary. This flake file is very simple, and I don't think any changes will affect us, as it will dealt by flake-utils devs.


feat(addon-table): disable column sorting on demand

Fixes https://github.com/taiga-family/taiga-ui/issues/8244

The idea is to enable sorting only for columns where the [requiredSort]="true" is provided

This is not what the fix needs to be. The issue was about making tuiSortable dynamic. But looking at it again I don't think we need it at all. All it does it connect sorter with key, I think it is already working as expected. This current PR is definitely not right, requiredSort means when you click the column it switches from asc/desc and never to unsorted, unlike other columns with sorter which disable sorting on 3rd click.

This is not what the fix needs to be. The issue was about making tuiSortable dynamic. But looking at it again I don't think we need it at all. All it does it connect sorter with key, I think it is already working as expected. This current PR is definitely not right, requiredSort means when you click the column it switches from asc/desc and never to unsorted, unlike other columns with sorter which disable sorting on 3rd click.

Ok, can we disable sorting dynamically for some columns with the current codebase?

my point is, if we have a way to provide this UI functionality to the end user and I am asking because I am new to the project and maybe I am missing something. Otherwise, it would be nice to create a new PR and provide this option also.

@tsironis13 sorry, I was sure I posted the explanation in the issue but it looks like I only typed it and forgot to press "Send" :) I ended up doing this PR myself because as I looked into the actual issue it turned out to be not as simple as I thought. It's going to be fixed in today's release.


eval model select

when eval, I used to use the nnet.pth to sample, which turns out the results are much worse than eval.log. then I compare the code and find in train_ldm.py u use the ema model to eval. and I turned to use the ema model to eval, and the results are great. So when eval, choose nnet.pth or nnet_ema.pth?

For diffusion models, such as DDPM, the use of EMA usually yields better results, and this is also true for U-ViT. The FID scores reported in the paper were also obtained using the EMA model for evaluation.

thx for the reply. i just not know the gap between ema and non-ema could be so huge. FID could be respectively 7 and 17, using nnet_ema and nnet.


Fixes #2175 Hide cursor when entering GraphView and TabRowView

Fixes #2175 - Explicitly hides cursor when entering tabs and GraphView
TabRowView is a private sub view of TabView: the actual tabs themselves.
Also deleted public override void PositionCursor () in TabRowView since we are now hiding it explicitly.
Pull Request checklist:

[x] I've named my PR in the form of "Fixes #issue. Terse description."
[x] My code follows the style guidelines of Terminal.Gui - if you use Visual Studio, hit CTRL-K-D to automatically reformat your files before committing.
[x] My code follows the Terminal.Gui library design guidelines
[x] I ran dotnet test before commit
[x] I have made corresponding changes to the API documentation (using /// style comments)
[x] My changes generate no new warnings
[x] I have checked my code and corrected any poor grammar or misspellings
[x] I conducted basic QA to assure all features are working

Good work. The base.OnEnter is the best choose to the subviews do the needed action for cursor visibility.


linking css files

Hi Dave,
I am using your MVC in a personal project and it is awesome! Still, I have only one issue that I'm struggling for and I can't really find a solution.
I have this following structure:
/home/sportpla/public_html
/home/sportpla/public_html/index.php
/home/sportpla/public_html/css
/home/sportpla/admin
/home/sportpla/admin/index.php
/home/sportpla/admin/css
/home/sportpla/app

I the public_html folder I have the main website, and in the admin folder I have the admin area.
Right now, I have duplicated the css folder for both websites. So, I am trying to move the css folder at the same level with the app folder and link them from there. I tried using "../document root" in order to get there, but it did not work.
Would you please let me know if there is anything that is restricting access to subfolders?
Thank you,
Cosmin

Hi Cosmin,
thank you for your interest in my framework!
The only publicly-accessible folder is the public (or public_html in your example) one. So you won't be able to link to files outside of this folder in HTML. You'd need to have them in a subfolder of the public_html folder, for example:
/home/sportpla/public_html/css/admin/styles.css
which you could link to in HTML with this:
<link rel="stylesheet" type="text/css" href="/css/admin/styles.css">
Is that what you meant?
Cheers,
Dave


Bump jinja2 from 3.1.2 to 3.1.3 (#6968)

Pull request opened by the merge tool on behalf of #6968

Merged in 761939f736e755f6e24d76c06878e7a1f63e3c98


test widget sizing on smaller screens

Below maybe 1200 pix high there are problems. even if you change default_frac_h for it to fit, it looks really bad / not much camera widget space
Maybe we need to move the controls to the left/right of the video feed?

Given the widget rewrite this shouldn't be as big of a problem as it was before. We still should test this more, but its no longer a blocker / just simply breaks


Run by line and debug cell not stopping

Fixes #10207
Breaktpoints firing on the first line more than once is the debugpy issue with Python 3.10. I just need to update debugpy and IPython.

did you check IW debugging as well since they share this base class? I think it was still working previously

looks like IW still works

Added some more fixes.

Debugger variable fetching not working because of changes for web support in the variable explorer
IW debug tests failing because of new 'debug type' for IW debugging with IPython debugger.


Network: Adds Network interface and network type concept

In order to support additional network types, this PR adds a generic Network interface and moves the existing bridge network implementation into a bridge driver.
Also adds the concept of a  network type to the database and associated structures.

Tested validation manually (including fake fan entries)
Tested fresh cluster setup with fan works
Tested upgrade schema for existing networks works

Testsuite passed

Testsuite passed

jenkins: test this please

Closing this as github is not displaying my additional pushes on the branch. will open new PR.


Tests: adjust invalid character

Adjust the injected character to be an invalid UTF-16 and UTF-8
character.  This is required to make the tests pass on Windows.

@swift-ci please test


"npm install" creates package.json under node_modules, breaks shrinkwrap

Running this command:
npm install grunt-angular-architecture-graph
Creates a package.json inside of the node_modules directory.  This looks like a generated file as it contains the local installation path. Not sure how this gets created, but the extraneous package.json breaks npm shrinkwrap.
I've tested this with npm 3.x (flattens node_modules) and npm 1.4x (doesn't flatten) in a completely empty directory. In both cases a package.json is created directly under grunt-angular-architecture-graph/node_modules.

Clarification:
grunt-angular-architecture-graph/package.json appears to be generated, containing the local path.
grunt-angular-architecture-graph/node_modules/package.json does not appear to be generated, but the version in it is "0.2.1".  This is odd because the other one references 0,2,6.


Changing the documented jConnect Sybase Driver to an implementation that works

The jConnect Driver (as of version 7.0) has two package implementations for the Driver: 1) com.sybase.jdbcx.SybDataSource and 2) com.sybase.jdbc4.jdbc.SybDataSource .
If 1) is used then an exception is thrown from the HikariCP since it's looking for a default constructor that is not there and throws the following exception upon initialisation:
Caused by: java.lang.InstantiationException: com.sybase.jdbcx.SybDataSource
at java.lang.Class.newInstance(Class.java:418)
at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:117)
... 62 more
Caused by: java.lang.NoSuchMethodException: com.sybase.jdbcx.SybDataSource.()
at java.lang.Class.getConstructor0(Class.java:3069)
at java.lang.Class.newInstance(Class.java:403)
... 63 more
Switching to 2) the driver starts up successfully and it's fully operational, therefore I'm changing this documentation line to reflect that.
ps. HikariCP version 2.3.8 as advised since jdk8
thanks,
Dimitrios

Thanks.


Using this with MSTSC as 'launcher'

Thanks for this setup. HDR on Gamestream/moonlight has been a headache for me.
Is it possible to setup C:\Windows\System32\mstc.exe as the launcher and have HDR treated as 'on' in windows?  I generally like to load the remote desktop and play around from there.
I'm assuming the launcher would become:
; launcher_exe = C:\Windows\System32\mstsc.exe
and no longer need any tags or lines past it like steam or GOG do?

Hi, thanks for reaching out. This looks reasonable. Be sure to use wait_on_process = 1 as well.

I'm curious as to how this went. As i just added a window for wait_on_process to gracefully shutdown gamestream at the end of a session there could be a remote_desktop option that doesn't launch any process at all but waits for that window to be closed which would terminate the session without needing to exit through the moonlight interface.


PMM-10064 table row selection

https://jira.percona.com/browse/PMM-10064
As part of the story the possibility to select rows needs to be added to the generic table component.
For consistency purposes I've separated the checkbox component from the react-final-form library, so it can be used in other components.
Screenshot (Inventory -> Agents):

Thanks @matejkubinec ! Can I just ask you to just upload a screenshot here?

Thanks @matejkubinec ! Can I just ask you to upload a screenshot here?

Added to the first comment.


Fix source printing

Some newer language constructs like bitwise operators are not printed correctly

resolved with PR #84


Feat: add an option to fail a test if its baseline doesn't exist

fixes #125

Looks good!

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

Thank you! Very excited about this


fix: alias form model names so we do not get naming collisions

Issue #, if available:
Description of changes:
This changes handles the possibility of naming collisions within form relationships. Currently, the Studio Data Modeler will name the connected field {ModelName} with a capital letter when creating a belongsTo relationship. Since this name would conflict with the model name/import, a collision happened. This is resolved by aliasing the model import to import {ModelName} as {ModelName}0
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Codecov Report

Merging #771 (e6fdc1a) into tagged-release/cms-support (5433d47) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@                     Coverage Diff                     @@
##           tagged-release/cms-support     #771   +/-   ##
===========================================================
  Coverage                       92.02%   92.02%
===========================================================
  Files                             115      115
  Lines                            4387     4391    +4
  Branches                         1220     1221    +1
===========================================================
+ Hits                             4037     4041    +4
  Misses                            329      329
  Partials                           21       21

Impacted Files
Coverage Δ

...act/lib/forms/form-renderer-helper/relationship.ts
100.00% <100.00%> (ø)

...eact/lib/forms/form-renderer-helper/type-helper.ts
100.00% <100.00%> (ø)

.../codegen-ui-react/lib/forms/react-form-renderer.ts
84.02% <100.00%> (ø)

.../codegen-ui-react/lib/imports/import-collection.ts
97.14% <100.00%> (+0.08%)
:arrow_up:

Continue to review full report at Codecov.

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


[FEATURE] Avoid redownloading unchanged files

Use case
As a user continually backing up their icloud drive documents each day/week, I want to avoid redownloading unchanged files so that I can sync more quickly and save on network traffic.
Describe the solution you'd like
Possibly checking an updatedAt field in the icloud api (if it exists), and not redownloading the file if it hasn't changed since the last sync.
Describe alternatives you've considered
Multiple configurations each syncing an individual folder, so the syncs complete more quickly.
Additional context
Really appreciate you making this plugin. Just used it to download 500+gb over ~24 hours. When I run it a second time, it seems to be redownloading each file. Would be great if there was an optimization to make it run more quickly on subsequent runs. Ideally I could do daily backups and it would only download the files that changed since the last backup.

It shouldn't re-download the files again if they are not changed (no changes in file size and no changes in last updated timestamp).
https://github.com/mandarons/icloud-drive-docker/blob/6fc91281954620edb2d103c97f72317d235e7293/src/sync_drive.py#L131-L135
Please share your logs if you still believe that files are being redownloaded without any changes to them.


Node Transform

First draft of the Transformer node. Only briefly tested, but seems to transform from v2 to LD.

@BjarkeHou in order to perform a last review you need to rebase (please do not merge), revise CI, ensure a green CI and also provide a couple of test cases for your Node.

@jmcanterafonseca Right, I'll have a look at it tomorrow.

@BjarkeHou I plan to release a v1.0 this week, so if you complete your PR your node will be part of that release as well.
thanks!

@BjarkeHou there are still conflics, can you rebase and solve the conflicts, that should be easy

a final thing that would make this PR perfect is adding the new Node to the list in the README
thanks!

works perfectly, great work! and nice vacation!


fix file descriptor leak problem & enable keepalive by default

@QuentinPerez: IDK about the keep-alive, but the resp.Body.Close() is certainly not correct in current code; it only gets invoked on the NopCloser, which... does nothing. So, the Reader from http stays open forever.

@pkopac When the resp.Body is closed, we can fix leak by reusing  the obj of SuperAgent. We have proved it works.

@pkopac Yeal, you're right. We should disable it by default.


Adjust Codecov behavior

Avoid Codecov spammy behavior with inaccurate coverage% comments and wrong red GitHub PR statuses.
See https://docs.codecov.io/docs/commit-status

Thanks.
I do like the comments, but yeah, they do use no good until the numbers are more accurate.

I'd like https://github.com/codecov/support/wiki/Pull-Request-Comments too.
Maybe it's a signal of worse problems somewhere inside st2 or in a way how we're using testing framework?
Because it always shows 2 different coverage numbers when re-running the tests.

@armab created #3227 since it will go unnoticed if it's not captured anywhere.


Full table scan generated when saving a "Show" view

Describe the bug
When editing and saving a view of type "Show" (in which only 1 record should be displayed), a full table scan is made on the underlying table.
The generated query is :
SELECT * FROM "schema"."table"
To Reproduce
Steps to reproduce the behavior:

Activate the log of SQL queries
Edit and save a view of type "Show"
Look at the generated SQL query on the underlying table

Expected behavior
Limit the returned rows to the first one by using the "LIMIT 1" clause on the query.
Screenshots
None
Additional context
None

Thanks for reporting, fixed in #1427


Exception on system with Zen 3 + RX 6800 XT

We've tested the Nuget on different systems.
Error while getting PCI device infos.","@l":"Error","@x":"System.ComponentModel.Win32Exception (0x80004005): Element not found\r\n   at Mixaill.HwInfo.SetupApi.DeviceInfoSet.GetProperty(SP_DEVINFO_DATA devInfoData, DEVPROPKEY propKey)\r\n   at Mixaill.HwInfo.SetupApi.DeviceInfoFactory.Create(DeviceInfoSet devInfoSet, SP_DEVINFO_DATA devInfo)\r\n   at Mixaill.HwInfo.SetupApi.DeviceInfoSet.Initialize()\r\n   at CapFrameX.SetupAPI.NetStandard.SetupAPIWrapper..ctor(ILogger`1 logger) in C:\Users\taxxo\Source\Repos\CapFrameX\source\CapFrameX.SetupAPI.NetStandard\SetupAPIWrapper.cs:Line21.","SourceContext":"CapFrameX.SetupAPI.NetStandard.SetupAPIWrapper"}
Can you do anything with the info?

Please test demo executable with last commit
Mixaill.HwInfo.SetupApi.Demo.zip

Nothing happens when trying to execute the file, this is what eventviewer shows

It requires .NET 5.0
https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-5.0.6-windows-x64-installer

With 5.0 installed

although the exception CX is throwing hasn't changed

Please replace Mixaill.HwInfo.SetupApi.dll in the CapFrameX folder with this one
Mixaill.HwInfo.SetupApi.zip

Vega56 and 2080Ti were cards previously installed in the system

That's the bug, I do not exclude cards which are not installed at this moment.

Seems to work, no exception in the log file

Mixaill.HwInfo.SetupApi.Demo_2.zip
@Taxxor90 please check this demo, you should see only one GPU which is currently installed

Yes that's the case

Nice.
Fixed in  https://github.com/Mixaill/Mixaill.HwInfo/commit/c85733abec2ab3584fd07e6c29d6fcef1e5149c0 https://github.com/Mixaill/Mixaill.HwInfo/commit/cb39af3a0cbe103a71ba953a2fd748da3a14185a

CapFrameX PR: https://github.com/CXWorld/CapFrameX/pull/168


Add Bootstrap 3 and 4 to the test folder

Ladda works well out of box:

Bootstrap 3 https://jsfiddle.net/terales/p3efcqw7/
Bootstrap 4 https://jsfiddle.net/terales/38pf8Lr8/

Maybe we should include them into a test folder?

I'm all for including additional examples if it makes it easier for people to get started with Ladda. Thanks for the PR 🙌

this is not bootsrap 4!

@vahidalvandi sure, now it's different. You're free to submit a PR with an updated test case for Bootstrap 4


Candidate REST API unit test

Add Django test (normal case and edge case) for all operation in candidate REST API.

Solved by #41


feature(types): support function type literals

Also rename the parameters in fn_params.js to clarify that the names they are given in the .d.ts output have no relation to the names in the .js file

LGTM

merged in 8cfb873


Add BOM for AWS to ensure aligned dependencies

I was having issues with the Amazon SSM version(1.11.312) pulling in an older version of the core library(1.11.251), which was causing runtime issues in the ECS container. I wasn't able to determine how maven was resolving to the older library.
Based on the instruction in this AWS blog post, I have added a BOM to ensure there is no mismatch.
[INFO] +- com.amazonaws:aws-java-sdk-ssm:jar:1.11.312:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-core:jar:1.11.251:compile (version managed from 1.11.312)
[INFO] |  |  +- org.apache.httpcomponents:httpclient:jar:4.5.5:compile (version managed from 4.5.2)
[INFO] |  |  |  +- org.apache.httpcomponents:httpcore:jar:4.4.9:compile
[INFO] |  |  |  \- commons-codec:commons-codec:jar:1.11:compile (version managed from 1.10)
[INFO] |  |  +- software.amazon.ion:ion-java:jar:1.0.2:compile
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.3:compile - version managed from <IP_ADDRESS>; omitted for duplicate)
[INFO] |  |  +- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.9.3:compile (version managed from 2.6.7)
[INFO] |  |  |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.3:compile - omitted for duplicate)
[INFO] |  |  \- (joda-time:joda-time:jar:2.9.9:compile - version managed from 2.8.1; omitted for duplicate)
[INFO] |  \- com.amazonaws:jmespath-java:jar:1.11.251:compile (version managed from 1.11.312)
[INFO] |     \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.3:compile - version managed from <IP_ADDRESS>; omitted for duplicate)

I have also updated the version.

The build failed as the BOM doesn't seem available on Maven Central
Anyway I'm a bit worried that everybody will need to download that BOM, even when they don't use AWS. Couldn't you just fix the 2 required library: same mechanism as before, but both for the SSM and the core lib?

Oops, my mistake.
@jdubois I'm not familiar with the BOM system, but I thought it was just for centrally managing versions, not actually downloading the dependencies defined within them. My issue with fixing the core version only is that if the Amazon SSM Library changes in the future, then we'll have a similar issue where there will be a mismatch between versions.

No you were correct it's just for defining the libs, but the bom itself wasn't present


Different messages to different channels

I am wondering if this bot is able to post certain notifications into one channel and different notifications into another.
IE:
Being attacked can be posted in Channel 1
Structure going online can be posted in Channel 2
Thanks in advance!

Hey! sure, it's possible.
You would have to pull from master again, but in addc7f33 I've added FilterNotifier.
In it you can specify which keywords you are interested in.
So in run.py you do:
from reconbot.notifiers.filter import FilterNotifier
And then something along the lines of:
slack_channels = CachingNotifier(
    SplitterNotifier([
        FilterNotifier(
            SlackNotifier(
                'my-slack-api-key',
                'my-slack-username',
                '#slack-channel-1',
                'online'
            ),
            keywords=[],
            # Allow everything but notifications containing these keywords
            ignore=['Moon extraction', 'Moon laser has been fired', 'ran out of fuel', 'low fuel alert', 'other keyword to ignore']
        ),
        FilterNotifier(
            SlackNotifier(
                'my-slack-api-key',
                'my-slack-username',
                '#slack-channel-1',
                'online'
            ),
            # Allow notifications only containing one of these keywords
            keywords=['Moon extraction', 'attacked'],
        ),
    )
)

Hi!
Awesome!
Thanks a ton for the quick fix and answer!
Have a good one! o7


Does not work easily with linux

Describe the bug
The mod does not run out of the box on linux.
I believe this is because linux uses a case sensitive file system.
To Reproduce
Steps to reproduce the behavior:
clone repo in to "~/.local/share/aspyr-media/Sid Meier's Civilization VI/Mods/"
start game
see mod listed and enabled in "addition content" > "mods"
start game
Expected behavior
all the UI feature the mod provides are usable
or a script to modify the files an folders to use lowercase and alternative modinfo
General information

OS: Ubuntu 18.04
Version <IP_ADDRESS> ( I think there is a different versioning number for linux builds )
Expansion Gathering Storm
Other mods None

Additional context
i was able to rename the files and folder for the mod to all lower case and then change them in the modinfo file and it seems to be working now
cqui.modinfo.txt

yep, I think I learned this the hard way... @verda can you share a copy of your mods.log file from your logs folder, so we can see?
Or, which files did you rename?

I'm using this to make my filesystem case-insensitive.
https://forums.civfanatics.com/threads/tutorial-getting-mods-to-work-in-linux-most-of-the-steps-are-no-longer-needed.528742/
I also make the mount permanent by adding a line similar to this to /etc/fstab
/home/markus/.local/share/aspyr-media/Sid\040Meier's\040Civilization\040VI/civ6-mods.img /home/markus/.local/share/aspyr-media/Sid\040Meier's\040Civilization\040VI/Mods vfat loop,iocharset=iso8859-1,uid=markus,gid=markus,fmask=113,dmask=002 0 0

Lua.log
Modding.log
Attached logs for my game where the banners disappears.
If I do the workaround I posted above it will work as the file loading will be case-insensitive

There's  a few things in here... 1 is stuff with the ModLens, which I am guessing that perhaps the way it's loaded behaves differently on Linux?
Here's the errors in the log:
Runtime Error: C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\Lenses\ModLens_Builder_Config_Default.lua:411: attempt to index a nil value
stack traceback:
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\Lenses\ModLens_Builder_Config_Default.lua:411: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\UI\minimappanel.lua:9: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion1.lua:6: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion2.lua:6: in function '(main chunk)'
	[C]: in function '(anonymous)'
Lua callstack:

Line 411 is this, and I am wagering that g_ModLenses_Builder_Config is the object that is nil
table.insert(g_ModLenses_Builder_Config[m_NothingColor],

g_ModLenses_Builder_Config is defined in ModLens_Builder.lua, which ModLens_Builder_Config_Default.lua does not directly include...
minimappanel.lua (Integrations\ML\UI) does this to include all of the ModLens_* scripts:
g_ModLenses = {} -- Populated by ModLens_*.lua scripts
include( "ModLens_", true )

I wonder if, for whatever reason, on your system it's loading ModLens_Builder_Config_Default.lua before it is loading ModLens_Builder.lua
Those ModLens filenames are camel-cased,

I think the city banners boil down to whatever the cause of this issue happens to be... which I have no idea at the moment:
CityBannerManager: Instance Manager built with bad Root Control [CityBanner] [Anchor]
Runtime Error: C:\Emu\AppAssets\Base\Assets\ui\instancemanager.lua:179: attempt to index a nil value
stack traceback:
	C:\Emu\AppAssets\Base\Assets\ui\instancemanager.lua:179: in function 'BuildInstance'
	C:\Emu\AppAssets\Base\Assets\ui\instancemanager.lua:36: in function 'GetInstance'
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Assets\Expansion2\CityBanners\citybannermanager.lua:540: in function 'CityBanner:Initialize'
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Assets\Expansion2\CityBanners\citybannermanager.lua:213: in function 'CityBanner:new'
	(tail call): ?
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Assets\Expansion2\CityBanners\citybannermanager.lua:2985: in function 'OnCityAddedToMap'
	[C]: in function 'func'
	[C]: in function '(anonymous)'

Whatever is the cause of the "bad Root Control" maybe...
or are you saying you force all of the file names to be lower case and it starts to work?

The code if out of my expertise :)
But what I'm saying is that the workaround makes the file system case-insensitive. (like how Windows behaves)
Default on linux when trying to open FooBar.baz and the file is named Foobar.baz it will fail. But on windows it will open the Foobar.baz as the lookup is case-insensitive, eventhough the filesystem on windows perserves the casing in the names.
On windows you cannot have multiple files having the same name if you ignore casing, on linux it's allright as they are treated as distinct files.

@ guys with Linux
Can you please describe precisely what rules should be observed to have the mod working out of the box on Linux?
What should be lowercased? I mean - directories? File names? All of them?
Is a name like abcd_CQUI allowed or should it be abcd_cqui?
Any other rules? Etc.

I have no knowledge of the code but the issue on Linux is that the code has some reference to file FooBar.txt, but the file on disk is named fobar.txt
The same applies to folder names.
There's not that the names are not allowed, it's just that the names in the code need to be the same, including casing of letters. One good rule might to have everything in lowercase to avoid any confusion.

The basic problem is that the Lua code uses one case and the files are actually written as a different case.  The problem is probably pretty easy to see on Mac OS.
FWIW, given I run ZFS I finally worked around the issue by creating a custom ZFS file system with the case sensitivity property turned off (zfs set casesensitivity=insensitive fs).  CQUI now appears to be working just fine.  But that's probably not a viable workaround for most people.

ext4 file sytem have also a flag to set it to case insensitive, but I'm on btrfs so I needed some extra magic using a loopback file and mount it as fat to make it work

If we can get another copy of a modding.log and Lua.log file, maybe can pick out what is failing to load.  I have been trying to keep eyes open for instances where the casing doesn't match - a couple of the files in  expansion1 or 2 I think still have improper casing on their include statement

@verdra @hartmark @aw-was-here - Can you give the mod another shot (without whatever modifications you've made on your own)?  I think we have all of the casing issues corrected now, so I am curious to see.  If it doesn't work, perhaps it's issues in XML file includes

sorry about not being responsive.
i tried the latest master and i am still getting issues especially around the citybanner and modlens
Lua.log
Modding.log

The logs are very useful, thank you!  The Lua log shows me it's something with the more lens integration.  I will look and see if it's something obvious that can be fixed -- maybe it's a matter of updating our version of it.  I was looking at the logs on my phone so I haven't yet been able to also look at the code.  Also didn't see anything in the modding.log which was surprising, but ok.
In the meantime if you wouldn't mind a quick test - can you subscribe to the MoreLenses mod and run it without CQUI to see if it works standalone?
The lens shown on the city screen is intertwined with this so for at least the time being we need to keep ML integration...
Thanks again!

MoreLenses causes the minimap to disappear
Lua.log
Modding.log

Looks to be similar if not same issue, thanks for the logs!

I am curious: are all the files in the firaxis distribution for Linux lowercased by default? Or are the names the same as in Windows distribution? Also, if they are lowercased, then are all include statements also using lowercased names?

yes i believe all the files in the linux distribution are lowercased. though it looks like the a few of the folder are not. i am not sure where to check for the include statements.

Sorry for late response, I'm on vacation and will be back day after tomorrow.
I see some logs have been posted. Poke me if more is needed.

@verdra @hartmark can you try the version of the mod from this branch: https://github.com/civfanatics/CQUI_Community-Edition/tree/m4a-LinuxIssues-36
The issue I'm seeing in the lua.log file looks to be caused by a load order issue.  The errors observed in the respective Lua.log files from the actual ModLenses mod and the version in CQUI are different, but similar.
Runtime Error: C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\Lenses\ModLens_Builder_Config_Default.lua:411: attempt to index a nil value
stack traceback:
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\Lenses\ModLens_Builder_Config_Default.lua:411: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\UI\minimappanel.lua:9: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion1.lua:6: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion2.lua:6: in function '(main chunk)'
	[C]: in function '(anonymous)'

ModLens_Builder_Config_Default.lua is a file that is "included" by ModLens_Builder.lua.  I think it may be that issue where the "include" statement in minimappanel.lua includes ModLens_*, which may somehow cause the order to be weird.
The other possibility is LoadOrder stuff somehow behaves differently with Linux, and because the ModLens_Builder_Config_Default has a lower value, it loads earlier than the file that includes it.  So if this first attempt doesn't work, the second attempt will be to increase the value of the LoadOrder in the "MORELENSES_LENSES_BUILDER_CONFIG" to see if that makes a difference:

        <ImportFiles id="MORELENSES_LENSES">
            <Properties>
                <LoadOrder>10</LoadOrder>
                <Context>InGame</Context>
            </Properties>
            <Items>
                <File>Integrations/ML/Lenses/ModLens_Builder.lua</File>
                <File>Integrations/ML/Lenses/ModLens_Scout.lua</File>
                <File>Integrations/ML/Lenses/ModLens_Archaeologist.lua</File>
                <File>Integrations/ML/Lenses/ModLens_Barbarian.lua</File>
                <File>Integrations/ML/Lenses/ModLens_Naturalist.lua</File>
                <File>Integrations/ML/Lenses/ModLens_Wonder.lua</File>
                <File>Integrations/ML/Lenses/ModLens_CitizenManagement.lua</File>
            </Items>
        </ImportFiles>

        <ImportFiles id="MORELENSES_LENSES_BUILDER_CONIFG">
            <Properties>
                <LoadOrder>9</LoadOrder>
                <Context>InGame</Context>
            </Properties>
            <Items>
                <File>Integrations/ML/Lenses/LensSupport.lua</File>
                <File>Integrations/ML/Lenses/ModLens_Builder_Config_Default.lua</File>
            </Items>
        </ImportFiles>

still showing the error of missing mini-map and city banner
Modding.log
Lua.log

alrighty... attempt #2.  I saw another spot that did that "different" include statement.  Also saw that this statement:
Error opening/reading where=, file=C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Assets\Expansion1\Replacements\WorldTracker_Expansion1.lua

There was no  entry in the modinfo file... the CQUI version is lower-cased, and while the  entries had the proper casing, the lack of the  entry meant possible issues.
I also added a lines of print at the top of the modlenses files just to see what is loading and in what order.  This is a curious issue, for sure, and I wish I could reproduce it locally somehow

here is what i currently running, i think i deleted the city banner stuff but i got the minimap and lenses working
https://github.com/verdra/CQUI_Community-Edition/tree/my_branch
Modding.log
Lua.log

weird.  there's still errors in there, maybe these errors are benign?  very strange.
StatusMessagePanel: INITIALZE: CQUICommon.lua
Error opening/reading where=, file=C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\assets\expansion1\replacements\WorldTracker_Expansion1.lua
MapSearchPanel: Created SearchContext 'MapSearch_Primary'
MapSearchPanel: Created SearchContext 'MapSearch_Suggestions'
MinimapPanel: INITIALZE: CQUICommon.lua
MinimapPanel: INITIALZE: CQUICommon.lua
MinimapPanel: Governor Builder Index = 4
MinimapPanel: Governor Builder Aquaculture hash = -122625491
MinimapPanel: Governor Builder Parks Rec hash =<PHONE_NUMBER>
Runtime Error: C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\integrations\ml\lenses\modlens_builder_config_default.lua:411: attempt to index a nil value
stack traceback:
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\integrations\ml\lenses\modlens_builder_config_default.lua:411: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\integrations\ml\ui\minimappanel.lua:9: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion1.lua:6: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion2.lua:6: in function '(main chunk)'
	[C]: in function '(anonymous)'
Lua callstack:

@C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\integrations\ml\ui\minimappanel.lua:9
@C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion1.lua:6
@C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion2.lua:6
Error loading file where=C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\integrations\ml\ui\minimappanel.lua:9: , file=C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\integrations\ml\lenses\modlens_builder_config_default.lua
MinimapPanel: INITIALZE: CQUICommon.lua

@verdra did you get the chance to run the more recent update to the branch?  it'd give me a better idea of what's happening based on the logging I added
thanks!

just did. heres what i got.
Modding.log
Lua.log

The problem is visible in the first set of lua callstack - it contains original files from the game.
ML overwrites original files and they should NEVER appear in the log.
It originates most likely from the 2 naming standards that you introduced to .modinfo. Some files in ML are lowercased, and some are capitalized. Basically the game runs 2 different copies of minimappanel.lua and they conflict ofc.
How to solve it. I asked a few posts above about the naming of the original files and didn’t get answer but you need to check that. Then either a) name the files in ML exactly the same or b) make sure that files used in ML have consistent naming and add proper ReplaceUI that points to those file. When you check how minimappanel.lua and .xml are precisely named, then it will be easier to decide what names should be used in CQUI.

I noticed the expansion1 and expansion2 of minimappanel.xml are lowercased in the actual MoreLenses mod, so I made that change.  I added a print line to the top of worldtracker_expansion1.lua as well, because that "failed to import" stuff is weird, and I am curious about that as well.  If you wouldn't mind giving it another shot...
There might be issues going on if you have already done some renaming of files -- for example, this stack makes me wonder because of the casing -- not sure if Linux has already forced the all-lower-case with the base files (as we can see in other stacks that the expansion1/expansion2 directories are not lowercased)...
that said, it does find the files, so maybe that's just something we're seeing in the logs:
stack traceback:
C:\Emu\AppAssets\Base\Assets*ui\instancemanager.lua:179:* in function 'BuildInstance'
C:\Emu\AppAssets\Base\Assets*ui\instancemanager.lua:36:* in function 'GetInstance'
C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\UI\minimappanel.lua:181: in function 'CreateMapOptionButton'
C:\Emu\AppAssets\DLC*expansion2*\UI\Replacements\MinimapPanel_Expansion2.lua:56: in function 'CreateMapLabelToggle'
C:\Emu\AppAssets\DLC*expansion2*\UI\Replacements\MinimapPanel_Expansion2.lua:132: in function 'LateInitialize'
C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\UI\minimappanel.lua:1551: in function 'OnInit'
Lua callstack:
FWIW it doesn't look like ML overwrites those two files - MinimapPanel_Expansion1 and 2, maybe it should.  It then correctly goes to the minimappanel.lua found in the standard folder:
stack traceback:
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\UI\minimappanel.lua:1568: in function 'Initialize'
	C:\Emu\AppDataParent\Sid Meier's Civilization VI\Mods\CQUI_Community-Edition\Integrations\ML\UI\minimappanel.lua:1610: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion1.lua:6: in function '(main chunk)'
	[C]: in function 'lInclude'
	C:\Emu\AppAssets\DLC\expansion2\UI\Replacements\MinimapPanel_Expansion2.lua:6: in function '(main chunk)'
	[C]: in function '(anonymous)'

ML works on Windows. It means that making it work on Linux is a matter of proper naming and load order. Unless you wanna do random changes and hope for some luck to make it work, I'd rather wait for Linux guys to tell the exact naming of the related files on Linux. That should help to name them properly in the mod.

@verdra any chance you've tried the most recent again?  curious of the result if so
thanks!

FYI, all files on the Asypr port are lowercased. For the sake of convenience (and posterity), I've dumped the file trees for the base and expansion files in this gist.

@the-m4a Is there any branch that I can test running in Linux to give you some feedback? I've tried the 'm4a-LinuxIssues-36' branch, and that has a visible mini map in standard and both (first 2) extensions. But the city banner is still missing when running a game with either of the expansions (standard game seems ok).
Also, where do I find the Lua.log file to check for other errors, as I can't seem to find it on my system?

@RustyD I don't know if @the-m4a 's branch is valid any more. Maybe just try the master and post all logs here (zip pls).
I don't know where logs are on Linux. On Windows they are in [user]\Documents\My Games\Sid Meier's Civilization VI\Logs. Mods and Logs reside side by side. Logs: database, modding and lua.

@Infixo Yeah - I can see a lot of other logs in the Log directory (FYI - ~/.local/share/aspyr-media/Sid Meier's Civilization VI/Logs), but NOT the Lua.log file.
I was also skimming over the commit history to see if anything stood out regarding fixing the city banner, but no luck. I'll look at trying a more recent branch.

I just creating a new GS game with CQUI mod branch "m4a-techcivicpopuptake2-171" active (a few commits on from master) and had no minimap and no city banner after I built my city.
Logs attached.
civ6-logs.zip

@Infixo Yeah - I can see a lot of other logs in the Log directory (FYI - ~/.local/share/aspyr-media/Sid Meier's Civilization VI/Logs), but NOT the Lua.log file.

Lua.log is actuallu THE log that is needed the most. Weird that you don't have it.

Anyway, check your game installation because you have DB errors from the game core.
[2037872.888] [Gameplay] ERROR: table Colors already exists
[2037872.888] [Gameplay]: In XMLSerializer while building table Colors from file color_tables.xml.
[2037872.888] [Gameplay] ERROR: table DiplomacyStatements already exists
[2037872.888] [Gameplay]: In XMLSerializer while building table DiplomacyStatements from file diplomacy_tables.xml.
[2037872.888] [Gameplay] ERROR: table LeaderAnimations already exists
[2037872.888] [Gameplay]: In XMLSerializer while building table LeaderAnimations from file leader_tables.xml.

~/.local/share/aspyr-media/Sid Meier's Civilization VI/Logs), but NOT the Lua.log file.

FWIW, in my last run in July, this is where my Lua.log file is at.

I'll check my installation.
But I've just managed to get the minimap to appear in a new GS game, after I rebased the "m4a-LinuxIssues-36" branch on top of master, renamed to linux-issues-36
But I don't have permission to push that, so can't share for the moment.
No city banner though.

Well, I uninstalled Civ6 (via Steam) and deleted my '.local' files and then re-installed with just the 2 expansion mods. I still get the same errors in 'Database.log' (all 3 duplicated), so I'm not sure that it should be a problem?
I still don't seem to have a 'Lua.log' file in the 'Logs' folder.
And, rather stupidly, I deleted the cloned CQUI git repo that contained my rebased branch. Doh!
Maybe I'll fork this repo and try pushing my changes to that.

@RustyD - Yeah, that branch likely isn't valid at the moment... I had planned to start with going with proper casing for all files in CQUI (basically undoing all of the lower-casing from a few months back) and starting to pick things up from there.  If I get time tonight I'll create a new branch and whatnot...
Like Infixo said tho, finding that Lua.log, Modding.log, and UserInterface.log files would be super helpful!

@RustyD - would you mind verifying if the Minimap/Lenses work from the branch m4a-morelensesupdate?  I just went through and pulled all of the recent changes from MoreLenses over, except for changes in casing (the "real" ML mod lower-cased all file refrences...but as best I can tell did not actually lowercase the file names).

@the-m4a I've just quickly tried this out (using a R&F game that I have been playing using my branch from yesterday, where the minimap was visible).
Using your m4a-morelensesupdate branch, I couldn't see any minmap.
So I then tried creating a new game using the standard rules, and the minimap wasn't visible there either.
:-(

I have the same problem - both the minimap and the cities banners were abscent. I'm using ArchLinux, and this is my Logs folder content (no Lua.log either):
https://drive.google.com/file/d/1x0LKo04v3J3vE0DTZL-YrxgP9pfM2qzJ/view?usp=sharing

Guys, maybe there is simply a bug and Lua.log is no longer generated in Linux installations. Maybe this should be reported oficially to Firaxis/Aspyr.
Can anyone confirm that he/she is getting the log on Linux?

Is the SDK - or more specifically, the Fire Tuner - something that can be run in the Linux environment?  The lack of Lua logs is odd though.  Where do such things get officially reported?

I fired up my old desktop but that had some issues running Steam. It had run Civ6 in the past, because there were all the relevant logs files, etc present. Including the lua.log file! It's contents would not have been relevant though.
But, in order to test your changes I needed to get Steam working. Long story short, I spent 5 or so hours upgrading from Mint 19.3 to Mint 20 and re-installing a lot of stuff - including Steam.
Now with a working Steam I was able to test CQUI. Unfortunately however, I experienced the same results as on my other machine - including no lua.log file.  :-(
So maybe this a Mint Linux (based on Ubuntu) or a wider Linux issue with no lua.log file. Maybe this should be report to Firaxis/Aspyr?

Is the SDK - or more specifically, the Fire Tuner - something that can be run in the Linux environment? The lack of Lua logs is odd though. Where do such things get officially reported?

I have no idea about the SDK or Fire Tuner. Any pointers?

There's a Civilization channel on Aspyr's discord where some developers peek into, you can also get responses from other knowledgeable people there and if you get no response you can lodge a ticket in their bug-tracker.
discord.gg/AspyrMedia

I've gone to that discord channel and raised the question. Hopefully someone might have a answer, but probably best not to hold your breath.

I've created a new pull request #189 that is branch off of the 'more lenses' branch by @the-m4a .
Without the Lua.log file available, I'm pretty stuck not being able to highlight specific errors with the Minimap and City Banners not working, but I still thought I'd spend some time manually investigating and trying out various fix 'guesses'.
I've managed to get the minimap working, but the city banners still remain an issue in the expansions.
I don't know if you do/don't want to accept my pull request, but it at least means there will be one less 'critical' issue using CQUI on Linux if you do accept it.

Any chance the Lua.log file has made a reappearance with today's update from Firaxis?

Also - started up a game with Gaul, running just CQUI and the "better civ colors" mod (which is just XML changes away from ours).  So far, things look ok.

Any chance the Lua.log file has made a reappearance with today's update from Firaxis?

I've just had a quick check, and no Lua.log for me  :(

darn, wonder what's up with that

@RustyD If you haven't already, can you open up the AppOptions.txt (under .local/share/aspyr-media/Sid Meier's Civilization VI and set EnableTuner to 1 (for the FireTuner)?  Maybe that'll cause the lua log to start showing up as well.
I have been trying on and off for the past couple of weeks to get Linux running in the Windows Subsystem for Linux environment; I managed to get Steam installed and have it download Civ, but haven't yet succeeded in getting Civ 6 to actually launch.  Steam has some sort of issue where it literally works once - when I first install it - subsequent times there's this weird error and I can't get it to launch again unless I remove the ~/.steam folder
I can get SteamCmd to run, but I can't get it to launch Civ (it givesme something about invalid configuration).  As a relative newbie to Linux... I have no idea why y'all like it. :smile:

@the-m4a Yeah - I've had that 'EnableTuner' set to 1 for a while now, and still no lua log.
I think I'm resigning myself to the fact that Aspyr and Fireaxis don't really care that much about their Mac and Linux ports, given their responsiveness on the issues that we see. I think Fireaxis will need to make Civ7 multiplatform by default (and not rely on the porting services of a third party) in order for me to take an 'early' risk on buying that when it makes an appearance.
I'll admit that using Linux can be frustrating at times, but for me I converted over from Windows after Win8 came out. Did not like that interface at all. And, I didn't like a lot of what Microsoft was doing with Windows in general. One of the things keeping me on Windows back then was MS Office, but around that time LibreOffice became good enough for my needs. Other than that, (and being a coder all my life), I also prefer the philosophy of open source code. I think the world would be a 'better' place if propriety software had a lot smaller role (I'm not saying all software has to be open source, but if I find a bug I have a chance to contribute to fixing it, which I have done in the past - a bit like this mod!).
I'm not sure how ready Windows Subsystem for Linux is for those demands and expectations that you're placing on it!  :-)

Hah my only demand is to get me into Civ, it doesn't have to look pretty.  I just don't know enough to know if I can get there or not... I got to the point where I saw the intro screen, but I think once I get somewhere that requires DirectX 11... it goes boom and just shows me a white screen. :/

I wonder if there's a way to use telnet to pretend to be the FireTuner?

@the-m4a I'm not familiar with FireTuner - do you have any links?

FireTuner is part of the “Sid Meier’s Civilization VI Development Tools” item from Steam, which includes the FireTuner and Steam Workshop uploader and the like (see https://steamdb.info/app/404350/ )… which apparently does not have a Linux version. :/
Anwyay, the FireTuner is just a front end for interacting with the Game engine in some fashion – the console part of the FireTuner shows the same information that we’d get out of the Lua.log file, which is why I was curious about it.  The connection to Civ VI that the FireTuner makes is via TCP – port 4318 – which made me curious if If there’s a way to use telnet to behave like the console.  If I get the chance tonight or in the next few days I’ll fire up wireshark and see if I am able to capture loopback traffic and see what the FireTuner does when it makes that connection.
I also forget – did we take a look at the UserInterface.log file?  (I’m responding from email instead of on the GitHub site, so I don’t’ have access to history at the moment)
Sent from Mailhttps://go.microsoft.com/fwlink/?LinkId=550986 for Windows 10
From: Russell<EMAIL_ADDRESS>Sent: Monday, October 12, 2020 7:58 AM
To<EMAIL_ADDRESS>Cc<EMAIL_ADDRESS><EMAIL_ADDRESS>Subject: Re: [civfanatics/CQUI_Community-Edition] Does not work easily with linux (#36)
@the-m4ahttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fthe-m4a&data=02|01||50d8c602f5034cbdd0f608d86ebf45ad|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637381115066009893&sdata=0wQSf0kjABkO12b4jQsw443iq0JdMiVTMtkY4qrQ11U%3D&reserved=0 I'm not familiar with FireTuner - do you have any links?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcivfanatics%2FCQUI_Community-Edition%2Fissues%2F36%23issuecomment-707171896&data=02|01||50d8c602f5034cbdd0f608d86ebf45ad|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637381115066009893&sdata=Vxo%2BSqlWtL1UxbY%2BVZEgO8md1BnPIxeGJD2H0RpTO5E%3D&reserved=0, or unsubscribehttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FACDBNOG5HMY7HSRDARSVOATSKMKRBANCNFSM4NZ7MP7A&data=02|01||50d8c602f5034cbdd0f608d86ebf45ad|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637381115066019889&sdata=TrUzR1ESrZGzZ3DzkzQjA8mAX5GGQZKiv7f%2F2fEfbXc%3D&reserved=0.

I'm not seeing anything useful in the UserInterface.log file. I've previously tried searching all the log files for some helpful errors, but with no luck.
...
UserInterface.log


argparse: 2.6 -> 2.9

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/argparse/versions.
meta.description for argparse is: "Argument Parser for Modern C++"
meta.homepage for argparse is: "https://github.com/p-ranav/argparse"
meta.changelog for argparse is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.7 with grep in /nix/store/0x75alj1a6yvmqz0wng3845n7x62g6jr-argparse-2.7
found 2.7 in filename of file in /nix/store/0x75alj1a6yvmqz0wng3845n7x62g6jr-argparse-2.7

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
argparse

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/0x75alj1a6yvmqz0wng3845n7x62g6jr-argparse-2.7 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A argparse https://github.com/r-ryantm/nixpkgs/archive/1461cdf7f3d7deeb0c1bf32b48277a20d0daa89c.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/0x75alj1a6yvmqz0wng3845n7x62g6jr-argparse-2.7
ls -la /nix/store/0x75alj1a6yvmqz0wng3845n7x62g6jr-argparse-2.7/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

argparse

Maintainer pings
cc @2gn for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/p-ranav/argparse/releases.
meta.description for argparse is: "Argument Parser for Modern C++"
meta.homepage for argparse is: "https://github.com/p-ranav/argparse"
meta.changelog for argparse is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.8 with grep in /nix/store/vpjiin74ffd36jqikwg23rj1pn0knfw9-argparse-2.8
found 2.8 in filename of file in /nix/store/vpjiin74ffd36jqikwg23rj1pn0knfw9-argparse-2.8

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
argparse

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/vpjiin74ffd36jqikwg23rj1pn0knfw9-argparse-2.8 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A argparse https://github.com/r-ryantm/nixpkgs/archive/c20773d806d74b9232ea2389b6680384b3fa4c87.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/vpjiin74ffd36jqikwg23rj1pn0knfw9-argparse-2.8
ls -la /nix/store/vpjiin74ffd36jqikwg23rj1pn0knfw9-argparse-2.8/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

argparse

Maintainer pings
cc @2gn for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/p-ranav/argparse/releases.
meta.description for argparse is: "Argument Parser for Modern C++"
meta.homepage for argparse is: "https://github.com/p-ranav/argparse"
meta.changelog for argparse is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.9 with grep in /nix/store/hhl1shia3xrnryyrfcgzb2wp1dnicdzf-argparse-2.9
found 2.9 in filename of file in /nix/store/hhl1shia3xrnryyrfcgzb2wp1dnicdzf-argparse-2.9

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
argparse

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/hhl1shia3xrnryyrfcgzb2wp1dnicdzf-argparse-2.9 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A argparse https://github.com/r-ryantm/nixpkgs/archive/a3ebcb89f6ef66597cc04790eecf5d76897592bd.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/hhl1shia3xrnryyrfcgzb2wp1dnicdzf-argparse-2.9
ls -la /nix/store/hhl1shia3xrnryyrfcgzb2wp1dnicdzf-argparse-2.9/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

argparse

Maintainer pings
cc @2gn for testing.


Ensure that the binding knows the name of the property or named formula it's on, if the name resolver had that information

In Canvas Apps, the binding has information about which property it corresponds to, if it's a control property. However, this isn't present for named formulas. Ensure that the property name or named formula name is added, along with the entity information that's already present.

✅ No public API change.


why used the requests module

Maybe the pycurl is better than it?

Answered in https://github.com/locustio/locust/issues/377#issuecomment-173192333


Create a function to obfuscate phone and email of the user

ProfileDiff.js Controller

User.js Controller

Create a function for these 4 lines as they are doing the same thing.

Assigning this issue to myself.


Explorer - add create strategy CTA

as a user, when viewing a specific pair, i would like to have the option to create a similar strategy directly from this view.
flow:

visit explorer page
view all strategies for a specific pair (this is only relevant when viewing a specific pair)
see the option to create new strategy
on click -> open the create strategy flow pre selecting the base and quote tokens as the viewed pair (viewing eth/usdc -> eth base, usdc quote token)

@Costa769 missing mockup


Bio.Application deprecation warning

With recent versions of the Bio package (1.7.0) we have a deprecation warning saying:
Due to the on going maintenance burden of keeping command line application
wrappers up to date, we have decided to deprecate and eventually remove these
modules.

We instead now recommend building your command line and invoking it directly
with the subprocess module.
  warnings.warn(
/Users/francesco/miniconda3/envs/odt/lib/python3.10/site-packages/Bio/Application/__init__.py:40: BiopythonDeprecationWarning: The Bio.Application modules and modules relying on it have been deprecated.

This warning occurs during the Oligo Sequences Generation step.

Fixed by #68


Cython syntaxhighlighters fixes

Fix for @rlaverde comments on #4210.

Don't worry. I'll apply these fixes in PR #4211.


[Bug]: The app crashes when it performs a refresh token operation.

General Info

[X] I checked for similar bug report
[X] I am using the latest version
[X] I checked the troubleshooting page for similar problems
[X] I enabled logging and checked the logs

Version(s)
bom:2.1.3
Target(s)
Android
When I use the app for about an hour and I refresh token, whether manually or automatically, the app crashes immediately.
This issue happened to me several times.
D  Request failed with Connect timeout has expired [url=https://example.com/auth/v1/token?grant_type=refresh_token, connect_timeout=unknown ms] E  FATAL EXCEPTION: main    Process: com.otakio, PID: 17825    io.github.jan.supabase.exceptions.HttpRequestException: HTTP request to http://localhost (POST) failed with message: Connect timeout has expired [url=https://example.com/auth/v1/token?grant_type=refresh_token, connect_timeout=unknown ms]       at io.github.jan.supabase.network.KtorSupabaseHttpClient.request(KtorSupabaseHttpClient.kt:55)       at io.github.jan.supabase.network.KtorSupabaseHttpClient$request$1.invokeSuspend(Unknown Source:15)       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)       at kotlinx.coroutines.EventLoop.processUnconfinedEvent(EventLoop.common.kt:69)       at kotlinx.coroutines.internal.DispatchedContinuation.resumeWith(DispatchedContinuation.kt:347)       at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)       at io.ktor.util.pipeline.SuspendFunctionGun.access$resumeRootWith(SuspendFunctionGun.kt:11)       at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:55)       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)       at android.os.Handler.handleCallback(Handler.java:958)       at android.os.Handler.dispatchMessage(Handler.java:99)       at android.os.Looper.loopOnce(Looper.java:205)       at android.os.Looper.loop(Looper.java:294)       at android.app.ActivityThread.main(ActivityThread.java:8177)       at java.lang.reflect.Method.invoke(Native Method)       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)       Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@c58efa4, Dispatchers.Main.immediate]
Steps To Reproduce (optional)
No response
Relevant log output (optional)
No response

So what exactly do you call? The app shouldn't crash for automatic refreshes, as all exceptions are catched anyway. For the exception, this just looks like a timeout.

When I want to refresh the token, I use this code:
client.auth.refreshCurrentSession() client.auth.retrieveUserForCurrentSession(updateSession = true)
Is there any Problem with my code?

Not really, but why do you want to refresh the session yourself?

Sometimes the token is not refreshed automatically, so I refresh it myself.
For example, if the token expires after an hour and I use the app for an hour, the token expires and a timeout error appears in all requests, so I need to refresh it myself.

I changed the validity period of the token to be valid for a week and not an hour and the issue seems to have been resolved.
Additionally, I now refresh the token when I start the app.
Since the issue is solved, I will close it.


Add Issues, Milestones, and Users to db schema

Concept ACK. Whatcha cooking up, Pierre?

@jnewbery last month I was digging around the issues, thinking about when and what #2 bot would tweet about, but I'm putting that on the backburner in favor of ackparsing

:kissing: :ok_hand:


ReUse OutputStream

Hi,
I am trying to get FST work in our project. When I send an object using this method the socket also gets closed and I cannot send another object.
public void mywriteMethod( OutputStream stream, MyClass toWrite ) throws IOException
{
    FSTObjectOutput out = new FSTObjectOutput(stream);
    out.writeObject( toWrite );
    out.close(); // required !
}

I allready tried flush() and resetForReUse(),instead of close(), but then I get an java.io.IOException: Failed to read the next byte.
How can I send more then one object and reuse the passed OutputStream?
Thanks.

See the TCPObjectSocket (or so) class for an example


Changes to make the fast test run on a kubernetes pod

Exposing the Go agent service account into the instance running the tests.

:+1:


Update CHANGELOG.md

Adds training_state and Optax info to the changelog

Codecov Report

Merging #1280 (3b80a64) into master (9696c73) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1280   +/-   ##
=======================================
  Coverage   82.26%   82.26%
=======================================
  Files          65       65
  Lines        5295     5295
=======================================
  Hits         4356     4356
  Misses        939      939

Continue to review full report at Codecov.

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


Omit from #31115 makes all properties required

Since the changes of #31115, Omit<T, K> makes all properties of T required.

TypeScript Version:  3.5.0-dev.20190501, 3.4.5

Search Terms: omit optional
Code
type A = {
    a: number;
    b?: string;
};

type B = Omit<A, 'a'>;

Expected behavior: B is { b?: string } ({ b?: string | undefined } with strictNullChecks).
Actual behavior: B is { b: string } ({ b: string | undefined } with strictNullChecks), with property b required.
Playground Link:  link
pin @DanielRosenwasser

Just I'd like to remark that, as the playground link shows, when Omit is defined in terms of Pick the produced type preserves optional properties as optional; when it is changed to is own mapped type all properties become required.

Can we reopen #31104 then?   I had some other ideas about it, if it matters


Sort a stack -documentation added

Description 📜
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
Fixes #7164

Type of change 📝

[ ] Au#dio (Should be in mp3 format Includes speech clarity, Concise ,Low distortion)
[ ] Vi#deo (Animations, screen-recordings, presentations and regular explanatory films are all possibilties etc)
[x] Documentation (Content Creation in the form of codes or tutorials)
[ ] Other (If you choose other, Please mention changes below)

Domain of Contribution 📊

[ ] Android Dev #(Flutter)
[ ] Android Dev #(Java)
[ ] Android Dev #(Kotlin)
[ ] Backend Dev #(Java)
[ ] Backend Dev #(.NET)
[ ] Backend Dev #(PHP)
[ ] Backend Dev #(Python)
[ ] C/#CPP
[ ] Competitive #Programming
[ ] Cyber #Security
[x] DSA
[ ] Data#base
[ ] Datascience with #Python
[ ] Datascience with #R
[ ] Frontend Dev #HTML/CSS/JS
[ ] Frontend Dev #React/Angular/Vue
[ ] Go#lang
[ ] Interview #Prep
[ ] Java_#Domain
[ ] JavaScript_#Domain
[ ] ME#RN
[ ] Machine #Learning
[ ] Open #Source
[ ] Python_#Domain
[ ] Ru#st
[ ] Statis#tics
[ ] UI/#UX

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I'm GWOC'21 contributor

@Muskan-creator @nimisha-yadav Kindly review and merge my pr.

Hey @uzma024 .The issue was for documentation  not video contribution

I am not able to create changes here and its a bit too messy. So I have created another pull request.
Kindly review it.
https://github.com/girlscript/winter-of-contributing/pull/7959#issue-1054875856


Stripe element add new card

What
Credit card field in "Add Card" screen should use STPPaymentCardTextField Stripe element, and it is configured to look like the designs.

See 👀

TODO ⏰

[x] CC Image Color is different from design @dannyalright
[ ] Snapshot Tests
[x] Should 'Use Camera' be included in this? @nnekab
[ ] Feedback

CC Image Color is different from design

It's different because you're using the one from Stripe. Right? That's cool by me.

Looking good visually. Any way we can get the CVC text to line up to the same right-margin as the Name in the field above? I'm guessing not, as it probably gets its positing from the card number and expiry date.
Could you please tell me the color for the placeholder? It's the default iOS color for placeholder text, right?

The color is UIColor.lightGrayColor or #AAAAAA. It's not the default iOS Color for placeholder text. This is the default for the stripe element placeholder text.

@ifbarrera  @kickstarter/native-squad  g2g?

Could we hold off until our after our color call?
On Tue, Nov 13, 2018 at 11:11 AM Christella<EMAIL_ADDRESS>wrote:

@ifbarrera https://github.com/ifbarrera @kickstarter/native-squad
https://github.com/orgs/kickstarter/teams/native-squad g2g?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kickstarter/ios-oss/pull/473#issuecomment-438324064,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC9f-Ye_ocW1jCMGP2EjQ2Ote3ibC5_Eks5uuu8sgaJpZM4YRie3
.

@cdolm92 can you make this PR against feature-payment-methods? Lgtm after that 👍


Is there a reason that pytorch-forecasting seemingly unnecessarily saves loss and logging_metrics multiple times?

PyTorch-Forecasting version: 1.1.1
PyTorch version: 2.4.1
Python version: 3.12.5
Operating System: windows

C:\...miniconda3\envs\envpt\Lib\site-packages\lightning\pytorch\utilities\parsing.py:208: Attribute 'logging_metrics' is an instance of nn.Moduleand is already saved during checkpointing. It is recommended to ignore them usingself.save_hyperparameters(ignore=['logging_metrics']).
This is caused by self.save_hyperparameters() in init method of TemporalFusionTransformer, because save_hyperparameters() uses inspect and frame to identify all the hyperparameters,
What's the reason to keep it or shall we add handling in init?

Maybe a question for @jdb78.
@dr-upsilon, is this happening in a way that is duplicative with lightning core?

Maybe a question for @jdb78.
@dr-upsilon, is this happening in a way that is duplicative with lightning core?

Yes I think so. BaseModel inherits from HyperparametersMixin from lighting.pytorch.core.mixins.hparams_mixin.

Looked through this multiple times and I cannot come up with a good reason (without hearing @jdb78 original rationale).
I suppose it is something that changed between different versions of lightning, so it made sense once but is now duplicative.
Would you like to contribute a PR?


Support for gcloud subnet in different project

Description
This PR adds the support for GKE clusters with subnets in different projects

/rebase test=true

/rebase test=true

/rebase test=true


Babel 7 + babel-preset-react-app@next but with TypeScript

Hello there 👋 ,
I'm trying to unify my building, currently TypeScript & Babel, under Babel 7,
I'm using babel-preset-react-app@next, to keep everything nice and updated, but, when I try to mix with @babel/preset-typescript, I've the following error:
Module build failed: Error: Cannot combine flow and typescript plugins.

Seems it's because we've the @babel/preset-flow built in in babel-preset-react-app,
My questions is:

Could babel-preset-react-app make a opt-in/out for @babel/preset-flow?

How to reproduce
Keep in mind, below, there's no tsconfig.json yet, because the project doesn't even compile with both presets describe above

package.json file:

  "dependencies": {
    "@babel/core": "^7.0.0-beta.38",
    "@babel/preset-typescript": "^7.0.0-beta.38",
    "babel-loader": "8.0.0-beta.0",
    "babel-preset-react-app": "next",
    "babel-runtime": "^6.23.0",
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "webpack": "^3.10.0"
  }

.babelrc

{
  "presets": ["react-app", "@babel/typescript"]
}

webpack.config.js

const path = require("path");

module.exports = {
  entry: "./main.js",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "dist")
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        use: {
          loader: "babel-loader"
        }
      }
    ]
  }
};

main.js

import React from "react";
import ReactDOMServer from "react-dom/server";

const App = () =>
Hello Wolrd!
;

console.log(ReactDOMServer.renderToString(<App />));

TypeScript is now officially supported as of Create React App 2.1. Read the release notes to get started!


added waitForExpect

What: Added waitForExpect with a test.

Why: Based on the #21 discussion

How: Simple import/export :-)

Checklist:

[ ] Documentation
[x] Tests
[ ] Ready to be merged
[x] Added myself to contributors table

The documentation is not added - as I'm curious first to how @kentcdodds wants to argue for a usecase with this library - I can add documentation based on that. Otherwise - the testcase I added I think pretty clearly explains how and when it should be used.
Also - I need to add typings, so I will first do that and again update the PR.

Definitely! Would you want the doc to be similar to the test I added for the functionality? Meaning - showing an example like that?
As for the wait-for-expect go ahead whenever you have a time :) It's tiny.
Thanks!

I've been thinking about this more and I'm starting to wonder whether waitForExpect should actually simply be: waitFor(() => somethingThatReturnsATruthyValue())
This way you could do:
await waitFor(() => queryByLabelText('username'))

getByLabelText('username').value = 'my-username'
expect(getByTestId('username-display')).toHaveTextContent('my-username')

I like this better because it avoids nesting. I realize you can accomplish this already:
await waitForExpect(() => expect(queryByLabelText('username')).not.toBeNull())

getByLabelText('username').value = 'my-username'
expect(getByTestId('username-display')).toHaveTextContent('my-username')

But I think changing this to waitFor instead will result in fewer people nesting assertions. What do you think?

Hmm.. I definitely see your point of not nesting tests, but I'm not sure.. Keeping aside the fact that with reasonably long assertion it will become nested by prettier anyway.
I think I'd prefer to use expectations instead of truthy value, mostly to keep consistent syntax.
Sure, I can do
await waitFor(() => getByTestId('fetchedMessage').text === 'My fetchedMessage')

but then I:
a) lose the familiar expectations that I might want to use.. for example expect().toMatch() with regexp becomes tricky. We also lose all the expectations extends that were recently introduced for this tool. Also - we can't wait for a snapshot to match, if someone wants to do that.
b) lose the nice error message when the wait fails. So I wouldn't have "expected myFetchedMessage to equal differentMessage" ,I would just have a timeout.
c) let's say I do two graphql queries, or even normal rest calls, they can come back in different orders, if I can just put expectations for both in one waitForExpect block then jest will wait for both of them to pass (or point out nicely which one failed). Which I think is against your idea of not-nesting.. :)
I think this non-nesting idea, and doing things like:
await waitForExpect(() => expect(queryByLabelText('username')).not.toBeNull())

could be something you/we emphasis as best-practices.

Those are all good points.
Ok, so my next concern is that the implementation is overly complex. Is there a reason the implementation isn't simply:
function waitForExpect(expectation, {timeout = 4000, interval = 40}) {
  const startTime = Date.now()
  return new Promise((resolve, reject) => {
    let intervalId = setInterval(() => {
      try {
        expectation()
        resolve()
      } catch(error) {
        if (Date.now() - startTime >= timeout) {
          return reject(error)
        }
      }
    }, interval)
  })
}

I'm pretty sure that should work :)

How about:

module.exports = function waitForExpect(
  expectation,
  timeout = 4000,
  interval = 40
) {
  const startTime = Date.now();
  return new Promise((resolve, reject) => {
    let intervalId;
    function runExpectation() {
      try {
        expectation();
        clearInterval(intervalId);
        resolve();
      } catch (error) {
        if (Date.now() - startTime >= timeout) {
          reject(error);
        }
      }
    }
    flushPromises().then(() => {
      setTimeout(runExpectation(), 0);
      intervalId = setInterval(runExpectation, interval);
    });
  });
};

I don't think that will work first of all because you're never clearing the interval. Also, I think including flushPromises is not necessary. Is there a reason my example wont work?

Oh, sorry, I missed your comment. Here's my adjusted solution:
function waitForExpect(expectation, {timeout = 4000, interval = 40}) {
  const startTime = Date.now()
  return new Promise((resolve, reject) => {
    // attempt the expectation ASAP
    try {
      expectation()
      resolve()
    } catch(ignoreError) {
      // ignore the error here and try it in an interval
    }
    const intervalId = setInterval(() => {
      try {
        expectation()
        clearInterval(intervalId)
        resolve()
      } catch(error) {
        if (Date.now() - startTime >= timeout) {
          return reject(error)
        }
      }
    }, interval)
  })
}

Thanks. I did clear the interval in the runExpectation function.
This new version will still wait for the timeout interval now for mocked things. So,
  await waitForExpect(() => {
    expect(getByTestId("title").textContent).toMatch("Title");
  });

in my workshop will now take 40 ms instead of ~3ms. Those numbers add app quickly:)
as for flushing promises - same reason as above - but maybe setTimeout(()=> {}, 0) will be enough? I'm not sure

Maybe something like this:
function waitForExpect(
  expectation,
  timeout = 4000,
  interval = 40
) {
  const startTime = Date.now();
  return new Promise((resolve, reject) => {
    function runExpectation() {
      try {
        expectation();
        resolve();
      } catch (error) {
        if (Date.now() - startTime >= timeout) {
          reject(error);
        }
        setTimeout(runExpectation, interval);
      }
    }
    setTimeout(runExpectation, 0);
  });
};

I had a big thing written out, then saw you updated your example and that works just fine for me :+1:
I'd prefer to include that utility directly in the react-testing-library rather than depend on it in another package I think though. What do you think?

that is fine with me, it will add some complexity and extra tests to this library, a bit of extra noise that I didn't think you would want. If you are fine with that I can add them to this PR, along with the agreed on implementation.
https://github.com/TheBrainFamily/wait-for-expect/blob/master/src/waitForExpect.spec.js - those are the tests, they are passing (I'd have to adjust the last one that expects the number of retries when you change the interval time)
I think I will still keep the waitForExpect npm package out there though - looks like it's getting a bit of a traction, even though I didn't even tweet about it. It's useful for other test tools as well :)

I suppose if you update the implementation of the package we can use your package instead (as this PR shows). In the docs you can have a simple example then point to the package for your docs. Looks like there's merge conflict in the README. You should be able to fix it by running: npx kcd-scripts contributors generate.
Let me know when everything's updated and ready to go. Thank you very much @lgandecki!

Thanks a lot @kentcdodds , it was great "pairing" with you :-)
I've sent you an invitation to become an admin of that package - I figured that if you are going to directly depend on it from this one you might feel more comfortable having control as well.
I've done the required changes in the package. I want to put a bit of a time rewriting it to typescript so we can import the types directly here, to export them from your typing file. If I can't get it to work properly in ~hr or two, I will just use custom typing for now.
Once I'm done with that I will update the docs and resolve conflicts.

I've added the typescript and updated the docs, but I'm sure you have a different idea about how to document this functionality, feel free to give me some direction, or it might be easier if you just do it your style - since the whole documentation is in a way written as one your "articles", it's hard to imitate it :-)
I also pinpointed the dependency version to a current one - I don't expect many changes in that tool since it's so tiny and well tested, but also want to make sure we never accidentally break this library when updating wait-for-expect.

Awesome. Thanks for the updates! I'm going to make a few updates of my own. I'm going to deprecate flushPromises (we can remove it in a future breaking change). I'd rather not have two ways to do the same thing and this one's superior I think. So I'm going to just update the README slightly. Thanks!

Cool :-) Yeah, I figured it might be easier for you to just smooth things out on your own from here. Thanks a lot!

On second thought, I'll just merge this as-is and I'll go ahead and do the deprecation in another PR because I'll want to clean up the tests as well. This is so great! Thank you very much for your help @lgandecki!

Hey @lgandecki, are you around? Could you join me in chat really quick?

https://gitter.im/kentcdodds

Actually I'm pinging you in twitter DMs. If you could check in with me there I have a quick question.

Thanks so much for your help! I've added you as a collaborator on the project. Please make sure that you review the other/MAINTAINING.md and CONTRIBUTING.md files (specifically the bit about the commit messages and the git hooks) and familiarize yourself with the code of conduct (we're using the contributor covenant). You might also want to watch the repo to be notified when someone files an issue/PR. Please continue to make PRs as you feel the need (you can make your branches directly on the repo rather than your fork if you want). Thanks! And welcome to the team :)

Thank you, Kent! I appreciate the invitation. I will love to spend some time working on this library. Let's see if there is enough work here for me to actively contribute. :-)
Do you have any TODOs/plans about it? In other words - if you had unlimited time what would be the things you would like to work on here next?
Or do you want to keep this minimal and are rather happy with the current state of it and most of the other things you would like to have as pluggable packages?
One thing I'm not sure about is that since we are getting so close to end-to-end/use-it-as-user-would kind of tests where is the boundary? When do you see yourself using cypress instead of this?
I've been struggling with this concept for the last few months and started working on this idea of Universal Page Objects.. where you define the structure of your pages and are able to run the same tests in cypress and in enzyme.
To show you an example:
https://github.com/TheBrainFamily/TheBrain2.0/blob/develop/testing/web/features/questions.test.js#L75
This test works exactly the same in cypress (with it's super nice debugging capabilities - TDD/feature development) and enzyme (with it's super speed and immediate feedback - refactoring).. I've actually aded puppeter for parallelization in CI and testcafe for running on any browser (but both should be deprecated by cypress ability to parallelize and run different browsers so I won't focus on them anymore)
the pageobjects like the question page:
https://github.com/TheBrainFamily/TheBrain2.0/blob/develop/testing/web/features/pageObjects/QuestionsPage.js
use common API that I create like this:
https://github.com/TheBrainFamily/TheBrain2.0/blob/develop/testing/testHelpers/EnzymeElement.js
https://github.com/TheBrainFamily/TheBrain2.0/blob/develop/testing/testHelpers/EnzymeDriver.js (btw you can see here where the inspiration for waitFor came from... ;-) )
https://github.com/TheBrainFamily/TheBrain2.0/blob/develop/testing/testHelpers/CypressElement.js
https://github.com/TheBrainFamily/TheBrain2.0/blob/develop/testing/testHelpers/CypressDriver.js
I understand that this is out of scope for this package but I'd love to hear your thoughts here. Where is the boundary. How do we decide what type of tests to write. Or do you think this is a good abstraction and it might be a good idea to write tests in a way that they can be run using different runners/in different contexts?

Hey @lgandecki,
Thanks for asking! I don't have a whole lot of other TODOs for this project. Maybe some things will come up to improve/add to our query selectors, but I expect that'll be the biggest part of everything. I'm also considering perhaps extracting most of this out and having ports for react, vue, ember, angular, etc. But I don't plan to do that work personally. I use React so that's the only one I personally care about.
As for page objects, Cypress has docs on the page objects pattern: https://docs.cypress.io/faq/questions/using-cypress-faq.html#Can-I-use-the-Page-Object-pattern I was surprised by this fact because I actually share the perspective @brian-mann (Cypress creator) has on the pattern: https://github.com/cypress-io/cypress/issues/198#issuecomment-265486306
So I'm not personally interested in enhancing the page objects pattern experience with this library. However, I am interested in making a new project that uses the queries found in this project to enhance the testing experience. I've already played around with this in my testing workshop:
https://github.com/kentcdodds/testing-workshop/blob/d605a2ab8f1ba0986271d062b7770db19a5844f6/cypress/support/commands.js#L2-L43
I'm actually pretty pleased with that getCommandWaiter function. Seems like a pretty good solution to the problem (though I expect there's a more cypress way to do this).
Anyway, to answer your question I think that most of the work in this area will be around other projects and maybe extracting pieces of this project out for reuse in others :) Which now I think about it I may do to facilitate a cypress utility that uses the queries :)


consider adding a way to move all workspaces on a monitor to another one

something like moveworkspacesfrommonitor X Y where X is a monitor and Y a monitor, a direct or next/previous. That would allow to clean up everything on a monitor (useful when using dpms off eDP-1 in a script)

kinda cringe

I can script something but then I would need to know the dpms status when calling hyprctl monitors

thanks, alien

11ce4689963f52a72817a9395ecccc1b034447a7

works. thanks!


Wildcard SSL certificate expiration preventing application initialisation

The wildcard SSL certificate for appcenter.ms has expired.
Apps utilising the AppCenter SDK do not initialise correctly due to an SSL validation check failure when attempting to access config.appcenter.ms

Now that's embarrassing.
We did rotate this certificate a while ago but omitted this endpoint (which is a CDN). The new certificate is being propagated through the network already.
Sorry for that.

Thanks @yoannchaudet - I can confirm the new cert is now available and valid.


wrong download

everything worked fine until:
XS62ESP1030 Patch was not found.
Retrieving URL for download  http://support.citrix.com/supportkc/filedownload?uri=/filedownload/CTX201635/XS62ESP1030.zip&noAuth=true
URL Fetched Starting Download
XS62ESP1030.zip&noAuth=true  already exists skipping download\n
The uuid you supplied was invalid.
type: pool_patch
uuid: 108b9d07-0dcf-4ae8-bf58-b3b5b940c3d4
Unziping  XS62ESP1030.zip&noAuth=true
[XS62ESP1030.zip&noAuth=true]
End-of-central-directory signature not found.  Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive.  In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of XS62ESP1030.zip&noAuth=true or
XS62ESP1030.zip&noAuth=true.zip, and cannot find XS62ESP1030.zip&noAuth=true.ZIP, period.
Uploading to Xen Server
Operation failed. Error: file 'XS62ESP1030.xsupdate' does not exist
Applying Patch
The uuid you supplied was invalid.
type: pool_patch
uuid: 108b9d07-0dcf-4ae8-bf58-b3b5b940c3d4
Verifying Installation
XS62ESP1030 Failed to Install please check it manually. Please fix the issue and run this program again

Thie bug is caused by the updates.xml file containing HTML entities in the urls
For example:
XS62ESP1030.zip&noAuth=true
However, when passed to cURL, it should be:
XS62ESP1030.zip&noAuth=true
Otherwise, cURL downloads the Citrix login page, rather than the update itself.


Bootable USB stick creation is not documented for Windows

introduced in #64

but why would you make a bootable usb to play ping pong?

@golam71 using that logic, why would you write a boot loader game in 2023?

@golam71
why exist, self delete


Animated Gif Player Performance improvements

I mostly want to list ideas here for performance improvement ideas. The first idea I had is taking the image loading time into account for the delay. At the moment it loads the images, then does a delay. This change should have a significant impact.

good idea, time.monotonic() ftw :)

time.monotonic is now implemented. I'll keep this open for a while longer to continue listing ideas.

A side note on speed improvements: I first tried this repo without numpy installed and a call image() lasted around 0.58s, I nearly gave up, until I saw the if/else in the image function. After installing numpy it only took 0.075s so this is almost 8x as fast as without numpy.
IMO you could/should output a warning when numpy is not available as I was almost giving up this repo because of speed issues.

@philippkeller we should import numpy in the main script to 'force' it to install, wanna submit that as a PR?

I also added a section to the guide the other day suggesting NumPy be installed installed in the setup, but I like the suggestion of just adding an unused import.

I think I'm going to close this. I was able to run this at a good speed on the Pi 4. The latest SPI addition in PureIO really helped and the code is pretty optimized at this point.


Dark Theme doesn't remain after coming back from the sub link.

Describe the bug
When we click on any repo link we go another page but if we come back again dark theme doesn't remain.
Expected behavior
A dark theme should remain after coming back from repo link.

fixed in #16