Testing

Currently mineflayer has very little tests and lot of functionalities. In order to figure out what works and what doesn't in order to fix the problem, it's needed to test manually the examples which is not very efficient.
It would be nice to have a way to test various functionalities present in the examples automatically, for example :

reading the username and message in the chat
writing in the chat
knowing what blocks are around the bot
digging a block
...

I think a good way of testing all this would be to assume a minecraft server is running at a given host and port and test whether :

it's crashing : that's basic but really a lot of things crash currently so that would be useful
it works : by checking the state of mineflayer structures (for example checking the usernames are not undefined, that the blocks are not undefined, that a bot has indeed changed after digging that block)

Testing all the functionalities is a big thing to do, but having a simple framework for adding test and adding a test after something has been fixed would be nice.
I think the end results of this testing would be a generated list of what works and what doesn't, so it would be easier to contribute.
Tell me what you think :)

We should ensure two things :

Internal consistency. For this, we should unit test functions with values we assume correct.
External consistency. For this, we could either write a simple node-mc-proto server implementing the functionality required for the test, and make sure everything works properly.

I'm sort of against using a minecraft server for this, since node-minecraft-protocol is already supposed to be battle-tested as far as the protocol is concerned.

The problem with "writing a simple node-mc-proto server implementing the functionality required for the test" is mineflayer is high level, so a simple action mineflayer-wise might mean a lot of different part involved server wise. Would it really be possible to test significant things without having to implement the whole minecraft server ?
node-minecraft-protocol is tested protocol wise, but it is not tested about the higher level things mineflayer provide, for example parsing of the chunk, handling the chat messages, ...
But I agree it might be better not to use a minecraft server, it would make the test faster. If it can be done, that would be nice.

I'm thinking the exact opposite, the best idea is to use the notchian server. The reasoning for this is we don't write mineflayer or node-minecraft-protocol to be compatible with itself, we write it to be compatible with minecraft. Testing mineflayer on our custom built server is pointless because this is not where mineflayer will be used in the real world.
Ideally we should set up a map file with a set of chests, containers, blocks, items, etc, designed to test our bot. The map file can easily be brought onto later server versions to test without needing to re-write a testing server, and we would know how the bot interacts with this test will reflect the way the bot responds to real world servers.

The big problem with using a minecraft server as a test bed is that it's completely unreliable. I had to entirely remove the timeouts from node-minecraft-protocol's test (well, actually, I made the timeouts something like 40 minutes) because minecraft_server could take up to 10 minutes to start, accept connections, log a player in, etc...
There is a lot we can test without having to do too much work. Chunk loading, inventory management, physics, etc... can all be tested very reliably with a simple node-minecraft-protocol server. More complicated behaviors might need a real minecraft_server, but I def think we should implement as much as possible without it.

I'd like to propose a different approach, which is having much of the testing automated, but not all of it.
I'm imagining you would spin up a server manually, and log yourself in with the notchian client, mostly to babysit the test in case something crazy happens during testing. Then you run the test bot, which tries to do everything it can in a long sequence. (This is almost exactly the process I just followed to test all the functions in the chatterbox example.)
The bot will probably need to be an op in order to give itself the items it needs to do the testing (pistons, enchanting table, etc.). The test sequence might be something like this:

using bare hands, dig down 1m, and then dig an area around it to give itself a workspace. (this tests digging and dirt entities spawning and getting collected.)
use /give to get stone, dirt, gravel, and place them in a specific configuration beside itself. (this tests placing blocks.)
use various tools (again using /give) to test that it can harvest cobblestone with the right tool, etc. (this tests equipping tools.)
test to make sure it sees gravel fall when it digs out the block below it.
place a piston and a lever, operate the lever, make sure we're getting the pistonMove event.
place a chest, put items in it, close the chest, open it, pull items out, etc. (this is currently broken).
announce in chat that the bot is testing punching, and then punch the human babysitter.
...

This plan seems fairly easy to program, and low enough effort to run the tests that if someone wants to know if everything's working (which I currently do), it's fairly easy to get an answer quickly. (Granted it's not as easy as a fully-automated test.) I'm imagining a successful test run would take less than a minute, and painless enough that developers want to run it before pushing their commits.
This proposal has an answer to the problem of trying to have reproducible tests in an inherently random game, which is the human babysitter. For example, if the bot spawns on the edge of a lake, and doesn't know how to dig itself into a suitable testing workspace, the human can identify the problem, and fix it in various ways: leading the bot away from the water, placing dirt around the bot, rerolling the world, etc. This is obviously suboptimal, but hopefully human intervention will rarely be required, making the testing worthwhile.
I didn't quite understand all the server proposals in this thread so far, but I think writing our own server is no good, because we really need to test our interaction with the real server. I think that maintaining a controlled test world is a decent idea, but I think it would be harder to maintain than a bot that creates a controlled test environment as I described above.
Obviously, this proposal is all talk for now. Let the most enthusiastic developer win!

I like that idea. This would test "real world" problems in a semi-automatic way.
We may want to also have some totally automatic tests (like this https://github.com/andrewrk/mineflayer/blob/master/test/test.js) but this semi-automatic way would probably be much faster than manually booting all the .js in examples/ , calling the commands manually, figuring out if it really worked, etc.
I think it would be nice to start with a simple one of these tests, to be able to add other ones more easily later.

Right, so having something akin to a "test" example that uses every functionality of mineflayer to make sure they work ? That actually sounds reasonable enough. We'll still need lots more of specs in the fully-automated and server-independent testing though.

Small idea for the bootstrapping process: instead of the first action being digging, first action could be giving itself 999 dirt and then jump-building a platform in the sky to test. the sky is pretty uniform

the sky is pretty uniform

That's a good idea.
Also, instead of punching the human spectator, the test script could log in multiple bots (duh). That way, we can also test watching people die, disconnect, etc. without human involvement. (watching someone disconnect is currently broken.)

Even better idea, test in a superflat world. here are some server.properties settings that got me a completely deterministic world (as far as I can tell):
level-type=FLAT
generate-structures=false
spawn-monsters=false
spawn-animals=false
spawn-npcs=false

some server.properties settings

Unfortunately, these are only useful if #233 is implemented, as many of these settings are missing from the "Open to LAN" strategy. For example, I can't figure out how to turn off monster spawning.

how to turn off monster spawning

Ok, I figured it out, but it's dumb. You have to start playing, and then as quickly as you can type /gamemode doMobSpawning false in the chat box (while the world is running, mind you), and that prevents any more monsters from spawning.  Does it need a lot of supervision or could it be fully automated ?

it doesn't need supervision at the moment. it needs a server running where it can use cheatcodes as the username "bot". preferably, the world should be superflat with mob spawning disabled, but that isn't strictly necessary.
the test run takes about 3 seconds from start to finish, but of course that's only with some testing implemented.

I wonder if we could automate it and add it to circle ci, just like https://github.com/PrismarineJS/node-minecraft-protocol/blob/master/test/test.js.
It would be nice to be able to know whether a commit breaks such and such stuff without having to do anything.

So I added information about the tests there https://github.com/andrewrk/mineflayer/blob/master/doc/contribute.md#creating-tests
Some tests are already implemented, more test can be done following the instruction the contribute.md.
I think we can create new issues for new tests, small issues are easier to handle than fat issues like this (which are sometimes still good to start with, to talk)


Fixup docs on how to setup CertManager with LetsEncrypt

The docs on how to setup CertManager were a bit out of date. This updates the way to deploy CertManager as well as the Let's Encrypt server URLs.
Signed-off-by: Steve Sloka<EMAIL_ADDRESS>

Does cert-manager work with contour's IngressRoute CRD or just with plain-old Ingresses?

Hi @glerchundi!
If you need to use HTTP-01 validation, as of today, cert-manager only works with the existing Ingress support in Contour.  Alternatively, you could use cert-manager's Certificate resource using DNS-01 validation to provide certs for IngressRoute.
Longer-term, we're collaborating with the cert-manager team to add support for alternative ACME challenge solvers (e.g. IngressRoute)

@glerchundi, to expand a bit on Ross's comment, you can use them together by specifying the Certificate CRD manually. In that CRD you can tell cert-manager to use the contour IngressClass which will tell cert-manager to create the needed http response paths for Let's Encrypt based upon your requested fqdn's. Once this is complete you can reference the secret created by cert-manager in your IngressRoute.
Here's an example which I'm using for my site today with IngressRoutes:
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: containersteve-com
  namespace: default
spec:
  secretName: containersteve-secret
  issuerRef:
    name: letsencrypt-prod
    kind: ClusterIssuer
  commonName: stevesloka.com
  dnsNames:
  - stevesloka.com
  - www.stevesloka.com
  acme:
    config:
    - http01:
        ingressClass: contour
      domains:
      - stevesloka.com
      - www.stevesloka.com

As @rosskukulinski mentioned, IngressRoute's do not support this natively, but this is an easy workaround for now. I'm going to document this all properly soon!

@stevesloka I think you should also update the FAQ to indicate that kube-lego is deprecated in favor of cert-manager. Then you can point to your new documentation!

Thanks @stevesloka @rosskukulinski, as we're using google cloud dns (supported by cert-manager) and it seems to be fairly easy to protect/authorize a concrete recordset entry, we'll use this one + upgrade our current ingresses to the new ingressroutes.
Thanks for your pointers,


Add support for CMSIS Neural Network

Summary
the CMSIS NN software library is a collection of efficient neural
network kernels developed to maximize the performance and minimize
the memory footprint of neural networks on Cortex-M processor cores.
Project https://github.com/ARM-software/CMSIS_5
The library is divided into a number of functions each covering
a specific category:
Convolution Functions
Activation Functions
Fully-connected Layer Functions
SVDF Layer Functions
Pooling Functions
Softmax Functions
Basic math Functions

The library has separate functions for operating on different weight
and activation data types including 8-bit integers (q7_t) and 16-bit
integers (q15_t). The descrition of the kernels are included in the
function description.
More information
https://www.keil.com/pack/doc/CMSIS/NN/html/index.html
Project license : Apache 2.0 License
https://github.com/ARM-software/CMSIS_5/blob/develop/LICENSE.txt
Impact
NN
Testing
Spresense

@xiaoxiang781216 done


Fail to write file/read file.

This is by far one of the best tool. Especially for being open sourced. Much gratitude.
I'm faced with an error.

C:\Users\G\Desktop\Hyde-master>python hyde.py
Hyde: Call of Duty XAsset Compiler
https://github.com/EthanC/Hyde
[07:25:56] Loaded configuration
[07:25:56] Compiling XAssets for Call of Duty: Modern Warfare...
[07:25:58] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/accessories.json, write() argument must be str, not list
[07:25:58] Compiled 131 Accessories
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/battlePasses.json, write() argument must be str, not list
[07:25:59] Compiled 7 Battle Passes
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/battlePassItems.json, write() argument must be str, not list
[07:25:59] Compiled 25 Battle Pass Items
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/bundles.json, write() argument must be str, not list
[07:25:59] Compiled 678 Bundles
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/callingCards.json, write() argument must be str, not list
[07:25:59] Compiled 2,619 Calling Cards
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/camos.json, write() argument must be str, not list
[07:25:59] Compiled 130 Camos
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/charms.json, write() argument must be str, not list
[07:25:59] Compiled 613 Charms
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/consumables.json, write() argument must be str, not list
[07:25:59] Compiled 59 Consumables
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/emblems.json, write() argument must be str, not list
[07:25:59] Compiled 1,769 Emblems
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/equipment.json, write() argument must be str, not list
[07:25:59] Compiled 21 Equipment
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/executions.json, write() argument must be str, not list
[07:25:59] Compiled 208 Executions
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/features.json, write() argument must be str, not list
[07:25:59] Compiled 22 Features
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/gameTypes.json, write() argument must be str, not list
[07:25:59] Compiled 58 Game Types
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/gestures.json, write() argument must be str, not list
[07:25:59] Compiled 25 Gestures
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/itemSources.json, write() argument must be str, not list
[07:26:00] Compiled 4,475 Item Sources
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/killstreaks.json, write() argument must be str, not list
[07:26:00] Compiled 41 Killstreaks
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/maps.json, write() argument must be str, not list
[07:26:00] Compiled 136 Maps
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/masteryChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 19 Mastery Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/miscChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 45 Miscellaneous Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/missionItems.json, write() argument must be str, not list
[07:26:00] Compiled 15 Mission Items
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/missions.json, write() argument must be str, not list
[07:26:00] Compiled 206 Missions
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/officerChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 700 Officer Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/operators.json, write() argument must be str, not list
[07:26:00] Compiled 66 Operators
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/operatorQuips.json, write() argument must be str, not list
[07:26:00] Compiled 470 Operator Quips
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/operatorSkins.json, write() argument must be str, not list
[07:26:00] Compiled 721 Operator Skins
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/specialItems.json, write() argument must be str, not list
[07:26:00] Compiled 4 Special Items
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/splashes.json, write() argument must be str, not list
[07:26:00] Compiled 1,740 Splashes
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/sprays.json, write() argument must be str, not list
[07:26:00] Compiled 750 Sprays
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/stickers.json, write() argument must be str, not list
[07:26:00] Compiled 1,176 Weapon Stickers
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/turboChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 15 Tomogunchi Turbo Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicleCamos.json, write() argument must be str, not list
[07:26:00] Compiled 160 Vehicle Camos
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicleHorns.json, write() argument must be str, not list
[07:26:00] Compiled 29 Vehicle Horns
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicles.json, write() argument must be str, not list
[07:26:00] Compiled 25 Vehicles
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicleTracks.json, write() argument must be str, not list
[07:26:00] Compiled 32 Vehicle Tracks
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\pi_t9burst_progression.csv, invalid literal for int() with base 10: '29886786|29641733|29852991|28083123|30836845'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9standard_progression.csv, invalid literal for int() with base 10: '19611866|31447884|19440514|19163847|31732803'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9standard_progression.csv, invalid literal for int() with base 10: '24169785|18247346|19650470|21118263|20940964'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9damage_progression.csv, invalid literal for int() with base 10: '31598315|29195093|24316440|30401277|21941336'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9accurate_progression.csv, invalid literal for int() with base 10: '23722099|23207052|24945255|32238127|19820683'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sh_t9pump_progression.csv, invalid literal for int() with base 10: '32837303|29073609|20766926|25997213|32740810'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sh_t9semiauto_progression.csv, invalid literal for int() with base 10: '23198455|26086403|33236384|21452078|21116801'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9handling_progression.csv, invalid literal for int() with base 10: '21643698|28653488|26968412|30301580|30792305'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9quickscope_progression.csv, invalid literal for int() with base 10: '28461518|18684225|27541079|18557461|27890490'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9standard_progression.csv, invalid literal for int() with base 10: '29998116|25082551|32849622|31596275|21788131'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9mobility_progression.csv, invalid literal for int() with base 10: '23110333|23379750|32074910|29117510|19880581'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\lm_t9accurate_progression.csv, invalid literal for int() with base 10: '29352261|30131338|18499964|19153911|26081786'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\lm_t9slowfire_progression.csv, invalid literal for int() with base 10: '24435456|21563732|29375661|32011448|31418031'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sh_t9fullauto_progression.csv, invalid literal for int() with base 10: '29972009|27423945|20889778|18773470|23035907'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9heavy_progression.csv, invalid literal for int() with base 10: '31338717|26167907|30958000|33526028|31761754'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9powersemi_progression.csv, invalid literal for int() with base 10: '31238398|20014052|20497970|32372161|31098262'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9damagesemi_progression.csv, invalid literal for int() with base 10: '25514971|25929424|23991471|18072668|18632847'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9longburst_progression.csv, invalid literal for int() with base 10: '30979680|20814533|18691374|28399938|26586591'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\pi_t9revolver_progression.csv, invalid literal for int() with base 10: '31502564|29694604|19875322|24070547|22643022'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9fastfire_progression.csv, invalid literal for int() with base 10: '32679224|18236001|22735031|18629108|30580963'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9precisionsemi_progression.csv, invalid literal for int() with base 10: '18758165|27813032|32919112|27211537|27386795'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\la_t9standard_progression.csv, invalid literal for int() with base 10: '25303336|29709451|23129253|18185570|29262042'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\la_t9freefire_progression.csv, invalid literal for int() with base 10: '28593955|31550404|19964565|19497874|26311532'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9fasthandling_progression.csv, invalid literal for int() with base 10: '24160399|26493466|33475983|22177670|29804234'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9fastfire_progression.csv, invalid literal for int() with base 10: '20620665|28833644|22518118|24403120|25404741'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\la_t9launcher_progression.csv, invalid literal for int() with base 10: '23417262|28235588|25501403|32377444|19850998'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9burst_progression.csv, invalid literal for int() with base 10: '28889099|25577532|30576390|25199987|26810332'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9capacity_progression.csv, invalid literal for int() with base 10: '29710047|29375731|26250361|19666426|29654173'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9powerburst_progression.csv, invalid literal for int() with base 10: '26178894|33021593|31751704|25386612|30306475'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\lm_t9light_progression.csv, invalid literal for int() with base 10: '19766316|29804014|27029075|20162822|32792045'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\pi_t9semiauto_progression.csv, invalid literal for int() with base 10: '27801591|29589852|23293768|27578558|25084825'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\me_t9sledgehammer_progression.csv, invalid literal for int() with base 10: '17931036|30217115|19833326|30600336|21843385'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\me_t9wakizashi_progression.csv, invalid literal for int() with base 10: '28924650|30890900|30132202|18394370|29525877'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\me_t9loadout_progression.csv, invalid literal for int() with base 10: '27647730|27681051|31465883|27212227|25165352'
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weapons.json, write() argument must be str, not list
[07:26:04] Compiled 107 Weapons
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weaponUnlockChallenges.json, write() argument must be str, not list
[07:26:04] Compiled 25 Weapon Unlock Challenges
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weeklyChallengesBR.json, write() argument must be str, not list
[07:26:04] Compiled 400 Weekly Battle Royale Challenges
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weeklyChallengesMP.json, write() argument must be str, not list
[07:26:04] Compiled 400 Weekly Multiplayer Challenges`

Everything is going well, Hyde is detecting the xassets. However, as seen from the error above, the exported .json files are empty at 0kb size.
invalid literal for int() with base 10: '  <-------Failed to read file
write() argument must be str, not list <-------Failed to write file

This is by far one of the best tool. Especially for being open sourced. Much gratitude.
I'm faced with an error.

C:\Users\G\Desktop\Hyde-master>python hyde.py
Hyde: Call of Duty XAsset Compiler
https://github.com/EthanC/Hyde
[07:25:56] Loaded configuration
[07:25:56] Compiling XAssets for Call of Duty: Modern Warfare...
[07:25:58] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/accessories.json, write() argument must be str, not list
[07:25:58] Compiled 131 Accessories
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/battlePasses.json, write() argument must be str, not list
[07:25:59] Compiled 7 Battle Passes
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/battlePassItems.json, write() argument must be str, not list
[07:25:59] Compiled 25 Battle Pass Items
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/bundles.json, write() argument must be str, not list
[07:25:59] Compiled 678 Bundles
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/callingCards.json, write() argument must be str, not list
[07:25:59] Compiled 2,619 Calling Cards
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/camos.json, write() argument must be str, not list
[07:25:59] Compiled 130 Camos
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/charms.json, write() argument must be str, not list
[07:25:59] Compiled 613 Charms
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/consumables.json, write() argument must be str, not list
[07:25:59] Compiled 59 Consumables
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/emblems.json, write() argument must be str, not list
[07:25:59] Compiled 1,769 Emblems
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/equipment.json, write() argument must be str, not list
[07:25:59] Compiled 21 Equipment
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/executions.json, write() argument must be str, not list
[07:25:59] Compiled 208 Executions
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/features.json, write() argument must be str, not list
[07:25:59] Compiled 22 Features
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/gameTypes.json, write() argument must be str, not list
[07:25:59] Compiled 58 Game Types
[07:25:59] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/gestures.json, write() argument must be str, not list
[07:25:59] Compiled 25 Gestures
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/itemSources.json, write() argument must be str, not list
[07:26:00] Compiled 4,475 Item Sources
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/killstreaks.json, write() argument must be str, not list
[07:26:00] Compiled 41 Killstreaks
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/maps.json, write() argument must be str, not list
[07:26:00] Compiled 136 Maps
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/masteryChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 19 Mastery Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/miscChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 45 Miscellaneous Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/missionItems.json, write() argument must be str, not list
[07:26:00] Compiled 15 Mission Items
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/missions.json, write() argument must be str, not list
[07:26:00] Compiled 206 Missions
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/officerChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 700 Officer Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/operators.json, write() argument must be str, not list
[07:26:00] Compiled 66 Operators
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/operatorQuips.json, write() argument must be str, not list
[07:26:00] Compiled 470 Operator Quips
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/operatorSkins.json, write() argument must be str, not list
[07:26:00] Compiled 721 Operator Skins
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/specialItems.json, write() argument must be str, not list
[07:26:00] Compiled 4 Special Items
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/splashes.json, write() argument must be str, not list
[07:26:00] Compiled 1,740 Splashes
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/sprays.json, write() argument must be str, not list
[07:26:00] Compiled 750 Sprays
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/stickers.json, write() argument must be str, not list
[07:26:00] Compiled 1,176 Weapon Stickers
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/turboChallenges.json, write() argument must be str, not list
[07:26:00] Compiled 15 Tomogunchi Turbo Challenges
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicleCamos.json, write() argument must be str, not list
[07:26:00] Compiled 160 Vehicle Camos
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicleHorns.json, write() argument must be str, not list
[07:26:00] Compiled 29 Vehicle Horns
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicles.json, write() argument must be str, not list
[07:26:00] Compiled 25 Vehicles
[07:26:00] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/vehicleTracks.json, write() argument must be str, not list
[07:26:00] Compiled 32 Vehicle Tracks
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\pi_t9burst_progression.csv, invalid literal for int() with base 10: '29886786|29641733|29852991|28083123|30836845'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9standard_progression.csv, invalid literal for int() with base 10: '19611866|31447884|19440514|19163847|31732803'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9standard_progression.csv, invalid literal for int() with base 10: '24169785|18247346|19650470|21118263|20940964'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9damage_progression.csv, invalid literal for int() with base 10: '31598315|29195093|24316440|30401277|21941336'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9accurate_progression.csv, invalid literal for int() with base 10: '23722099|23207052|24945255|32238127|19820683'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sh_t9pump_progression.csv, invalid literal for int() with base 10: '32837303|29073609|20766926|25997213|32740810'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sh_t9semiauto_progression.csv, invalid literal for int() with base 10: '23198455|26086403|33236384|21452078|21116801'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9handling_progression.csv, invalid literal for int() with base 10: '21643698|28653488|26968412|30301580|30792305'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9quickscope_progression.csv, invalid literal for int() with base 10: '28461518|18684225|27541079|18557461|27890490'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9standard_progression.csv, invalid literal for int() with base 10: '29998116|25082551|32849622|31596275|21788131'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9mobility_progression.csv, invalid literal for int() with base 10: '23110333|23379750|32074910|29117510|19880581'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\lm_t9accurate_progression.csv, invalid literal for int() with base 10: '29352261|30131338|18499964|19153911|26081786'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\lm_t9slowfire_progression.csv, invalid literal for int() with base 10: '24435456|21563732|29375661|32011448|31418031'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sh_t9fullauto_progression.csv, invalid literal for int() with base 10: '29972009|27423945|20889778|18773470|23035907'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9heavy_progression.csv, invalid literal for int() with base 10: '31338717|26167907|30958000|33526028|31761754'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9powersemi_progression.csv, invalid literal for int() with base 10: '31238398|20014052|20497970|32372161|31098262'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9damagesemi_progression.csv, invalid literal for int() with base 10: '25514971|25929424|23991471|18072668|18632847'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9longburst_progression.csv, invalid literal for int() with base 10: '30979680|20814533|18691374|28399938|26586591'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\pi_t9revolver_progression.csv, invalid literal for int() with base 10: '31502564|29694604|19875322|24070547|22643022'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9fastfire_progression.csv, invalid literal for int() with base 10: '32679224|18236001|22735031|18629108|30580963'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sn_t9precisionsemi_progression.csv, invalid literal for int() with base 10: '18758165|27813032|32919112|27211537|27386795'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\la_t9standard_progression.csv, invalid literal for int() with base 10: '25303336|29709451|23129253|18185570|29262042'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\la_t9freefire_progression.csv, invalid literal for int() with base 10: '28593955|31550404|19964565|19497874|26311532'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9fasthandling_progression.csv, invalid literal for int() with base 10: '24160399|26493466|33475983|22177670|29804234'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\ar_t9fastfire_progression.csv, invalid literal for int() with base 10: '20620665|28833644|22518118|24403120|25404741'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\la_t9launcher_progression.csv, invalid literal for int() with base 10: '23417262|28235588|25501403|32377444|19850998'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9burst_progression.csv, invalid literal for int() with base 10: '28889099|25577532|30576390|25199987|26810332'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9capacity_progression.csv, invalid literal for int() with base 10: '29710047|29375731|26250361|19666426|29654173'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\sm_t9powerburst_progression.csv, invalid literal for int() with base 10: '26178894|33021593|31751704|25386612|30306475'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\lm_t9light_progression.csv, invalid literal for int() with base 10: '19766316|29804014|27029075|20162822|32792045'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\pi_t9semiauto_progression.csv, invalid literal for int() with base 10: '27801591|29589852|23293768|27578558|25084825'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\me_t9sledgehammer_progression.csv, invalid literal for int() with base 10: '17931036|30217115|19833326|30600336|21843385'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\me_t9wakizashi_progression.csv, invalid literal for int() with base 10: '28924650|30890900|30132202|18394370|29525877'
[07:26:00] Failed to read file C:/Users/G/Documents/Hyde/import/xassets/mp/gunsmith\me_t9loadout_progression.csv, invalid literal for int() with base 10: '27647730|27681051|31465883|27212227|25165352'
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weapons.json, write() argument must be str, not list
[07:26:04] Compiled 107 Weapons
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weaponUnlockChallenges.json, write() argument must be str, not list
[07:26:04] Compiled 25 Weapon Unlock Challenges
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weeklyChallengesBR.json, write() argument must be str, not list
[07:26:04] Compiled 400 Weekly Battle Royale Challenges
[07:26:04] Failed to write file C:/Users/G/Desktop/netcoreapp3.0/export/Modern Warfare/weeklyChallengesMP.json, write() argument must be str, not list
[07:26:04] Compiled 400 Weekly Multiplayer Challenges`

Everything is going well, Hyde is detecting the xassets. However, as seen from the error above, the exported .json files are empty at 0kb size.
invalid literal for int() with base 10: ' <-------Failed to read file
write() argument must be str, not list <-------Failed to write file

How did  you get the xAssets to begin with? his other tool is missing libraries, Thanks! hope to hear from you soon.

I used Jekyll to export the files, and just assumed its xAssets. I bet what I'm doing is totally wrong?

I used Jekyll to export the files, and just assumed its xAssets. I bet what I'm doing is totally wrong?

can you upload Jekyll to google drive and give me the link so i can use it? maybe then i can help as i cant compile the project. Thanks


updating version for patch release of dashbaords

version bump to 4.39.1 for dashboards

minor PR : merging it!


Refactor RemoteAPI users to share more code [AP-2069]

What does this PR do?
This PR refactors the usage of RemoteAPI to use a single common implementation of make_request instead of having a duplicated version with minor differences in all subclasses.

Motivation
AP-2069

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Reviewer's Checklist

[x] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[x] A release note has been added or the changelog/no-changelog label has been applied.
[x] Changed code has automated tests for its functionality.
[x] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[x] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

Closing in favor of https://github.com/DataDog/datadog-agent/pull/18592


Support recipe settings with blacklists/whitelists

I've been accumulating a bunch of recipe customizations that have improved my experience with using Procurement, but they are not settings that everyone should or would want to use.  Because of that, I have been planning out adding a section in the Settings.xml file for recipe settings.  This can have basic configuration knobs, like whether recipes are enabled or disabled, as well as setting generic values, such as minimumMatchPercentage.
But the biggest feature would be to support whitelists and blacklists for what items are considered for each recipe.  I haven't nailed down yet the exact syntax we should use, but I have a general idea and I'd welcome any feedback.  I've included an example below for how I currently envision it.  The values themselves are mostly based off of the customizations I've done for myself that I mentioned earlier.
We can use reflection to match RecipeSettings to each Recipe subclass, and we can add to the Recipe class two lists of IFilter, one for holding whitelist filters and blacklist filters.  The white/blacklist entries themselves can reuse the filtering mechanics to find items in the stash and add items to the trading shop.  I'll need to generalize them slightly, I think, since I want to add more generic parameters.  For example, we should have a filter that is based on an item's quality.  But, it shouldn't just be a single binary test for a single filter, because then we would have an inordinate number of filters, or the filters would be too unwieldly to be used.  I'd like to have a generic "comparison" we can specify, we we indicate 1) the property being used in the comparison, 2) the value to compare against, and 3) the operator used to compare the two values.
I still need to think about the best way to specify the operator, since there can be a lot.  We have a bunch of mathematical comparisons, but also various string operations, like StartsWith or Contains or whatever regex we might want.  The comparison operator might be ternary or an even higher order, so perhaps the Comparison element should have the value(s) specified in a repeated list of Parameter child elements, where the Parameter elements can (should) have something like an index attribute to indicate how to order the parameters.
Obviously, we should ultimately also be able to configure the recipes via the GUI, but 1) we'll need to save the settings to the Settings.xml file anyway, and 2) I've already stated I'm not too fond of working with GUIs, and adding support won't be in the first version, at least.
  <RecipesSettings>
    <RecipeSettings alias="It's a Same Base Type Recipe" type="SameBaseTypeRecipe"
                    inheritParentConditions="True">
      <Properties>
        <!-- Restating the default value. -->
        <Property name="minimumMatchPercentage" value="60" />
      </Properties>
      <Whitelist>
        <!-- An empty whitelist/blacklist section is ignored. -->
      </Whitelist>
      <Blacklist>
        <!-- Each filter in a Whitelist/Blacklist section is implicitly OR-ed. -->
        <Filter alias="Exclude belts!" type="BeltFilter" />
        <!-- The 'alias' attribute is optional and is meant to differentiate elements of the same
             type for the user. -->
        <Filter type="AmuletFilter" />
        <Filter type="RingFilter" />
        <Filter type="TabFilter">
          <!-- Don't look at items in the "Supes" tab. -->
          <Comparison name="name" operator="equals" value="Supes" />
        </Filter>
      </Blacklist>
    </RecipeSettings>
    <!-- RecipeSettings and Filter types are not case sensitive. -->
    <RecipeSettings type="raresetRecipe" inheritParentConditions="True">
      <Properties>
        <!-- Use a lower (60) minimumMatchPercentage than normal (80), so sets are shown
             earlier. -->
        <Property name="minimumMatchPercentage" value="60" />
      </Properties>
      <Whitelist>
        <Filter type="QualityFilter">
          <Comparison name="quality" operator="lessThan" value="20" />
        </Filter>
      </Whitelist>
      <Blacklist>
        <Filter type="ElderItemFilter" />
        <Filter type="ShaperItemFilter" />
      </Blacklist>
    </RecipeSettings>
    <RecipeSettings type="MinimumQualityRecipe">
      <Whitelist>
        <Filter type="QualityFilter">
          <Comparison name="quality" operator="equals" value="20" invert="True" />
        </Filter>
      </Whitelist>
      <Blacklist>
        <Filter type="TabFilter">
          <!-- Ignore items in tabs whose name starts with the string "+20%". -->
          <Comparison name="name" operator="startsWith" value="+20%" />
        </Filter>
      </Blacklist>
    </RecipeSettings>
    <!-- Allow using 20% Quality items in this version of the recipe. -->
    <RecipeSettings type="GlassblowersBaubleRecipe" inheritParentConditions="False" />
    <!-- Disable a recipe so it does not show up in the UI. -->
    <RecipeSettings type="CartographersChiselRecipe" enabled="False" />
  </RecipesSettings>

I would favour serialisation of settings in JSON using Json.Net.
https://www.newtonsoft.com/json
Just make a recipe settings class and save it out to file. Much easier imo. Once that is done I can spin up a VM and a View to the "Model" to give you something to visualise it if you wish.
I just need to finish off the fragment stash. https://github.com/aydjay/procurement/tree/fragmentStash

Thanks for the feedback!  I agree using JSON to store the settings would be more efficient than XML.  But, if we're considering an alternate storage implementation, I'll also suggest protocol buffers (and not just because I'm biased).
Beyond how the recipe settings are stored in the settings file, I'm also concerned with how these settings are used by the filters.  I might be trying to overengineering the situation however.  But I'd like to avoid having, say, a separate filter for each kind of operation we can do (e.g., a StartsWithFilter, a ContainsFilter, a GreaterThanFilter, a NotEqualToFilter, and so on.  Each of the possible operations will need to be specified somewhere, though.  It just seems silly that they might end up being simple wrappers around a class function call of the same name.  We'd also want some type checking based on the filter.  That is, we wouldn't want to allow something like using numeric comparisons against a TabFilter/TabNameFilter.  That would probably require templating the filters or having them inherit from some interface or class (IStringComparisonFilter or such).
And right now these questions about how the filters will work can impact how the settings are saved.  Is an operator a property of a filter?  Or does an operator take a filter as one of its arguments? (Though that is treating the filters more like a glorified property getter, which doesn't seem right.) The layout of the settings would probably mirror this relationship.
(In the back of my mind I'm also seeing if this can be used to allow more complicated trading filters.  The syntax would be a bit different, but the concept of operators would still apply.)
I need to take a little time and go back and worth though some of these examples more fully, and see if I can figure out some logical structure that works in the general case.

You know what they say. KISS 👍


Enhancement: After edit, post carries the new date and time

R-When changed, a post shall show the last edited time and date.

Done by Daglar while developing new feature.


Add info on where to create a service account and OAuth 2.0 Client an…

…d how to configure the related environment variables accordingly. Also add a pointer to Docker Desktop WSL2 backend.
Part of a bunch of doc updates I plan to do for #502.

Hah, the presubmit failed due to
Detect Private Key.......................................................Failed
- hook id: detect-private-key
- exit code: 1

Private key found: new-hunt-setup.md

I think it doesn't like the -----BEGIN PRIVATE KEY-----\n...<long base64-encoded key>...\n-----END PRIVATE KEY-----\n part I added.


Question: roadmap for implementing future web3 methods

Hi there,
Are there any plans to implement more web3 methods?
Cheers and keep up the good work!
Boye

@boye which method would you like to have in thorify ?

@libotony thank you for your quick response.
I was looking at Ethstats and tried to build a similar dashboard for VeChain Thor. So I started with forking the Ethereum Network Intelligence API and implementing Thorify.
I got it working in terms of connecting with the REST API but it chokes on some methods like: getHashrate, getGasPrice, isMining etc. I have paused my side project for now, but it would be awesome if developers would be able to build such a dashboard for Vechain Thor.

@boye Thank you for your support, it's really a good idea to build dashboard like ethstats.

Again, thank you! I will definitely continue investigating the architecture. As for the design of VeChainThor Stats, do you recommend using the whitepaper as starting point or maybe some other repository and look at existing code?

Yes definitely you can read the technical part of the white paper, you can get more technical info from github wiki 、 medium  or join our gitter to talk with the team and the community

Awesome! I will close this issue for now 👍


allow emoji to be used in i18n override

I was trying to add emoji to some of the i18n text (e.g. light/dark theme selector), and I discovered that those emoji got stripped away when rendered.
After examining the template, it seems those i18n text got piped to the humanize filter which are mainly to format non-user generated content (e.g. readable name from a url slug).
This PR removes the extra humanize filter, so emoji can be used.

My i18n override:
darkTheme:
  other: "🌘"

lightTheme:
  other: "☀"

Manually humanized affected strings in 3aa9da59437e0e3896d9640740a8ccec8b327ac9


docs(install): use classic argument for snap installation

Otherwise this error message will pop up on ubuntu 18.04 LTS
error: This revision of snap "helm" was published using classic confinement and thus may perform
       arbitrary system changes outside of the security sandbox that snaps are usually confined to,
       which may put your system at risk.

       If you understand and want to proceed repeat the command including --classic.

cc @popey

This was submitted and fixed in #4877. I forgot about this one while going down the line. Sorry about that, and we really appreciate the PR!


Package it in Debian

Package ProcMon and make it available in the Debian package repositories.

Also, "please" make a dvd and personally present it at vanillajohnsons house.

https://github.com/microsoft/ProcMon-for-Linux/blob/main/INSTALL.md
wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
Why wait?
No need to suck on distro package repos, you can add upstream as additional sources
The problem with distro repos is they are notouriously out of date and not official from the developer

Because it is easier to just be able to install things directly without having to add third-party sources for each piece of software.

Because it is easier to just be able to install things directly without having to add third-party sources for each piece of software.

So take it up with the distro maintainer, go to their github

TL;DR: It would be great if the maintainers of this repository could add their /debian directory to this repository as the maintainers may are already managing one and this may could be reused for Debian/Ubuntu maintainers without further adaptions.
@lucypol I see your point too, the packaging itself is the task of the distro maintainers, also because sometimes adaptions to other packages or the distro are required.
But because of these adaptions, I also prefer the solution to use packages from the distro repos as required patches or adaptions are written once for all. But this being "easier" for user also means more secure (you only trust one party, and to verify this single party is trustworthy is more easier than verify the trustworthiness for multiple parties).
What most people do not know, if you add an additional upstream repository along with its GPG key (that is what the package packages-microsoft-prod.deb does) and do not configure apt preferences to ignore other packages from this upstream, the upstream could present any package (like libc) verified with its key to your system and it would accept it as you choose to trust this upstream repository. I do not think that big players like Microsoft will choose to do this, however it may be more easier for hackers to upload malicious packages to their upstream instead of to the repository of Debian. Also, if the key will be compromised, you should know about because then such attacks are possible until you remove the key from your system. I know, that these problems can also happen to the distro I'm running, but it still is an additional risk I'm not willing to take on most of my machines.
Also mechanics like apt caches and repository snapshots do work out of the box without further adaptions like including the repository of Microsoft (in this case).
Managing your own repo (not cache), at least in my eyes, creates an even bigger overhead than upload it to distro repos as everyone is required to do additional, required work on its own.
It will help if a shared /debian directory could be managed in this repository, so maintainers of Debian and Ubuntu could use this as a common base for uploading the package into the distro repos. I think the maintainers are already managing the metadata required for package building inside the /debian directory (because the are uploading .deb packages). So it should be easy to add this one to this repository, too.

Intent to package has been filed at Debian bug tracker: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=965242

Related issue #70.


access_token

It seems one needs a access_token now to get access to instagram api :
https://www.instagram.com/developer/endpoints/users/#get_users_media_recent_self

It is still working with user_id & client_id. This might be another way of retrieving the feed. I'll have a look at it.

Fixed in v1.1.0.

works fine :-) thanks


Support Laravel 8

Can this be merged so we can have support for L8?

Please review and merge these changes so we can use this package into laravel 8.x.


fix issue merging gradle

@kirejankulovski please review and merge this when you have time :)

@krsteval approved


Uninitialized constant Hbc::Utils (NameError)

This morning I updated my homebrew packages, but when I try to use the brew-cask package, I get this error:
/usr/local/Cellar/brew-cask/0.52.0/rubylib/vendor/homebrew-fork/global.rb:31:in `<top (required)>': uninitialized constant Hbc::Utils (NameError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Cellar/brew-cask/0.52.0/rubylib/brew-cask-cmd.rb:14:in `<main>'

What can I do?

Can you explain how you solved this error?

Yes sure, just by using brew cask instead of brew-cask ;-)

Ah, but that's still a bug.  brew-cask should work.

@rolandwalker That's true, but it seems to work again :) Thnx!


fix: group selection object position when undo, redo in API direct page [#522]

Please check if the PR fulfills these requirements

[x] It's submitted to right branch according to our branching model
[x] It's right issue type on title
[x] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[x] The commit message follows our guidelines
[ ] Tests for the changes have been added (for bug fixes/features)
[ ] Docs have been added/updated (for bug fixes/features)
[ ] It does not introduce a breaking change or has description for the breaking change

Description

Thank you for your contribution to TOAST UI product. 🎉 😘 ✨

@lja1018 I don't think this fixes the issue completely, there is also a keyboard shortcut for undo/redo. For fixing this I changed the implementation of the undo method in imageEditor do the selection discarding.


Configure  prettier formatter with node.js CI

Configure  prettier formatter with node.js CI and it should also work locally with npm run format cmd

I got an error during npm run format in locally
PS C:\Users\shivam sharma\Desktop\My Project\open-source\MyUoM> npm run format

><EMAIL_ADDRESS>format
> prettier --write "src/**/*.{js,jsx,ts,tsx,json,md}"

(node:5596) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
[error] Invalid configuration for file "C:\Users\shivam sharma\Desktop\My Project\open-source\MyUoM\src\App.js":
[error] Unexpected token 'export'

Run npm run format cmd

node 21.x

closed the associate pr with this issue beacasue there is some error with ES module and we are not going to depend on CRA and once we will migrate our project in VITE + Typescript then we can easly achieve this. Thanks


Harmonize /_admin/server/* api permission.

GET always allowed
POST allowed when superuser and authentication on
POST allowed when authentication off
In the normal, authenticated case, this only changes that
GET /_admin/server/jwt
GET /_admin/server/encryption
are now allowed, similar to /_admin/server/tls and others.
Other than that, a few more APIs are allowed when authentication is off.

This is accompanied by https://github.com/arangodb/enterprise/pull/503

http://jenkins.arangodb.biz:8080/view/PR/job/arangodb-matrix-pr/10999/

http://jenkins.arangodb.biz:8080/view/PR/job/arangodb-matrix-pr/11000/

https://github.com/arangodb/arangodb/pull/12167

Obsolete by https://github.com/arangodb/arangodb/pull/12167


Fix generated file to be deployable if different namespaces

Jenkins job manager/presubmit passed

This does not help with testing in multiple namespaces, but it helps if we need to use the generated files, since instead of generating something like -n andra_namespace, it will generate -n $(POD_NAMESPACE), which will later work in any namespace without modification. It will help avoid errors in the future if we re-use the generated files.

For clarification, -n flag is used to filter the k8s namespaces the manager watches for events as pod, svc creation/deletion etc. This should be the namespace (or a list of namespaces) where the apps are deployed, and not the namespace where istio infra is deployed.

Jenkins job manager/presubmit passed


AIOC keeps PTT open for over 3 sec

I ordered some a while back and would use them on allstar and gmrslive. GMRSlive is an old version of Allstar repurposed to be used with GMRS, which is just for those who don't know.
I flashed the 1.3 firmware to all boards I used the how-to from G1LRO that had modified the VCOS trail time from 2000 to 1500. I have verified this by looking at the Python script he did.
Well, the problem is that not every board will leave the tail on 1500ms. Some are going to a 3-second delay before the PTT is finally disengaged. As I said it only happens on probably 1 out of 3 cards. I flashed the firmware again to the ones I still have at the house but I can't recreate the problem a vast majority of people I sold the AIOC to are now having the problem.
Anything you guys might need in the form of files and settings let me know and I will make them available. I just want to fix this problem for all these guys.

Can you verify if this issue is maybe related to RF interference? What's your antenna setup? We have had some people that had similar issues and there is a (closed?) issue about that with some tips.

As you can see instead of extending the antenna i extended the AIOC. 30 units were made this way but only a handful has the problem. I personally don't have the problem and no matter what I do i cant replicate it.

Interesting! Any specific radio where this happens?
Did you get them from JLCPCB or somewhere else?

JLCPCB ut has happened with Baofeng UV5R and one with a Baofeng 888.
To be honest i think the problem is more of radio programming than the actual AIOC. I have tried different squelch channels anything i could think of. I even solder one AIOC with the plugs directly on the AIOC and i could not replicate either the problem or the AIOC lok8ng out from RF. The only time I had the problem was at the start with a quansheng uvk5 and didn't think much about it and switched radios to a Baofeng and it never did it again. I even tested a anytone 800 something plus and it worked with no problem and on purpose I set the radio to turbo instead of high power and still no problem.
I programmed a Motorola 7550 on high power with the channel used in the radio with the AIOC nothing worked flawlessly.

Due to inactivity, I am going to close the issue. Feel free to reopen if required.


stageManager reports Error log: "invalid stage function or already started"

When using grpc filter, this error will be reported in the run phase
2022-05-01 18:53:16,520 [ERROR] [stage] invalid stage function or already started
2022-05-01 18:53:21,328 [DEBUG] grpc server filter initialized success

1.0.0

assign


Update to embedded-hal 1.0.0

Update to embedded-hal 1.0.0 to support current HALs.
Tested on an esp32s3 using esp_hal.

I am also interested in this PR. Can I contribute something to get it merged?

Hey, thanks for the MR! Yes, lets get this merged

would you mind creating a new release?


Publish a new gem?

I see master has a new version higher than what rubygems.org has.  Is this ready for a release?  does it work with eye 0.10.0?

pushed eye-http v0.10


How to handle infraspecificEpithets

As mentioned in #3, infraspecificEpithet is combined with specificEpithet in species in the source data. Together with the genus, this creates a scientific name we can submit to GBIF for parsing.
The resulting name is fine for animal names, which are written as:
Genus specificEpithet infraspecificEpithet

but not for plant names, where the infraspecific rank has to be known and included in the scientific name
Genus specificEpithet subsp. infraspecificEpithet
Genus specificEpithet var. infraspecificEpithet

Since we do not have the rank of the taxa in this checklist, it is impossible to build proper scientific names for the plants. The best course of action would be:

To write the names as Genus specificEpithet infraspecificEpithet, even for plants
To not provide a taxonRank for (plant) infraspecific names
To not provide a nomenclaturalCode
To hope that the name matching at GBIF will match with something valid
To indicate this issue in the metadata

We don't have taxon rank in our specimen data either and I will find out tomorrow it GBIF can figure out the rank. I'll let you know what I find out.

The GBIF name parser != name matching. The name parser just reads a string and tries to figure out how to parse it. It is independent from the backbone.
Also, I think the parser will only provide a specific infraspecific rank if that information is included in the name string. Compare: http://api.gbif.org/v1/parser/name?name=Sinapis alba dissecta&name=Sinapis alba var. dissecta
If var. is included in the name, the name parser will indicate rankMarker var., otherwise infrasp.. Not sure if this is the same result you get from rgbif?
For infraspecific ranks, I would add the valid rank infraspecificname (see http://rs.gbif.org/vocabulary/gbif/rank_2015-04-24.xml)

I get the same result from rgbif. In this case, all these species are considered to be infrasp
Good suggestion to use infraspecificname.


Update panasonic-comfort-cloud to 3.0.3

replaement fpr #4266

@marc2016
Release of 3.0.2 seem to have failed, this release is neither tagged at github nur available at npmjs.
So updateing stable is NOT possible.

Please fix / reatsrt releasebuild.
And please add node.js 22 tests - this is only a small editing and does not change code of the adapter.


ui: TU Tubingen added as RDM partner

(edit)
closes https://github.com/inveniosoftware/inveniosoftware.org/issues/158

Same comment than on inveniosoftware.org, could you move it to the alphabetical order, assuming it starts by U.
Could you add screenshots? Thanks!


ledger-tool: Allow overriding of account w/o changing bank hash

Problem
Sometimes we have a divergence and we want to ensure that a changed program fixes a problem, or we have a changed program and we want to ensure that the change does not affect the result of the execution.
Summary of Changes
Add --account-override DIR option to ledger-tool verify, which specifies a directory. At the end of each slot, we check the contents of this directory for {slot}_{pubkey}. Any files matching the {slot}_ will be loaded in the pubkey, but the bank hash would be unchanged.

I'm not sure of the exact use-cases y'all have in mind, but it would seemingly be easier to just splice the program into the initial Bank

Yeah I initially suggested doing it based on slot to save having to do two verify runs to smoke test, but it sounds like it's not worth the extra drama/complexity. If we can override in the initial bank and then everything works, let's def do that!

Yeah I initially suggested doing it based on slot to save having to do two verify runs to smoke test, but it sounds like it's not worth the extra drama/complexity. If we can override in the initial bank and then everything works, let's def do that!

I don't think I follow how adjusting the program bin by slot would help; wouldn't you still need a set of good hashes to compare against, and those would be generated by your first run ? Otherwise, when you swap in your program bin to test, you can't be sure if you've diverged or not**. Or maybe I'm misunderstanding
**Technically, some logs can indicate that you've diverged, but not as clear of a sign as what the record/verify slots workflow offers

**Technically, some logs can indicate that you've diverged, but not as clear of a sign as what the record/verify slots workflow offers

waiting for accountsdb to "rebuild storages" is my biggest nightmare so I often use those logs 😭


Fix crash with logs view

Switch to saving only IDs of pods, owners, and containers instead of
whole objects

Add more checks about data integrety

Signed-off-by: Sebastian Malton<EMAIL_ADDRESS>Fixes secondary crash reported in #3782

Nice improvement and overall cleaning! However, found couple of issues:
1. Do we actually need to prevent logs to show up if pod doesn't have any owners? I'm not sure how often pods can be created directly, but nothing blocks us to open logs for them? For example, here's what I see if created raw Pod from `Create Resource` tab:

Fair enough, I agree that we shouldn't have this limitation.

2. If the viewed pod has suddenly disappeared, maybe it's better to show sibling pod if any? Instead of this message:

Sounds good

3. For pods without (?) logs I don't see any message like "No logs available", just empty log area. Create a deployment from template dropdown to reproduce:

Sounds good

4. This probably not affected by current PR, but it's annoying: search box is changing its width if some elements found:

I will try and fix this in this PR anyway

@aleksfront Resolved, can you PTALA?

@Nokel81 Most of the issues are gone, thanks for fixing those.

This is still an issue:

If the viewed pod has suddenly disappeared, maybe it's better to show sibling pod if any? Instead of this message:

Suggestions about tab naming. First, I doubt we should add namespace before workload name. It makes impossible to get meaningful information from tab because ns will always be long enough to cover all available space.

Maybe it's just me, but kind of strange to see titles like "ReplicaSet logs..." if you just just looking at the Pod logs:
https://user-images.githubusercontent.com/9607060/144811012-5919ea28-3330-4d3e-bdab-aba48c211627.mov

You've marked this PR as a candidate to fix #4018 (https://github.com/lensapp/lens/issues/4018#issuecomment-983856353). Maybe to move things forward, extract needed parts for 4018 and pull a separate PR? Or it's better to keep with current one?

Or it's better to keep with current one?

I think it would be better to keep it here because the fix it to move out the reloadLogs call in render but that requires some other changes I think too.

This is still an issue:

Oh, I thought I fixed that...

Suggestions about tab naming. First, I doubt we should add namespace before workload name. It makes impossible to get meaningful information from tab because ns will always be long enough to cover all available space.

Sounds good about the naming.

Maybe it's just me, but kind of strange to see titles like "ReplicaSet logs..." if you just just looking at the Pod logs:

I can revert that change but let me explain why I made it. I made it because I felt that each tab was both about logs and about switching between pods and containers. And to be honest we aren't really even viewing pod logs, but instead viewing container logs.

Additional observations:

We have blink of unstyled placeholder on cluster connect / window reload:

https://user-images.githubusercontent.com/9607060/145219825-6e97328b-ec3e-43bd-a552-6fb4dffafdac.mov

Lets revert tab title to have "Pod Logs" names:

Need to style this placeholder a bit, make it white and put into center, wdyt?

https://user-images.githubusercontent.com/9607060/145220460-0ffcf936-2b72-4431-8aae-440365842a3d.mov

For some reason now we have 2 separate spinners around:

https://user-images.githubusercontent.com/9607060/145220251-5514b2e3-fcab-4ba5-a347-1f61569b4a08.mov

Closing this PR as the commit 9d33fff90673faf8c72043f1e682acb1aa7526ce fixes a lot of the issues that this did as well.
I will recreate the changes to the storage layer in a new PR (for 5.5) once #3738 is merged.


Update build to use VS2015

Includes updating appveyor.yml.
ASIO is now a submodule so updated to init submodules during install, replacing the download step.
OpenSSL is already installed on the build worker, so download step now redundant.
Will need clean-up to remove vs2015 branch from appveyor.yml.

Should be all set to merge this now?

I'll look into this early next week. I've been busy on the development/iorefactor branch. Unfortunately, you'll probably want to repeat your testing, but the goods news is that we have TLS integration tests and I've been able to simply things greatly by merging the GPRS/traditional APIs onto a single "DNP3Manager".

Yes, rebasing the tweaks to the build script and the appveyor config onto development would make things easiest for me.

Not sure if I've done this right by merging rather than rebasing. Let me know if it will make a mess of things and I'll redo.

OK, I've rebased onto development which has cleanup the git history.


Disabled IPV6 and 802.1Q VLANS

Bug Report
Version of OpenNebula

[ ] 5.2.2
[X] 5.4.0
[ ] 5.4.1
[ ] 5.4.2
[ ] 5.4.3
[ ] Development build

Component

[ ] Authorization (LDAP, x509 certs...)
[ ] Command Line Interface (CLI)
[ ] Contextualization
[ ] Documentation
[ ] Federation and HA
[ ] Host, Clusters and Monitorization
[X] KVM
[X] Networking
[ ] Orchestration (OpenNebula Flow)
[ ] Packages
[ ] Scheduler
[ ] Storage & Images
[ ] Sunstone
[ ] Upgrades
[ ] User, Groups, VDCs and ACL
[ ] vCenter

Description

Opennebula fails to start KVM instances when IPV6 is disabled and 802.1Q VLAN networking is used.
The problem seems to be related to the way the security group is dealt with. iptables6 instructions seem to be called even thou ipv6 addressing is not been used. This problem does not affect the Bridge networking driver.
The issue was initially reported in the forum: https://forum.opennebula.org/t/disabled-ipv6-and-802-1q-vlans/5283
Expected Behavior
KVM should start as only IPV4 is been used.
Actual Behavior
KVM instance fails to start with the following messages
Mon Nov 13 06:44:16 2017 [Z0][VMM][I]: ip6tables v1.4.21: can't initialize ip6tables table `filter': Address family not supported by protocol
Mon Nov 13 06:44:16 2017 [Z0][VMM][I]: Perhaps ip6tables or your kernel needs to be upgraded.
Mon Nov 13 06:44:16 2017 [Z0][VMM][E]: post: Command Error: sudo ip6tables -S
Mon Nov 13 06:44:16 2017 [Z0][VMM][E]: post: ["/var/tmp/one/vnm/command.rb:62:in `block in run!'",

How to reproduce

Configure your kernel to disable IPV6, by adding to your /etc/default/grub :
GRUB_CMDLINE_LINUX="ipv6.disable=1

Create a virtual network, with type 802.1Q, configure ONLY ipv4 address.
Create a KVM instance connected to that virtual network.

Progress Status

[ ] Branch created
[ ] Code committed to development branch
[ ] Testing - QA
[ ] Documentation
[ ] Release notes - resolved issues, compatibility, known issues
[ ] Code committed to upstream release/hotfix branches
[ ] Documentation committed to upstream release/hotfix branches

This issue is to better deal with execution errors of ip6tables.


How trained this code  on data set fer2013?

I trained resnet on data set fer2013 with resnet  in tensor flow, but how training in code on pytorch and resnet?

If you are unfamiliar with PyTorch (torch), I suggest you start with the official tutorials to get a feel for it. Afterwards you can find the scripts that are used to train the models included in the torchvision package here:
https://github.com/pytorch/vision/tree/master/references
Since FER2013 is a classification dataset you can adopt
https://github.com/pytorch/vision/blob/master/references/classification/train.py
to fit your needs.


Does this repository has a search after example?

Does this repository has a search after example?
I was reluctant to ask questions here, but after trying googling I couldn't find the answer about how to use search after in elastic.
And the docs is so confused, as the following:
// SearchAfter allows a different form of pagination by using a live cursor,
// using the results of the previous page to help the retrieval of the next.
//
// See https://www.elastic.co/guide/en/elasticsearch/reference/6.2/search-request-search-after.html
func (s *SearchService) SearchAfter(sortValues ...interface{}) *SearchService {
	s.searchSource = s.searchSource.SearchAfter(sortValues...)
	return s
}

The hyperlink is to elasticsearch docs, but not elastic's docs.

There is an example in the tests here: https://github.com/olivere/elastic/blob/29ee98974cf1984dfecf53ef772d721fb97cb0b9/search_test.go#L1482

Thank you a lot.
The search after will return sort field, then we will use sort field int the search after to execute the next search.
How could I got sort field in elastic?

The following way works for me, but is not elegant.
searchResult.Hits.Hits[len(searchResult.Hits.Hits)-1].Sort

But you'd better knew json result well in elasticsearch first.


Support advanced I2C configuration options

Currently, we only support initializing the polling interval of an I2C component. However, some I2C components have extra parameters which may influence sensor readings.
Examples:

Light sensor drivers like the TSL2591, the gain may be changed (tsl.setGain(TSL2591_GAIN_MED)) during runtime as well as the integration time
* The BME680 driver exposes sampling, altitude configuration, and filtering initialization functions.
* The LC709203 driver exposes functions such as lc.setPackSize(LC709203F_APA_500MAH); to set the LiPo battery pack size.

Just food for thought: Some sensors want a continuously updated reference value. e.g. the SGP30 assumes 25degrees centigrade and 50% humidity, but it accepts (and prefers) a continuously updated reference value (of absolute humidity). This will massively affect accuracy. I'm not sure it would make sense to presume that all attached sensors are in the same micro-climate, so we probably can't just use the first/any sensor temp+humidity value to calculate absolute humidity.

Also the interrupt pins for certain sensors, e.g. a proximity that has supported thresholds and then triggers an interrupt once the desired conditions are met.


Geocodio listing

Hello!
Are you planning to implement geocodio-listing? Or do you accept PR's?

Not planning on it, but PR's are accepted!


Remove global logging setup

As per #295, libraries generally avoid setting up logging.  That should left to the applications calling the code.
The default logging writes to a file in the home directory, which leads to trouble if multiple runs of cellpose are executing which access the same home directory, or the program does not have write access to that directory.
Closes #295

I don't have much to add, except moral support. I hope this PR can be merged to master soon as I would greatly appreciate implementing this change in my workflow (MERFISH analysis).

this is great thanks, I am happy with the new implementation, I will call the logger in the jupyter-notebook example as well to activate it for the user.

is it possible to release it on pip?


Enable running CWL tests in Vagrant and cleanup CWL tests

Close #3148

Do you know if we can turn off the tests for the push for non-master branches? Would be helpful to not run the tests twice.

We probably can but it's helpful to run tests during development on feature branches.


[BEAM-3773] JDBC

Add JDBC support to Beam SQL so we can use sqlline.

Follow this checklist to help us incorporate your contribution quickly and easily:

[X] Make sure there is a JIRA issue filed for the change (usually before you start working on it).  Trivial changes like typos do not require a JIRA issue.  Your pull request should address just this issue, without pulling in other changes.
[X] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue.

[X] Run ./gradlew build to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Nice.

Archetypes more like argh!!!etypes


Document cross-compiling

The published releases of steamworks.js include all platforms (windows, mac, linux), but npm run build only builds the current platform.
How do you compile steamworks.js for all platforms? Is there a command you use? What is it? (And could it be added to the README?)

Hey @dfabulich! This was answered here: https://github.com/ceifa/steamworks.js/issues/14


1.12 - Problem with Generator?

https://pastebin.com/aYUSs5QB
I placed generator and charger, and placed some normal green shards into the generator, server seemed to stop and timed us out, then it crashed.

Must be a SMP issue, i tested in SP an it works quite fine

Yeah, I believe it's SMP only.
I'm really busy for the next few weeks (and the last few) so I won't be able to fix it for a little bit.


使用matterport3d原始数据集效果依旧很差

I used the dataset used in the paper, the one starting with 5L, and compared it with the dataset provided by matterport3d. It seems that you have processed the data, and there is a significant difference between your dataset and the dataset provided by matterport3d. Based on your first response, I converted the position coordinates and used lseg to perform semantic segmentation on the rgb image. The other parameters were not changed, but the final result was very poor. Can you provide me with some ideas, What exactly is the problem? I have been stuck in this place for almost a month and the results of using my own dataset and matterport3D dataset are very poor. Thank you very much!!!

I guess the poses are not correct. The poses in Matterport3D dataset are poses of the camera, which are not the same as the poses from the Habitat simulator (poses of the robot). If you want to make it work on Matterport3D directly, you need to modify the poses processing below.
https://github.com/vlmaps/vlmaps/blob/bc79b26a577e5a9408f86e45e5c16530ca80f867/examples/clip_mapping_lseg_from_scratch_batch.py#L126-L132
So you are right, I didn't directly use Matterport3D but collected RGBD streams and poses from the Habitat simulator.

See #15


migration from download to got

Looks download have security issue in caw (tunnel-agent) (install latest npm@latest and run npm audit), also download use gulp-utils (which deprecated).
/cc @kevva @sindresorhus

Looks like latest download already use got and don't have security problems. Need just update download to latest version


FINERACT-1575 IPv6 workaround

Description
A bean has been added as a workaround for supporting IPv6 address, which are used in fully managed serverless environments (like Firebase, AWS Amplify, GCP, Azure, Azure App Service).
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!

[ ] Write the commit message as per https://github.com/apache/fineract/#pull-requests

[ ] Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.

[ ] Create/update unit or integration tests for verifying the changes made.

[ ] Follow coding conventions at https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions.

[ ] Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/api-docs/apiLive.htm with details of any API changes

[ ] Submission is not a "code dump".  (Large changes can be made "in repository" via a branch.  Ask on the developer mailing list for guidance, if required.)

FYI our guidelines for code reviews are at https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide.

cancel


Syntax highlighting support for Godot's GDScript language.

I just recently tried to use Carbon to create an image of some GDScript code. Unfortunately, the syntax highlighting wasn't quite right. It would be awesome to add GDScript as a supported language.
FWIW, I also tried Codye, but unfortunately found that it also does not support GDScript.

There appears to exist a GDScript add-on for highlight.js.

@lukehollenback sorry, but we are no longer adding new language support, except for in extenuating circumstances. Hopefully custom themes will work for you.
If we hear about GDScript more, I will reconsider adding it.

I want GDScript support too :D

Does the Python syntax work for you?

@mfix22 No, it doesn't. GDScript is quite different to Python, actually

Would love to see support for GDScript.
Godot Engine is rapidly increasing in popularity. Github, for example, has .gitignore presets for Godot/GDScript projects.

Would love to see support for GDScript. Godot Engine is rapidly increasing in popularity. Github, for example, has .gitignore presets for Godot/GDScript projects.

Hey @dsaltares, is there a CodeMirror language mode for GDScript?


An option to create non-cubic 3D phantoms

moving from:
a) TomoP3DModel(ModelNo,N,pathTP) where N is a scalar leading to N x N x N phantom
to:
b) TomoP3DModel(ModelNo, DIM ,pathTP) where DIM is a tuple [N1, N1, N2] leading to N1 x N1 x N2 phantom. Version a) needs to be supported as well with DIM[1] = N

Here I'm trying to deal with a tuple or a scalar passed from python to C code. @paskino please help.


The algorithm

Nice work.
I wonder what algorithm do you use.
Is there a paper to support your code?

Thanks, I talked to my PhD professor about publishing it, and he said it is not enough to publish an A paper, so there is no paper.
The algorithm is simple, I find the main points of the region, like the most right, the most left, the upper and the most bottom points, then I apply some rules that I developed myself. I can try to explain better if you wanna.
Best regards.

Nice work,
is it enough to publish a paper now?

@joeaaron, I still think it's not enough. Do you think it's enough?

I tried your method, but it's not very robust, so a lot of work need to do in the future.
If you don't mind, I wanna make a contact with you. About RGB-D camera development.

@joeaaron ok. Mail me to<EMAIL_ADDRESS>


Utility modules

Write a series of utility modules to support the interconnection of modules.

[ ] File name mapping (copy and/or symbolic link options)
[ ] File format conversion
[ ] Column-name remapping
[ ] Validation modules (which features can be checked at build time [dependency checks] vs execution time; how to handle both; provide notification).
[ ] Notification (email?)
[ ] Data checks - module to pause workflow execution while awaiting manual check clearance. May need to stop and restart workflows, depending on context.
[ ] Splitting / sub-setting output namespaces. Although only one output namespace is supported, users may structure these folders as they wish. Multiple outputs can therefore be sub-selected by creating symbolic links to these folders for forward propagation in the graph model, i.e. a module that creates a link between a folder in the input namespace, and the output namespace for that module.

The scope of this issue is now too broad. Replaced with module requests (github issues) on the main repository site: kraemer-lab/vneyard


[WIP] Add new :upload type to data

See #298 for the initial discussion.
This is a first implementation. Feedback are welcomed!
Todo:

[x] Check the usage of the required option :accept or raise a CompileError
[x] Validate upload options types
[x] Add test to check multiple uploads
[x] Add test to access to @uploads assign
[x] Add ability to pass "local" function to :external and :progress options
[ ] Consider to be able to pass a prop event to progress and external option
[ ] Update the doc

This is exciting.  Thank you for doing this work.

@msaraiva @miguel-s @lnr0626 This PR implements a new upload macro (see the discussion in #298). The first implementation added an upload type that we could use with the data macro: data avatar, :upload, accept: .... That implementation added the avatar assign by copying the one present in the @uploads.avatar built in assign. Unfortunately, it has several drawbacks, the main one being that the @avatar assign was not updated according to the one stored in @uploads, so we lost the progress feature for example.
We decided to give a try to a new upload macro that:

does not create an assign
execute the allow_upload from PhoenixLiveView in the mount function if a upload is used

My second implementation was simply to create a shortcut with the upload macro so that upload avatar, ... was equivalent to data avatar, :upload, .... That implementation came with some drawbacks:

use data avatar, ... was not possible if a prop, slot or data already exist with that name. It does not make much sense because there is no conflict.
Error message referred to data when the user wrote upload
an assign was created

I fixed these issues but it created a lot of complexity, and cognitive overhead to understand that in some case data was treated differently. So, I decided to add logic for a new func, :upload. It result in the current implementation.
To be honest, I am not completely happy with this implementation, especially the part in put_assign! and do_put_assign! functions: https://github.com/surface-ui/surface/blob/536aeb780b1446a089c33cabdde8fd0b2f7bf882/lib/surface/api.ex#L110-L161
Anyway, I like the idea of a new macro because I think it improves the DX, but I'm not convinced by the implementation, nor by the cost of it.

From @Malian on slack:

I am wondering if this new macro is a good idea. We are replacing a simple function allow_upload(socket, :avatar, opts) in the mount function, with a macro upload avatar, opts that adds complexity to the Surface base code without real benefit

I confess that I'm starting to agree with that. I see benefits in the declarative approach. No doubt. That's one of the reasons I created Surface in the first place :)
However, I'm wondering if, in this case, it's worth the trouble of adding that extra complexity just to avoid calling allow_upload/3 on mount.
Maybe the only extra benefit I can think of right now would be the possibility to statically validate properties passed as @updates.whatever but it's not a bug deal, IMO.
@Malian, @harmon25, @miguel-s, @olivermt and @lnr0626. I'm bringing this discussion here so we keep whatever decision we make documented.

Sticking with allow_upload/3 is fine!
The LiveFileInput component improves the DX of vanilla live_uploads within Surface enough for now.
If more people request something like this in the future maybe we could revisit the idea

@Malian I agree with @harmon25. I think we should close this for now and maybe revisit later in case we're convinced it's a good idea. The PR itself was already worth it as it gave us the right feeling about the tradeoffs. Thanks! ❤


Checkboxes are not working well on job form

Here we have label/checkbox that does not work as expected
https://github.com/osscameroon/jobsika/assets/37931403/0fbf98bb-7982-4eba-a29f-0b096f865bc2

this part will be removed for the time being