It looks very much like finish() is not working

I have this code on the ESP32-C3 board (CP 9.1-beta)
async def get_data():
    pool = socketpool.SocketPool(wifi.radio)
    session = requests.Session(pool, ssl.create_default_context())
    while True:
        SCORE_URL = "https://api.coincap.io/v2/assets"
        resp = session.get(SCORE_URL)
        json_data = json_stream.load(resp.iter_content(99))
        for c in json_data['data']:
            print(c.finish())
        resp.close()
        await asyncio.sleep(60)

I expect to output the data contained in json_data['data']. Generally it's a list of "coins". But I get:
None
None
None
...

It looks like you can't "sparse data" via stream_json. I came to this after several attempts using filter() and map(), and in a normal console I get normal results (but without json_stream), but using json_stream on a microcontroller I get errors. Explicit fetching via keys works.
In general, I suspect that TransientObject is not behaving correctly.

Can you post a sample of the JSON? Your requests may not match the order the data comes in.

You can always look at this Json via this link, it's an open API.
full example of the json data
{"data":[{"id":"bitcoin","rank":"1","symbol":"BTC","name":"Bitcoin","supply":"19671012.0000000000000000","maxSupply":"21000000.0000000000000000","marketCapUsd":"1300371723295.5785238257578488","volumeUsd24Hr":"12364492794.0363978783043987","priceUsd":"66105.9900372984635374","changePercent24Hr":"-5.0469034856260289","vwap24Hr":"68509.9278465103776486","explorer":"https://blockchain.info/"},{"id":"ethereum","rank":"2","symbol":"ETH","name":"Ethereum","supply":"120070727.6120482800000000","maxSupply":null,"marketCapUsd":"399974960833.7922442652000447","volumeUsd24Hr":"7960169863.2895428630921960","priceUsd":"3331.1612979153586825","changePercent24Hr":"-6.1287378028305372","vwap24Hr":"3454.8179696356090384","explorer":"https://etherscan.io/"},{"id":"tether","rank":"3","symbol":"USDT","name":"Tether","supply":"104657945828.0410900000000000","maxSupply":null,"marketCapUsd":"104856040830.2909677190421630","volumeUsd24Hr":"26133983884.3314832816359018","priceUsd":"1.0018927851171029","changePercent24Hr":"0.0329774514773245","vwap24Hr":"1.0007580369269065","explorer":"https://www.omniexplorer.info/asset/31"},{"id":"binance-coin","rank":"4","symbol":"BNB","name":"BNB","supply":"166801148.0000000000000000","maxSupply":"166801148.0000000000000000","marketCapUsd":"92419126593.4518112949341000","volumeUsd24Hr":"653854592.5912651408641469","priceUsd":"554.0676889912760750","changePercent24Hr":"-5.4679471618564193","vwap24Hr":"572.4052109891161199","explorer":"https://etherscan.io/token/0xB8c77482e45F1F44dE1745F52C74426C631bDD52"},{"id":"solana","rank":"5","symbol":"SOL","name":"Solana","supply":"444701990.4974354000000000","maxSupply":null,"marketCapUsd":"80346447040.0949892059374133","volumeUsd24Hr":"1312471120.6709695753749654","priceUsd":"180.6748086515667346","changePercent24Hr":"-8.5609279763571349","vwap24Hr":"189.7132586241612228","explorer":"https://explorer.solana.com/"},{"id":"usd-coin","rank":"6","symbol":"USDC","name":"USDC","supply":"32656413952.8551600000000000","maxSupply":null,"marketCapUsd":"32684805244.5890663399946192","volumeUsd24Hr":"2007002062.2491354243879786","priceUsd":"1.0008693940423126","changePercent24Hr":"-0.0387547907409935","vwap24Hr":"1.0005815803487554","explorer":"https://etherscan.io/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},{"id":"xrp","rank":"7","symbol":"XRP","name":"XRP","supply":"45404028640.0000000000000000","maxSupply":"100000000000.0000000000000000","marketCapUsd":"26841484466.6721885726593600","volumeUsd24Hr":"677192790.2530788204314526","priceUsd":"0.5911696664516990","changePercent24Hr":"-3.5714820123968690","vwap24Hr":"0.6062324719972718","explorer":"https://xrpcharts.ripple.com/#/graph/"},{"id":"dogecoin","rank":"8","symbol":"DOGE","name":"Dogecoin","supply":"143717446383.7052600000000000","maxSupply":null,"marketCapUsd":"26046635417.7260802332517680","volumeUsd24Hr":"1455800743.2070754066606005","priceUsd":"0.1812350279880791","changePercent24Hr":"-11.0419800760799060","vwap24Hr":"0.1989166558092272","explorer":"http://dogechain.info/chain/Dogecoin"},{"id":"cardano","rank":"9","symbol":"ADA","name":"Cardano","supply":"35589267828.6920000000000000","maxSupply":"45000000000.0000000000000000","marketCapUsd":"20752136735.0569720545250598","volumeUsd24Hr":"263189710.4153338261926352","priceUsd":"0.5831009740056141","changePercent24Hr":"-7.8871558218850931","vwap24Hr":"0.6132406425310364","explorer":"https://cardanoexplorer.com/"},{"id":"avalanche","rank":"10","symbol":"AVAX","name":"Avalanche","supply":"377416536.4228908000000000","maxSupply":"715748719.0000000000000000","marketCapUsd":"17781085212.0457275884792388","volumeUsd24Hr":"317804828.8630500293185371","priceUsd":"47.1126288757051977","changePercent24Hr":"-9.4375152368775207","vwap24Hr":"50.5278450860547482","explorer":"https://avascan.info/"},{"id":"shiba-inu","rank":"11","symbol":"SHIB","name":"Shiba Inu","supply":"589289410812691.0000000000000000","maxSupply":null,"marketCapUsd":"15500213959.4718838261971844","volumeUsd24Hr":"421048796.9162644551739430","priceUsd":"0.0000263032283884","changePercent24Hr":"-8.6476746761203375","vwap24Hr":"0.0000279981711399","explorer":"https://etherscan.io/token/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce"},{"id":"bitcoin-cash","rank":"12","symbol":"BCH","name":"Bitcoin Cash","supply":"19686193.7500000000000000","maxSupply":"21000000.0000000000000000","marketCapUsd":"11776507709.5055486702182200","volumeUsd24Hr":"499817608.3461016829070279","priceUsd":"598.2115110243466272","changePercent24Hr":"-10.2251812400651890","vwap24Hr":"636.2234051283676977","explorer":"https://blockchair.com/bitcoin-cash/blocks"},{"id":"polkadot","rank":"13","symbol":"DOT","name":"Polkadot","supply":"1347833559.0719000000000000","maxSupply":null,"marketCapUsd":"11567215535.2495575265276771","volumeUsd24Hr":"167121872.2798096533821728","priceUsd":"8.5820800776132819","changePercent24Hr":"-7.4988180380384196","vwap24Hr":"9.0253959138242901","explorer":"https://polkascan.io/polkadot"},{"id":"chainlink","rank":"14","symbol":"LINK","name":"Chainlink","supply":"587099970.4527867000000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"10469563657.3813715491922544","volumeUsd24Hr":"310951212.4369133375587364","priceUsd":"17.8326761783124822","changePercent24Hr":"-3.9967600388997596","vwap24Hr":"18.1155840343796664","explorer":"https://etherscan.io/token/0x514910771af9ca656af840dff83e8264ecf986ca"},{"id":"wrapped-bitcoin","rank":"15","symbol":"WBTC","name":"Wrapped Bitcoin","supply":"155417.8146596400000000","maxSupply":null,"marketCapUsd":"10281207521.0925055584377143","volumeUsd24Hr":"105941420.2496037431650134","priceUsd":"66152.0530552306267870","changePercent24Hr":"-5.1021792790435811","vwap24Hr":"68409.7888703245877518","explorer":"https://etherscan.io/token/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"},{"id":"tron","rank":"16","symbol":"TRX","name":"TRON","supply":"87724530020.4881900000000000","maxSupply":null,"marketCapUsd":"10248491242.0406498163537412","volumeUsd24Hr":"128292134.9283459668613527","priceUsd":"0.1168258324056806","changePercent24Hr":"-3.8374843747146701","vwap24Hr":"0.1202169736274793","explorer":"https://tronscan.org/#/"},{"id":"polygon","rank":"17","symbol":"MATIC","name":"Polygon","supply":"9902243816.7084370000000000","maxSupply":"10000000000.0000000000000000","marketCapUsd":"8916775764.4131373273046882","volumeUsd24Hr":"167726180.1197782502440669","priceUsd":"0.9004803284451064","changePercent24Hr":"-7.3113727277405857","vwap24Hr":"0.9435057277821441","explorer":"https://etherscan.io/token/0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0"},{"id":"internet-computer","rank":"18","symbol":"ICP","name":"Internet Computer","supply":"461544407.0533702400000000","maxSupply":null,"marketCapUsd":"7689008654.6187540010842180","volumeUsd24Hr":"111038067.6635546987591872","priceUsd":"16.6593041473680840","changePercent24Hr":"-9.5494938651085196","vwap24Hr":"17.7105097513790354","explorer":"https://www.dfinityexplorer.org/#/"},{"id":"litecoin","rank":"19","symbol":"LTC","name":"Litecoin","supply":"74377256.1075049300000000","maxSupply":"84000000.0000000000000000","marketCapUsd":"7297659546.7813091300502869","volumeUsd24Hr":"611524021.1980879718832325","priceUsd":"98.1168159286928749","changePercent24Hr":"-7.0941855520295036","vwap24Hr":"99.7589273246896137","explorer":"http://explorer.litecoin.net/chain/Litecoin"},{"id":"uniswap","rank":"20","symbol":"UNI","name":"Uniswap","supply":"598736139.7100000000000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"6793572829.4567161619861910","volumeUsd24Hr":"121292143.9009361163228565","priceUsd":"11.3465220802392312","changePercent24Hr":"-8.8248161311668861","vwap24Hr":"12.1416020960515004","explorer":"https://etherscan.io/token/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"},{"id":"near-protocol","rank":"21","symbol":"NEAR","name":"NEAR Protocol","supply":"1054016312.0000000000000000","maxSupply":null,"marketCapUsd":"6526479906.8749785644115800","volumeUsd24Hr":"131869912.3489333698546595","priceUsd":"6.1920103442146525","changePercent24Hr":"-9.9394152163309886","vwap24Hr":"6.5931837484746843","explorer":"https://explorer.nearprotocol.com/"},{"id":"unus-sed-leo","rank":"22","symbol":"LEO","name":"UNUS SED LEO","supply":"926775970.9000000000000000","maxSupply":null,"marketCapUsd":"5609801302.2061961090913374","volumeUsd24Hr":"636500.9361963346322000","priceUsd":"6.0530284322741671","changePercent24Hr":"-0.6040093558790609","vwap24Hr":"6.0413762546554747","explorer":"https://eospark.com/account/bitfinexleo1"},{"id":"multi-collateral-dai","rank":"23","symbol":"DAI","name":"Multi Collateral DAI","supply":"5347888595.7464075000000000","maxSupply":null,"marketCapUsd":"5353585973.1851688113954613","volumeUsd24Hr":"117656429.4362677964279960","priceUsd":"1.0010653508084093","changePercent24Hr":"0.0107974505404455","vwap24Hr":"1.0007709709217922","explorer":"https://etherscan.io/token/0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"},{"id":"stacks","rank":"24","symbol":"STX","name":"Stacks","supply":"1451228108.1215230000000000","maxSupply":"1818000000.0000000000000000","marketCapUsd":"4873769158.1453217221218296","volumeUsd24Hr":"76247743.1637147418905232","priceUsd":"3.3583756618757565","changePercent24Hr":"-9.1168586417990937","vwap24Hr":"3.5588630081001314","explorer":"https://explorer.xinfin.network/"},{"id":"filecoin","rank":"25","symbol":"FIL","name":"Filecoin","supply":"531382746.0000000000000000","maxSupply":null,"marketCapUsd":"4574517312.3091800668086248","volumeUsd24Hr":"273986929.0725830758510109","priceUsd":"8.6087050186405188","changePercent24Hr":"-11.7353419089546589","vwap24Hr":"9.1752219511619702","explorer":"https://protocol.ai"},{"id":"ethereum-classic","rank":"26","symbol":"ETC","name":"Ethereum Classic","supply":"146341247.5752059000000000","maxSupply":"210700000.0000000000000000","marketCapUsd":"4386086043.2747516140696840","volumeUsd24Hr":"129140315.3864613692557092","priceUsd":"29.9716321676204656","changePercent24Hr":"-10.6159805920715418","vwap24Hr":"32.1303266176623764","explorer":"http://gastracker.io/"},{"id":"stellar","rank":"27","symbol":"XLM","name":"Stellar","supply":"28827265772.2560700000000000","maxSupply":"50001806812.0000000000000000","marketCapUsd":"3712710099.8644572154014138","volumeUsd24Hr":"64259100.5579088343989599","priceUsd":"0.1287916144804008","changePercent24Hr":"-5.7503607037100649","vwap24Hr":"0.1335821771323441","explorer":"https://dashboard.stellar.org/"},{"id":"crypto-com-coin","rank":"28","symbol":"CRO","name":"Crypto.com Coin","supply":"25263013692.0000000000000000","maxSupply":"30263013692.0000000000000000","marketCapUsd":"3534842055.6858379106468892","volumeUsd24Hr":"13057206.9385838954045053","priceUsd":"0.1399216300470601","changePercent24Hr":"-6.3386057978921409","vwap24Hr":"0.1494729706972354","explorer":"https://etherscan.io/token/0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b"},{"id":"maker","rank":"29","symbol":"MKR","name":"Maker","supply":"924609.8691148300000000","maxSupply":"1005577.0000000000000000","marketCapUsd":"3531514487.1389067309884553","volumeUsd24Hr":"117253575.7678292001536172","priceUsd":"3819.4644088319996430","changePercent24Hr":"0.6902105691147617","vwap24Hr":"3769.4964571790375316","explorer":"https://etherscan.io/token/Maker"},{"id":"render-token","rank":"30","symbol":"RNDR","name":"Render Token","supply":"369614008.1087959400000000","maxSupply":"536870912.0000000000000000","marketCapUsd":"3419606175.2354134470553508","volumeUsd24Hr":"23767976.6827693249618210","priceUsd":"9.2518305589458391","changePercent24Hr":"-9.6773087378096025","vwap24Hr":"9.8421772202148120","explorer":"https://etherscan.io/token/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24"},{"id":"the-graph","rank":"31","symbol":"GRT","name":"The Graph","supply":"9456973353.5523360000000000","maxSupply":null,"marketCapUsd":"3211478930.4818123568726322","volumeUsd24Hr":"45619460.4039477397618647","priceUsd":"0.3395884508097382","changePercent24Hr":"-9.1275783374717955","vwap24Hr":"0.3641705947693730","explorer":"https://etherscan.io/token/0xc944e90c64b2c07662a292be6244bdf05cda44a7"},{"id":"vechain","rank":"32","symbol":"VET","name":"VeChain","supply":"72714516834.0000000000000000","maxSupply":"86712634466.0000000000000000","marketCapUsd":"2972220224.5987524014831232","volumeUsd24Hr":"36362819.7127505644129479","priceUsd":"0.0408751973334848","changePercent24Hr":"-10.2574280738095409","vwap24Hr":"0.0436113331913379","explorer":"https://explore.veforge.com/"},{"id":"cosmos","rank":"33","symbol":"ATOM","name":"Cosmos","supply":"248453201.0000000000000000","maxSupply":null,"marketCapUsd":"2727363909.9035412325509157","volumeUsd24Hr":"125984143.9263686941092005","priceUsd":"10.9773748091236757","changePercent24Hr":"-7.9037158939236307","vwap24Hr":"11.4837834882783218","explorer":"https://www.mintscan.io/"},{"id":"theta","rank":"34","symbol":"THETA","name":"THETA","supply":"1000000000.0000000000000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"2642241438.2955742000000000","volumeUsd24Hr":"41824236.1811435582167284","priceUsd":"2.6422414382955742","changePercent24Hr":"-10.4994504432611209","vwap24Hr":"2.8408218784785055","explorer":"https://explorer.thetatoken.org/"},{"id":"thorchain","rank":"35","symbol":"RUNE","name":"THORChain","supply":"334968881.0000000000000000","maxSupply":null,"marketCapUsd":"2501908415.7982427167785351","volumeUsd24Hr":"94960155.0508336829854140","priceUsd":"7.4690771522690871","changePercent24Hr":"-10.3279083054792184","vwap24Hr":"8.0145618638745415","explorer":"https://explorer.binance.org/asset/RUNE-B1A"},{"id":"fantom","rank":"36","symbol":"FTM","name":"Fantom","supply":"2803634835.5265927000000000","maxSupply":"3175000000.0000000000000000","marketCapUsd":"2470848243.3978791380870556","volumeUsd24Hr":"132241136.7515081238378967","priceUsd":"0.8813017344799085","changePercent24Hr":"-6.8324730491008000","vwap24Hr":"0.9249391597376413","explorer":"https://etherscan.io/token/0x4e15361fd6b4bb609fa63c81a2be19d873717870"},{"id":"injective-protocol","rank":"37","symbol":"INJ","name":"Injective","supply":"73005554.3300000000000000","maxSupply":"100000000.0000000000000000","marketCapUsd":"2314902806.3991340212421459","volumeUsd24Hr":"74285294.0020915243095649","priceUsd":"31.7085847459674240","changePercent24Hr":"-8.9467834013918830","vwap24Hr":"33.6182304646486167","explorer":"https://etherscan.io/token/0xe28b3b32b6c345a34ff64674606124dd5aceca30"},{"id":"lido-dao","rank":"38","symbol":"LDO","name":"Lido DAO","supply":"891718364.0799974000000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"2311135167.3891487871042156","volumeUsd24Hr":"9418325.3095763216383366","priceUsd":"2.5917770234255413","changePercent24Hr":"-8.1625422973794542","vwap24Hr":"2.7610547769834087","explorer":"https://etherscan.io/token/0x5a98fcbea516cf06857215779fd812ca3bef1b32"},{"id":"fetch","rank":"39","symbol":"FET","name":"Fetch.ai","supply":"840765820.0505052000000000","maxSupply":null,"marketCapUsd":"2202375606.7790370604988904","volumeUsd24Hr":"186624937.1523460360356035","priceUsd":"2.6194875603372403","changePercent24Hr":"-10.9098785157033889","vwap24Hr":"2.8507561150301845","explorer":"https://etherscan.io/token/0x1d287cc25dad7ccaf76a26bc660c5f7c8e2a05bd"},{"id":"monero","rank":"40","symbol":"XMR","name":"Monero","supply":"18418210.7420527900000000","maxSupply":null,"marketCapUsd":"2189528385.9061855765382336","volumeUsd24Hr":"31167673.6065253836214075","priceUsd":"118.8784522324426981","changePercent24Hr":"-2.7926430257018889","vwap24Hr":"122.8931381588494608","explorer":"http://moneroblocks.info/"},{"id":"arweave","rank":"41","symbol":"AR","name":"Arweave","supply":"65454185.0000000000000000","maxSupply":"66000000.0000000000000000","marketCapUsd":"2179756872.5919675595848730","volumeUsd24Hr":"36312325.3245551248359476","priceUsd":"33.3020245014427658","changePercent24Hr":"-10.7514309923795061","vwap24Hr":"35.5300398637622221","explorer":"https://viewblock.io/arweave"},{"id":"algorand","rank":"42","symbol":"ALGO","name":"Algorand","supply":"8082299400.4987820000000000","maxSupply":"10000000000.0000000000000000","marketCapUsd":"1891890051.4099711184449960","volumeUsd24Hr":"52902714.4185344327896591","priceUsd":"0.2340781945411744","changePercent24Hr":"-9.1192105626674829","vwap24Hr":"0.2474202078875502","explorer":"https://algoexplorer.io/"},{"id":"flow","rank":"43","symbol":"FLOW","name":"Flow","supply":"1497662370.0000000000000000","maxSupply":null,"marketCapUsd":"1740887246.9848039968992400","volumeUsd24Hr":"32947429.2814803160414749","priceUsd":"1.1624030100888520","changePercent24Hr":"-9.1486180501514105","vwap24Hr":"1.2369309300103997","explorer":"https://flowscan.org/"},{"id":"gala","rank":"44","symbol":"GALA","name":"Gala","supply":"30476875325.9761430000000000","maxSupply":null,"marketCapUsd":"1739651653.3109409243405380","volumeUsd24Hr":"83527087.4926248441517176","priceUsd":"0.0570810371701129","changePercent24Hr":"-11.5075767911230214","vwap24Hr":"0.0621014598359925","explorer":"https://ethplorer.io/es/address/0x15d4c048f83bd7e37d49ea4c83a07267ec4203da#chart=candlestick"},{"id":"aave","rank":"45","symbol":"AAVE","name":"Aave","supply":"14795092.0875927400000000","maxSupply":"16000000.0000000000000000","marketCapUsd":"1705419901.8933342454033428","volumeUsd24Hr":"62450379.9926321910896866","priceUsd":"115.2692995620831867","changePercent24Hr":"-7.6050794392283892","vwap24Hr":"124.6053590450829310","explorer":"https://etherscan.io/token/0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"},{"id":"bitcoin-sv","rank":"46","symbol":"BSV","name":"Bitcoin SV","supply":"19677300.0000000000000000","maxSupply":null,"marketCapUsd":"1687965699.9785806948401600","volumeUsd24Hr":"19109391.0148819293106478","priceUsd":"85.7823837609113392","changePercent24Hr":"-13.5884913883703783","vwap24Hr":"92.1490698169492125","explorer":"https://bsvexplorer.io/"},{"id":"hedera-hashgraph","rank":"47","symbol":"HBAR","name":"Hedera Hashgraph","supply":"14832756028.0000000000000000","maxSupply":"50000000000.0000000000000000","marketCapUsd":"1542273244.2070835593514268","volumeUsd24Hr":"29734927.4802277742201301","priceUsd":"0.1039775238867081","changePercent24Hr":"-6.9366470398350692","vwap24Hr":"0.1084617672724228","explorer":"https://hash-hash.info/"},{"id":"quant","rank":"48","symbol":"QNT","name":"Quant","supply":"12072738.0000000000000000","maxSupply":"14881364.0000000000000000","marketCapUsd":"1456612302.7211008882176222","volumeUsd24Hr":"15353744.2293351326254497","priceUsd":"120.6530202776785919","changePercent24Hr":"-6.5304299381127342","vwap24Hr":"126.0119044322017996","explorer":"https://etherscan.io/token/0x4a220e6096b25eadb88358cb44068a3248254675"},{"id":"conflux-network","rank":"49","symbol":"CFX","name":"Conflux","supply":"3848437986.4500000000000000","maxSupply":null,"marketCapUsd":"1397631161.4365612793098898","volumeUsd24Hr":"166244624.7749868814363787","priceUsd":"0.3631684247888347","changePercent24Hr":"-12.9113548093968170","vwap24Hr":"0.4211216538012698","explorer":"http://www.confluxscan.io/"},{"id":"singularitynet","rank":"50","symbol":"AGIX","name":"SingularityNET","supply":"1279461012.6426191000000000","maxSupply":"2000000000.0000000000000000","marketCapUsd":"1384574098.6564128996620789","volumeUsd24Hr":"5640174.8794415894948060","priceUsd":"1.0821541922537300","changePercent24Hr":"-11.6100194408117368","vwap24Hr":"1.1744266919274631","explorer":"https://etherscan.io/token/0x8eb24319393716668d768dcec29356ae9cffe285"},{"id":"the-sandbox","rank":"51","symbol":"SAND","name":"The Sandbox","supply":"2251731926.2233224000000000","maxSupply":"3000000000.0000000000000000","marketCapUsd":"1375213360.6241881721312942","volumeUsd24Hr":"35653012.7699048518604485","priceUsd":"0.6107358272131179","changePercent24Hr":"-8.0626739370555290","vwap24Hr":"0.6471943508297134","explorer":"https://etherscan.io/token/0x3845badAde8e6dFF049820680d1F14bD3903a5d0"},{"id":"axie-infinity","rank":"52","symbol":"AXS","name":"Axie Infinity","supply":"142822204.7010001800000000","maxSupply":"270000000.0000000000000000","marketCapUsd":"1361875600.5589462276246316","volumeUsd24Hr":"23385048.3645228770230969","priceUsd":"9.5354612639543510","changePercent24Hr":"-8.5417677937073272","vwap24Hr":"10.0714708120986847","explorer":"https://etherscan.io/token/0xf5d669627376ebd411e34b98f19c868c8aba5ada"},{"id":"elrond-egld","rank":"53","symbol":"EGLD","name":"MultiversX","supply":"24184559.1898415400000000","maxSupply":"31415926.0000000000000000","marketCapUsd":"1278575359.1706254227733123","volumeUsd24Hr":"23971620.8284210124851919","priceUsd":"52.8674245883165421","changePercent24Hr":"-8.6685016923670943","vwap24Hr":"56.2720302381386104","explorer":"https://explorer.elrond.com/"},{"id":"pendle","rank":"54","symbol":"PENDLE","name":"Pendle","supply":"238185588.2446348700000000","maxSupply":"258446029.0000000000000000","marketCapUsd":"1220330780.3518672113207725","volumeUsd24Hr":"6566138.3740003155545956","priceUsd":"5.1234450805583329","changePercent24Hr":"-7.7966573238587360","vwap24Hr":"5.3488590021308589","explorer":"https://etherscan.io/token/0x808507121b80c02388fad14726482e061b8da827"},{"id":"ecash","rank":"55","symbol":"XEC","name":"eCash","supply":"19678860923092.0000000000000000","maxSupply":"21000000000000.0000000000000000","marketCapUsd":"1213120362.7705688151023972","volumeUsd24Hr":"22042042.0989389049441595","priceUsd":"0.0000616458629141","changePercent24Hr":"-11.3713232849703649","vwap24Hr":"0.0000657841819286","explorer":"https://explorer.bitcoinabc.org/"},{"id":"tezos","rank":"56","symbol":"XTZ","name":"Tezos","supply":"976539045.8202450000000000","maxSupply":null,"marketCapUsd":"1212779318.7535243588764284","volumeUsd24Hr":"23961524.5114685152565207","priceUsd":"1.2419158495960078","changePercent24Hr":"-8.3382076153664036","vwap24Hr":"1.3216466633175160","explorer":"https://tzkt.io/"},{"id":"chiliz","rank":"57","symbol":"CHZ","name":"Chiliz","supply":"8888289967.1249620000000000","maxSupply":"8888888888.0000000000000000","marketCapUsd":"1153052982.7189598109464953","volumeUsd24Hr":"33242945.6463926900451658","priceUsd":"0.1297272014058662","changePercent24Hr":"-9.1862811750629568","vwap24Hr":"0.1376181704729367","explorer":"https://etherscan.io/token/0x3506424f91fd33084466f402d5d97f05f8e3b4af"},{"id":"mina","rank":"58","symbol":"MINA","name":"Mina","supply":"1078823874.8400393000000000","maxSupply":null,"marketCapUsd":"1144487350.0016970750187285","volumeUsd24Hr":"21073482.0463459897402845","priceUsd":"1.0608657971825048","changePercent24Hr":"-10.3460780888487482","vwap24Hr":"1.1338440580347729","explorer":"https://minaexplorer.com/"},{"id":"decentraland","rank":"59","symbol":"MANA","name":"Decentraland","supply":"1908319865.3915880000000000","maxSupply":null,"marketCapUsd":"1115168592.6663963078087661","volumeUsd24Hr":"19764618.3298544166057730","priceUsd":"0.5843719456526033","changePercent24Hr":"-8.5778891951573097","vwap24Hr":"0.6177862839327273","explorer":"https://etherscan.io/token/decentraland"},{"id":"eos","rank":"60","symbol":"EOS","name":"EOS","supply":"1121792993.0371000000000000","maxSupply":null,"marketCapUsd":"1086104994.6094397965555260","volumeUsd24Hr":"90964015.3518533755766749","priceUsd":"0.9681866452641678","changePercent24Hr":"-8.7633637724990601","vwap24Hr":"1.0225481476273992","explorer":"https://bloks.io/"},{"id":"kava","rank":"61","symbol":"KAVA","name":"Kava","supply":"1082860629.0000000000000000","maxSupply":"1082860679.0000000000000000","marketCapUsd":"1062074324.5189409423861934","volumeUsd24Hr":"53253380.9223156535678372","priceUsd":"0.9808042661037046","changePercent24Hr":"-10.5232477499250776","vwap24Hr":"1.0307234810041815","explorer":"https://www.mintscan.io/kava"},{"id":"kucoin-token","rank":"62","symbol":"KCS","name":"KuCoin Token","supply":"96132689.2887907500000000","maxSupply":"170118638.0000000000000000","marketCapUsd":"1048866573.9176439429441983","volumeUsd24Hr":"4300798.5162710338344711","priceUsd":"10.9106130461695482","changePercent24Hr":"0.7424069629466415","vwap24Hr":"11.0343229416489641","explorer":"https://etherscan.io/token/0xf34960d9d60be18cc1d5afc1a6f012a723a28811"},{"id":"neo","rank":"63","symbol":"NEO","name":"Neo","supply":"70538831.0000000000000000","maxSupply":"100000000.0000000000000000","marketCapUsd":"1021314694.3068380417420490","volumeUsd24Hr":"20163127.4648356393078099","priceUsd":"14.4787584345824790","changePercent24Hr":"-9.2329298011906176","vwap24Hr":"15.4248494427187408","explorer":"https://neotracker.io"},{"id":"akash-network","rank":"64","symbol":"AKT","name":"Akash Network","supply":"232263591.9314090000000000","maxSupply":"388539008.0000000000000000","marketCapUsd":"1008991990.6768860179674856","volumeUsd24Hr":"1759296.0804820036084149","priceUsd":"4.3441676858887846","changePercent24Hr":"-4.9091739379149397","vwap24Hr":"4.4264979784000865","explorer":"https://akash.bigdipper.live/"},{"id":"pancakeswap","rank":"65","symbol":"CAKE","name":"PancakeSwap","supply":"245854575.8063887000000000","maxSupply":"450000000.0000000000000000","marketCapUsd":"984351602.7383492676183760","volumeUsd24Hr":"28516652.9482178046415480","priceUsd":"4.0037961445693386","changePercent24Hr":"-8.9056478061692895","vwap24Hr":"4.2304709561675559","explorer":"https://bscscan.com/token/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82"},{"id":"iota","rank":"66","symbol":"IOTA","name":"IOTA","supply":"3191229882.0000000000000000","maxSupply":null,"marketCapUsd":"963143740.2564089092987560","volumeUsd24Hr":"10960489.4494885295453224","priceUsd":"0.3018095768308580","changePercent24Hr":"-9.1354405945845383","vwap24Hr":"0.3197876182995572","explorer":"https://thetangle.org/"},{"id":"synthetix-network-token","rank":"67","symbol":"SNX","name":"Synthetix","supply":"233716733.4900000000000000","maxSupply":"212424133.0000000000000000","marketCapUsd":"962083544.8281988700637897","volumeUsd24Hr":"33671042.1733139273548264","priceUsd":"4.1164512718528277","changePercent24Hr":"-8.0795891571000591","vwap24Hr":"4.3338717559683756","explorer":"https://etherscan.io/token/0xc011a72400e58ecd99ee497cf89e3775d4bd732f"},{"id":"aioz-network","rank":"68","symbol":"AIOZ","name":"AIOZ Network","supply":"1083708461.9952176000000000","maxSupply":null,"marketCapUsd":"914157110.9196963237361065","volumeUsd24Hr":"8252839.6488856449919408","priceUsd":"0.8435452365451129","changePercent24Hr":"-7.0249054356337101","vwap24Hr":"0.8892285774715414","explorer":"https://etherscan.io/token/0x626e8036deb333b408be468f951bdb42433cbf18"},{"id":"helium","rank":"69","symbol":"HNT","name":"Helium","supply":"160875441.8242133300000000","maxSupply":"223000000.0000000000000000","marketCapUsd":"909699806.3013634477846321","volumeUsd24Hr":"5030825.2060041904251579","priceUsd":"5.6546841207459218","changePercent24Hr":"-2.9322935600646735","vwap24Hr":"5.6070449335844596","explorer":"https://explorer.helium.com/"},{"id":"ribbon-finance","rank":"70","symbol":"RBN","name":"Ribbon Finance","supply":"537093440.4611390000000000","maxSupply":null,"marketCapUsd":"909460280.8277576716227542","volumeUsd24Hr":"2030309.3741251103964942","priceUsd":"1.6932999219780287","changePercent24Hr":"0.1475740597753798","vwap24Hr":"1.7024928554679724","explorer":"https://etherscan.io/token/0x6123B0049F904d730dB3C36a31167D9d4121fA6B"},{"id":"gatetoken","rank":"71","symbol":"GT","name":"GateToken","supply":"96484204.4362589300000000","maxSupply":null,"marketCapUsd":"867010270.6864560615484232","volumeUsd24Hr":"25382347.2270680556577894","priceUsd":"8.9860332657791197","changePercent24Hr":"-10.6870288092989743","vwap24Hr":"9.5425716804681141","explorer":null},{"id":"gnosis-gno","rank":"72","symbol":"GNO","name":"Gnosis","supply":"2589588.0000000000000000","maxSupply":"3000000.0000000000000000","marketCapUsd":"855574236.3520187499593160","volumeUsd24Hr":"13798495.3339728438135357","priceUsd":"330.3900992559506570","changePercent24Hr":"-5.1189215454885029","vwap24Hr":"339.5887641361330903","explorer":"https://etherscan.io/token/Gnosis"},{"id":"wootrade","rank":"73","symbol":"WOO","name":"WOO","supply":"1844546131.1328611000000000","maxSupply":null,"marketCapUsd":"854831101.7842727442544887","volumeUsd24Hr":"17867872.4627010841228079","priceUsd":"0.4634370956389488","changePercent24Hr":"-4.4372981717644885","vwap24Hr":"0.4883445462999436","explorer":"https://etherscan.io/token/0x4691937a7508860f876c9c0a2a617e7d9e945d4b"},{"id":"klaytn","rank":"74","symbol":"KLAY","name":"Klaytn","supply":"3573054165.3893356000000000","maxSupply":null,"marketCapUsd":"846067449.8776174746889247","volumeUsd24Hr":"6298041.4420266100175146","priceUsd":"0.2367911066317200","changePercent24Hr":"-8.4991342862491851","vwap24Hr":"0.2507283751079627","explorer":"https://scope.klaytn.com/blocks"},{"id":"oasis-network","rank":"75","symbol":"ROSE","name":"Oasis Network","supply":"6713599876.0000000000000000","maxSupply":"10000000000.0000000000000000","marketCapUsd":"799799400.9571584851532868","volumeUsd24Hr":"16809467.0252992524842220","priceUsd":"0.1191312285106993","changePercent24Hr":"-9.6017514521901942","vwap24Hr":"0.1281318432655006","explorer":"https://www.oasisscan.com/"},{"id":"wemix","rank":"76","symbol":"WEMIX","name":"WEMIX","supply":"365587647.5664909000000000","maxSupply":"980000000.0000000000000000","marketCapUsd":"756555757.8463400698961672","volumeUsd24Hr":"8302342.7276982064752658","priceUsd":"2.0694237425205736","changePercent24Hr":"-7.8801730650465592","vwap24Hr":"2.1565255935538988","explorer":"https://scope.klaytn.com/token/0x5096db80b21ef45230c9e423c373f1fc9c0198dd?tabId=kctTransfer"},{"id":"nervos-network","rank":"77","symbol":"CKB","name":"Nervos Network","supply":"43871537146.8474700000000000","maxSupply":null,"marketCapUsd":"746126489.4117613905090731","volumeUsd24Hr":"34788868.9496890622309884","priceUsd":"0.0170070742430181","changePercent24Hr":"-15.7747578288675703","vwap24Hr":"0.0186532940928222","explorer":"https://explorer.nervos.org/"},{"id":"bitcoin-gold","rank":"78","symbol":"BTG","name":"Bitcoin Gold","supply":"17513923.5890000000000000","maxSupply":"21000000.0000000000000000","marketCapUsd":"732401774.0861742673150837","volumeUsd24Hr":"174675.7570017506159775","priceUsd":"41.8182579342857876","changePercent24Hr":"-9.6767035695123060","vwap24Hr":"44.8805936634081103","explorer":"https://explorer.bitcoingold.org/insight/"},{"id":"nexo","rank":"79","symbol":"NEXO","name":"Nexo","supply":"560000011.0000000000000000","maxSupply":null,"marketCapUsd":"712919593.8166341566096851","volumeUsd24Hr":"2034119.2780499040692173","priceUsd":"1.2730706782372441","changePercent24Hr":"-4.6318984695526931","vwap24Hr":"1.2909970322152086","explorer":"https://etherscan.io/token/0xb62132e35a6c13ee1ee0f84dc5d40bad8d815206"},{"id":"curve-dao-token","rank":"80","symbol":"CRV","name":"Curve DAO Token","supply":"1171807811.0000000000000000","maxSupply":"3303030299.0000000000000000","marketCapUsd":"710580656.8399967408287734","volumeUsd24Hr":"6070632.1413660938470239","priceUsd":"0.6063969280368594","changePercent24Hr":"-8.3876700310523215","vwap24Hr":"0.6410499835243864","explorer":"https://etherscan.io/token/0xD533a949740bb3306d119CC777fa900bA034cd52"},{"id":"blox","rank":"81","symbol":"CDT","name":"Blox","supply":"1000000000.0000000000000000","maxSupply":null,"marketCapUsd":"643146900.5727828000000000","volumeUsd24Hr":"301705.7683029539417104","priceUsd":"0.6431469005727828","changePercent24Hr":"-2.5468980823614373","vwap24Hr":null,"explorer":"https://etherscan.io/token/0x177d39ac676ed1c67a2b268ad7f1e58826e5b0af"},{"id":"ocean-protocol","rank":"82","symbol":"OCEAN","name":"Ocean Protocol","supply":"568381102.7486407000000000","maxSupply":"1410000000.0000000000000000","marketCapUsd":"639843031.7229123625690614","volumeUsd24Hr":"28045036.3923032887903562","priceUsd":"1.1257288967361654","changePercent24Hr":"-10.1690640663868609","vwap24Hr":"1.2052538382749949","explorer":"https://etherscan.io/token/0x7AFeBBB46fDb47ed17b22ed075Cde2447694fB9e"},{"id":"1inch","rank":"83","symbol":"1INCH","name":"1inch Network","supply":"1145683619.9099810000000000","maxSupply":null,"marketCapUsd":"628459636.2411501302739131","volumeUsd24Hr":"25280129.7858494309249949","priceUsd":"0.5485455367604275","changePercent24Hr":"-9.8334613453816282","vwap24Hr":"0.5863443194652728","explorer":"https://etherscan.io/token/0x111111111117dc0aa78b770fa6a738034120c302"},{"id":"iotex","rank":"84","symbol":"IOTX","name":"IoTeX","supply":"9441378955.0000000000000000","maxSupply":"10000000000.0000000000000000","marketCapUsd":"624780196.3162511204096720","volumeUsd24Hr":"16415768.6957339227609891","priceUsd":"0.0661746763151984","changePercent24Hr":"-8.7590080345468358","vwap24Hr":"0.0707115837745215","explorer":"https://etherscan.io/token/0x6fb3e0a217407efff7ca062d46c26e5d60a14d69"},{"id":"ravencoin","rank":"85","symbol":"RVN","name":"Ravencoin","supply":"13687764252.1639180000000000","maxSupply":"21000000000.0000000000000000","marketCapUsd":"615018380.9132046826021365","volumeUsd24Hr":"41582369.1107936607232501","priceUsd":"0.0449319822860023","changePercent24Hr":"-6.2438116267236641","vwap24Hr":"0.0470347740685715","explorer":"https://ravencoin.network/"},{"id":"enjin-coin","rank":"86","symbol":"ENJ","name":"Enjin Coin","supply":"1379841765.7600000000000000","maxSupply":null,"marketCapUsd":"597008028.5174183579327366","volumeUsd24Hr":"13555665.1467514957632580","priceUsd":"0.4326641237653751","changePercent24Hr":"-8.9060403182979664","vwap24Hr":"0.4608800048464523","explorer":"https://etherscan.io/token/0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c"},{"id":"rocket-pool","rank":"87","symbol":"RPL","name":"Rocket Pool","supply":"20217174.1801535400000000","maxSupply":null,"marketCapUsd":"588459762.0882805394959832","volumeUsd24Hr":"2127362.4370800128947500","priceUsd":"29.1069244813624820","changePercent24Hr":"0.7859536968080067","vwap24Hr":"30.2762319474817946","explorer":"https://etherscan.io/token/0xb4efd85c19999d84251304bda99e90b92300bd93"},{"id":"skale-network","rank":"88","symbol":"SKL","name":"SKALE","supply":"5339102671.0000000000000000","maxSupply":"7000000000.0000000000000000","marketCapUsd":"578753549.1146484615347962","volumeUsd24Hr":"29538829.8616936420479246","priceUsd":"0.1083990297205222","changePercent24Hr":"-8.7302085373850028","vwap24Hr":"0.1153858431119732","explorer":"https://etherscan.io/token/0x00c83aecc790e8a4453e5dd3b0b4b3680501a7a7"},{"id":"celo","rank":"89","symbol":"CELO","name":"Celo","supply":"533817831.0000000000000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"575347725.8495789925458214","volumeUsd24Hr":"15655627.9959839500581425","priceUsd":"1.0777978786729194","changePercent24Hr":"-14.4918714034161046","vwap24Hr":"1.1779863245492874","explorer":"https://explorer.celo.org/blocks"},{"id":"superfarm","rank":"90","symbol":"SUPER","name":"SuperVerse","supply":"487776093.4169172600000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"572187340.9681768089291687","volumeUsd24Hr":"6005564.4129749086073766","priceUsd":"1.1730532690931014","changePercent24Hr":"-10.2509831056156240","vwap24Hr":"1.2591530582196704","explorer":"https://etherscan.io/token/0xe53ec727dbdeb9e2d5456c3be40cff031ab40a55"},{"id":"compound","rank":"91","symbol":"COMP","name":"Compound","supply":"8096557.7344699200000000","maxSupply":"10000000.0000000000000000","marketCapUsd":"566893720.0991482449959074","volumeUsd24Hr":"19706215.0604114076181454","priceUsd":"70.0166340673000416","changePercent24Hr":"-8.3763127253662603","vwap24Hr":"74.5280262875917997","explorer":"https://etherscan.io/token/0xc00e94cb662c3520282e6f5717214004a7f26888"},{"id":"ftx-token","rank":"92","symbol":"FTT","name":"FTX Token","supply":"328895103.8132070000000000","maxSupply":"352170015.0000000000000000","marketCapUsd":"565692615.4088817001421020","volumeUsd24Hr":"15851783.6863511267764641","priceUsd":"1.7199788286607079","changePercent24Hr":"-6.9921322773731866","vwap24Hr":"1.8019281544321200","explorer":"https://etherscan.io/token/0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9"},{"id":"ankr","rank":"93","symbol":"ANKR","name":"Ankr","supply":"10000000000.0000000000000000","maxSupply":null,"marketCapUsd":"562842863.3414980000000000","volumeUsd24Hr":"74505060.0590953336854707","priceUsd":"0.0562842863341498","changePercent24Hr":"-12.7205595205727717","vwap24Hr":"0.0636420070363681","explorer":"https://etherscan.io/token/0x8290333ceF9e6D528dD5618Fb97a76f268f3EDD4"},{"id":"zilliqa","rank":"94","symbol":"ZIL","name":"Zilliqa","supply":"17372203179.0000000000000000","maxSupply":"21000000000.0000000000000000","marketCapUsd":"561992717.8924190146215099","volumeUsd24Hr":"27945582.8155084626366549","priceUsd":"0.0323501119634481","changePercent24Hr":"-11.7752504351753857","vwap24Hr":"0.0349238402749013","explorer":"https://etherscan.io/token/0x05f4a42e251f2d52b8ed15e9fedaacfcef1fad27"},{"id":"dydx","rank":"95","symbol":"DYDX","name":"dYdX","supply":"183765523.0000000000000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"560523588.7847325680714061","volumeUsd24Hr":"29439202.2751086815345422","priceUsd":"3.0502108319019807","changePercent24Hr":"-7.1566908789232614","vwap24Hr":"3.1940899259672097","explorer":null},{"id":"0x","rank":"96","symbol":"ZRX","name":"0x Protocol","supply":"847496054.8027713000000000","maxSupply":"1000000000.0000000000000000","marketCapUsd":"558547009.7389282922895490","volumeUsd24Hr":"30249292.3476881306829187","priceUsd":"0.6590555868356378","changePercent24Hr":"-7.5181486060595951","vwap24Hr":"0.6982920868896751","explorer":"https://etherscan.io/token/ZRX"},{"id":"golem-network-tokens","rank":"97","symbol":"GLM","name":"Golem","supply":"1000000000.0000000000000000","maxSupply":null,"marketCapUsd":"549835583.1709227000000000","volumeUsd24Hr":"1314238.2387864710998585","priceUsd":"0.5498355831709227","changePercent24Hr":"-4.4539659945947751","vwap24Hr":"0.5690322419184747","explorer":"https://etherscan.io/token/Golem"},{"id":"xinfin-network","rank":"98","symbol":"XDC","name":"XinFin Network","supply":"12293293518.5500000000000000","maxSupply":null,"marketCapUsd":"544889724.7064338163847467","volumeUsd24Hr":"1456607.6216961908780090","priceUsd":"0.0443241450213664","changePercent24Hr":"-5.0939002588661041","vwap24Hr":"0.0478151513863290","explorer":"https://etherscan.io/token/0x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf2"},{"id":"raydium","rank":"99","symbol":"RAY","name":"Raydium","supply":"259765681.8674450000000000","maxSupply":"555000000.0000000000000000","marketCapUsd":"539402392.0527343222444074","volumeUsd24Hr":"40268777.5289710955273763","priceUsd":"2.0764959719659360","changePercent24Hr":"-11.4291073304762144","vwap24Hr":"2.2143871917388994","explorer":"https://explorer.solana.com/address/4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"},{"id":"theta-fuel","rank":"100","symbol":"TFUEL","name":"Theta Fuel","supply":"6500303284.0000000000000000","maxSupply":null,"marketCapUsd":"534659833.3729992941456028","volumeUsd24Hr":"18899205.0792208695587766","priceUsd":"0.0822515212004067","changePercent24Hr":"-13.5929740232028032","vwap24Hr":"0.0919226376728713","explorer":"https://explorer.thetatoken.org/"}],"timestamp":1712048946196}

I did the following:
SCORE_URL = "https://api.coincap.io/v2/assets"
        resp = session.get(SCORE_URL)
        json_data = json_stream.load(resp.iter_content(99))
        for coin in json_data['data']:
            symbol = coin['symbol']
            if symbol in coins:
                keys=['priceUsd', 'changePercent24Hr', 'vwap24Hr']
                coin_data[symbol]= {key: coin[key] for key in keys}
        print(coin_data)
        resp.close()

It seems to be the only way to get the job done. Finish() doesn't work, accessing a key twice seems to "consume" that value without the possibility to access it again.

Finish() doesn't work, accessing a key twice seems to "consume" that value without the possibility to access it again.

finish() isn't meant to return the object. It just consumes all of the object's characters and implicitly returns None.
All accesses will consume the stream and you cannot go backwards.
Seems like finish() is working as intended but not as you expected.


Properly set caret position after failed match

This PR fixes an issue where after match failure and unwrapping the span.atwho-query the caret is moved at the end of the next sibling text node. Most often this will lead to moving the caret to the end of the current line/paragraph.
E.g. if we have hello world text in the editor and if we use the pipe character | to denote the caret position, and the caret is in-between the words then we will have the following scenario:
hello |world

then entering @aa which let's assume is so far a valid match of available words. Then the editor would look like:
hello @aa|world

After this if the user presses space then we will have a mismatch and the editor would look like:
hello @aaworld|

The caret position will be at the end of the line instead of after @aa .
With this PR, the resulted editor content and caret position would be
hello @aa |world

Implementation notes
This PR removes the _unwrap method as it is introducing the bug while trying to do text node defragmentation. Instead a pure jquery unwrapping is used and then normalization is called on the parent node. normalize would defragment all text child nodes of an element while at the same time preserving the correct position of the caret.
For more info on normalize see https://developer.mozilla.org/en-US/docs/Web/API/Node/normalize

Btw about the specs failing, I do not know why the onreadystatechange fails. For me it also fails locally even with the master branch.

Btw about the specs failing, I do not know why the onreadystatechange fails. For me it also fails locally even with the master branch.

Thanks a lots. I will take care of this problem.


Implement integration tests in a Maven plugin way

Some resources are linked in this SO answer: https://stackoverflow.com/a/2776598/1444288.


Dashboard import fails due to schema mismatch

Command superset import-dashboards fails because of following schema mismatches:

ValidationError({'extra': {'allows_virtual_table_explore': ['Unknown field.']}}) on schema ImportV1DashboardSchema in https://github.com/apache/superset/blob/7e4c940314ab6b09a89cb6938b02cf5d3028ad8a/superset/dashboards/schemas.py#L279
ValidationError({'query_context': ['Unknown field.']}) on schema ImportV1ChartSchema in https://github.com/apache/superset/blob/7e4c940314ab6b09a89cb6938b02cf5d3028ad8a/superset/charts/schemas.py#L1228

Removing the fields fixes the import. The archive was created by exporting from another Superset host.
How to reproduce the bug

Export dashboards from one Superset host
Try to import on another Superset host

Expected results
Expect import to succeed.
Actual results
Import fails with validation errors as above.
Environment
(please complete the following information):

browser type and version:
superset version: 1.3.0 on source host, 1.2.0 on destination host
python version: 3.8.10
any feature flags active:

FEATURE_FLAGS = {
    "DYNAMIC_PLUGINS": True,
    "ROW_LEVEL_SECURITY": True,
    "VERSIONED_EXPORT": True,

    "THUMBNAILS": True,
    "THUMBNAILS_SQLA_LISTENERS": True,
    "LISTVIEWS_DEFAULT_CARD_VIEW": True,
}

Checklist
Make sure to follow these steps before submitting your issue - thank you!

[x] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[x] I have reproduced the issue with at least the latest released version of superset.
[x] I have checked the issue tracker for the same issue and I haven't found one similar.

Closing this as stale since it didn't get any answers or corroboration in so long. Sorry for that. if you're still facing this issue in Superset 2.0.1, particularly with the VERSIONED_EXPORTS flag turned on (which is preferred by now), let us know and we can revisit/reopen.


IndexError: list index out of range

Traceback (most recent call last):
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/bin/../lib/python/report.py", line 47, in
main()
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/bin/../lib/python/report.py", line 43, in main
args.issues_json, bugs_out, args.pmd_xml)
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/lib/python/inferlib/issues.py", line 191, in print_and_save_errors
file_out.write(_pmd_xml_of_issues(errors))
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/lib/python/inferlib/issues.py", line 217, in _pmd_xml_of_issues
class_name = info[-2:-1][0]
IndexError: list index out of range
** Error running the reporting script:
xcode:8.2.1
python:2.7

@baxiang: What is the top-level analysis command that you are using ?

infer  -- xcodebuild -workspace PuddingPlus.xcworkspace -scheme PuddingPlus  -configuration Debug  clean
infer --pmd-xml -- xcodebuild -workspace PuddingPlus.xcworkspace -scheme PuddingPlus -configuration Debug

Are both commands failing or just the second one ?

remove  --pmd-xml ,the  analysis command success。
add  --pmd-xml print:
.too many issues to display (limit=10 exceeded), please see /Users/roobo/Documents/Pudding_Plus/infer-out/bugs.txt or run inferTraceBugs for the remaining issues.
Summary of the reports
      DIRECT_ATOMIC_PROPERTY_ACCESS: 259
                   NULL_DEREFERENCE: 75
                       RETAIN_CYCLE: 39
         PARAMETER_NOT_NULL_CHECKED: 39
             BAD_POINTER_COMPARISON: 36
                        MEMORY_LEAK: 20
             ASSIGN_POINTER_WARNING: 13

REGISTERED_OBSERVER_BEING_DEALLOCATED: 8
RESOURCE_LEAK: 5
IVAR_NOT_NULL_CHECKED: 1
STRONG_DELEGATE_WARNING: 1
Traceback (most recent call last):
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/bin/../lib/python/report.py", line 47, in
main()
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/bin/../lib/python/report.py", line 43, in main
args.issues_json, bugs_out, args.pmd_xml)
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/lib/python/inferlib/issues.py", line 191, in print_and_save_errors
file_out.write(_pmd_xml_of_issues(errors))
File "/usr/local/Cellar/infer/0.10.0/lib/infer/infer/lib/python/inferlib/issues.py", line 217, in _pmd_xml_of_issues
class_name = info[-2:-1][0]
IndexError: list index out of range
** Error running the reporting script:
**   /usr/local/Cellar/infer/0.10.0/lib/infer/infer/bin/../lib/python/report.py --issues-csv /Users/roobo/Documents/Pudding_Plus/infer-out/report.csv --issues-json /Users/roobo/Documents/Pudding_Plus/infer-out/report.json --pmd-xml --project-root /Users/roobo/Documents/Pudding_Plus --results-dir /Users/roobo/Documents/Pudding_Plus/infer-out
** See error above

Looks like the xml output is assuming some format for the "procedure_id" field of the json that doesn't work for ObjC: https://github.com/facebook/infer/blob/master/infer/lib/python/inferlib/issues.py#L215-L218
Thanks for the report, I'll look into it.

@baxiang I cannot reproduce your issue on a simple xcodebuild example. Can you paste your infer-out/report.json?

https://drive.google.com/open?id=0B2FWH0mS2hdhbEhaZUZIOGpVMzg

Thanks for the report @baxiang, this should be fixed in master now.


[DISCUSS] all the GET requests are working but the POST requests are returning internal server error in heroku

Eg: curl https://journal-policy-tracker.herokuapp.com/ this works since it's a normal GET request
But curl https://journal-policy-tracker.herokuapp.com/users/register doesn't work and it's a POST request

To be discussed further in #42


undefined_named_parameter for TextTheme on stable channel

Hi, in my application I have got a file res.dart where I define my theme, and in this, I create a new TextTheme redefining every headline, bodyText and subtitle; I'm developing using the master channel of flutter and if I run flutter analyze all works well, but if I switch to the stable channel
than flutter analyze and vsCode marks all my redefined TextTheme parameters as undefined_name_parameter. I've tried using the dev channel and all worked fine.
Steps to Reproduce

Install flutter from the stable channel (version v1.12.13+hotfix.8)
run flutter analyze or open and IDE
the error appears

Logs

error • Undefined name 'headline6' • lib/res/text_appearance.dart:5:33 • undefined_identifier
  error • Undefined name 'subtitle2' • lib/res/text_appearance.dart:9:37 • undefined_identifier
  error • Undefined name 'headline5' • lib/res/text_appearance.dart:22:30 • undefined_identifier
  error • Undefined name 'bodyText1' • lib/res/text_appearance.dart:26:29 • undefined_identifier
  error • The named parameter 'headline1' isn't defined • lib/res/theme.dart:24:5 • undefined_named_parameter
  error • The named parameter 'headline2' isn't defined • lib/res/theme.dart:30:5 • undefined_named_parameter
  error • The named parameter 'headline3' isn't defined • lib/res/theme.dart:36:5 • undefined_named_parameter
  error • The named parameter 'headline4' isn't defined • lib/res/theme.dart:42:5 • undefined_named_parameter
  error • The named parameter 'headline5' isn't defined • lib/res/theme.dart:48:5 • undefined_named_parameter
  error • The named parameter 'headline6' isn't defined • lib/res/theme.dart:54:5 • undefined_named_parameter
  error • The named parameter 'subtitle1' isn't defined • lib/res/theme.dart:60:5 • undefined_named_parameter
  error • The named parameter 'subtitle2' isn't defined • lib/res/theme.dart:66:5 • undefined_named_parameter
  error • The named parameter 'bodyText1' isn't defined • lib/res/theme.dart:72:5 • undefined_named_parameter
  error • The named parameter 'bodyText2' isn't defined • lib/res/theme.dart:78:5 • undefined_named_parameter
  error • The getter 'subtitle1' isn't defined for the class 'TextTheme' • lib/screens/calibrate_device_screen.dart:113:46 • undefined_getter
  error • The getter 'headline5' isn't defined for the class 'TextTheme' • lib/screens/calibrate_device_screen.dart:127:50 • undefined_getter
  error • The getter 'bodyText1' isn't defined for the class 'TextTheme' • lib/screens/calibrate_device_screen.dart:132:50 • undefined_getter
  error • The getter 'headline5' isn't defined for the class 'TextTheme' • lib/screens/calibrate_device_screen.dart:141:46 • undefined_getter
  error • The getter 'headline6' isn't defined for the class 'TextTheme' • lib/screens/measurements_screen.dart:30:56 • undefined_getter
  error • The getter 'headline2' isn't defined for the class 'TextTheme' • lib/widgets/cicular_counter.dart:175:42 • undefined_getter
  error • The getter 'headline6' isn't defined for the class 'TextTheme' • lib/widgets/cicular_counter.dart:181:46 • undefined_getter

Hi @Supercaly
If it works on master channel, no need  of issue tracking, since it's working on master, it will trickle down to stable
if you disagree please write in the comments and I will reopen it
Thank you


Remove the userActivity from the stack of activties

Remove the userActivity from the stack of activties so that we can't come back on it with back navigation.
To reproduce the bug:

Save a change in userActivity
Go to a list of users
Press back to leave the app => you will arrive on the userActivity

Fixed by #83


Restrict lan access

Thank you for creating this wonder full repo, installation and configuration made extremely easy.
Surprisingly this VPN on Windows 10 is faster than on Ubuntu (virtual machine with same hardware etc).
One question, how do I go about limiting access to certain networks in my LAN? I assume via local firewall rules but am not sure.
-M

Hi @kababoom.
Thanks for the compliments! However, the read credit goes to WireGuard for the excellent VPN technology. My simple app just helps to configure it on Windows.
The same is true for any advanced questions like how to limit LAN access. That's really a question for WireGuard that you can check in their documentation. However, I will try to help anyway.
One thing you can do is modify the "Allowed IPs" field in the Client Configuration. By default, it's set to <IP_ADDRESS>/0, which means that a request to any IP address in that range (which is everything!) will be routed over the VPN connection. If you set it to a specific subnet, like <IP_ADDRESS>/24, only requests to IPs in that range will be routed.
The downside to that approach is that it's a client-side setting, so you can enforce it on the server. A rogue client could change the value to <IP_ADDRESS>/0 and then access the whole subet.
If you want to do something on the server side, you may have to manipulate one of the two ways that network connectivity is shared between the WireGuard adapter and the main network adapter on your machine. A quick search did not return anything obvious to me, but you're welcome to look more. This is digging deep into how Windows networking works. 😊 You can look up solution for both of the two approaches that WS4W allows: NAT (look new New-NetNat) or Internet Connection Sharing. In both cases, they automatically give you whatever access the adapter that you're sharing has.
The other option, like you suggested, may be to limit the abilities of the adapter itself with something like a firewall.
Sorry I don't have all the details on that!

Hi @micahmo,
Thanks, yes from client side works fine but indeed I'm looking for something from server side. Will investigate further on firewall settings and NetNat when I got the time...
Will comment on this issue when I find something that perhaps will help others looking for the same.
-M

Are there an news on that topic? I have tried blocking outgoing connections from Wireguard peers to my local network in the Windows Firewall but the rules are ignored. I only can block the server/host itself to other local IP or peers. Is the Windows Firewall maybe unable to block traffic inside the vSwitch NAT device?


Option to suppress "Unknown format" errors

I'm using AJV in conjunction with a bunch of OpenAPI specs, which allow anything to be in the "format" field.  With unknownFormats set to ignore, I get a wall of error messages.
What version of Ajv you are you using?
4.11.5
What problem do you want to solve?
Suppress "unknown format" errors
What do you think is the correct solution to problem?
Add a new option ("suppress")
Will you be able to implement it?
Would be happy to, if you could point me in the right direction

Not sure I understand why it is needed. The idea that you can quietly suppress all unknown format will lead to mistakes and unnoticed typos (an false positive results are usually the most difficult to detect with JSON schema).
Although the value of format can be any string, it has some semantic meaning, so your options currently are:

fail on unknown formats - you will need to add them all, and you can always add them as ajv.addFormat('name', /.*/) if you want to delay the actual implementation.
whitelist unknown formats you want to ignore by passing an array of values to unknownFormats option. In this case you won't get warnings if these formats are used.
"ignore" all unknown formats (which is prone to errors even with warnings).

I don't understand why you need an additional value for this option and whitelisting those formats you don't want to implement is not good enough.
What is the use case?
Also, the latest version is 5.0.0 - https://github.com/epoberezkin/ajv/releases/tag/5.0.0

Also if you want to disable formats completely you can use option format: false, in which case ALL formats will be quietly ignored

I'm working with a constantly changing list of schemas from the wild, so I can't whitelist. I'd like to completely ignore unknown formats, but validate the ones supported by JSON schema.
format: false helps, but I'm guessing that disables e.g. email validation.

I'm guessing that disables e.g. email validation

That is correct.
I am still not convinced that suppressing warning on a library level is a good idea... The problem here, even in your case, is that you are using third party schemas ignoring some part of them without providing any feedback to providers of those schemas. An option for your app/library here would be to process and report these warnings somehow.
If anything, there should either be an option to suppress all warnings (e.g. quiet: true) or for more granular control all options that may lead to warning should support value "quiet". Or both...

#618 should address it - it will be possible to capture all warnings/errors in a function and to decide there whether to log them.

According to this book, validators should ignore formats that aren't understood by default:
https://json-schema.org/understanding-json-schema/reference/string.html#format
@epoberezkin

The problem with simply ignoring anything is that you would not catch typos and you never know what is ignored. That’s the reason why default is not to ignore. Permissiveness of JSON Schema makes it very difficult to maintain schemas - can you imagine a programming language that ignores all statements and that it doesn’t know about? Well, it’s JSON Schema.
You can also whitelist formats that may be used in schema and not supported

I cannot get my schema with a custom format to validate.
const schema = {
  postcode: {
    title: 'form.address.postcode',
    type: 'string',
    format: 'postcode'
  },
  houseNumber: { title: 'form.address.house-number', type: [ 'string' ] },
  extension: { title: 'form.address.extension', type: [ 'string' ] },
  addressDetails: { title: 'form.address.your-address', type: 'string' },
  additionalProperties: false,
}

const validator = new Ajv({ unknownFormats: 'ignore' })
const validate = validator.compile(schema)

const formInput = { postcode: "1234AB" }

const valid = validate(formInput)

Throws:
unknown format "postcode" ignored in schema at path "#/properties/postcode"

I cannot get my schema with a custom format to validate.
const schema = {
  postcode: {
    title: 'form.address.postcode',
    type: 'string',
    format: 'postcode'
  },
  houseNumber: { title: 'form.address.house-number', type: [ 'string' ] },
  extension: { title: 'form.address.extension', type: [ 'string' ] },
  addressDetails: { title: 'form.address.your-address', type: 'string' },
  additionalProperties: false,
}

const validator = new Ajv({ unknownFormats: 'ignore' })
const validate = validator.compile(schema)

const formInput = { postcode: "1234AB" }

const valid = validate(formInput)

Throws:
unknown format "postcode" ignored in schema at path "#/properties/postcode"


Bidirectional Stream on C++ Client Hangs When ClientContex Destructor Called

What version of gRPC and what language are you using?
C++ on v1.12.0
What operating system (Linux, Windows, …) and version?
MacOS
What runtime / compiler are you using (e.g. python version or version of gcc)
Apple LLVM version 9.1.0 (clang-9<IP_ADDRESS>)
Target: x86_64-apple-darwin17.7.0
What did you do?
I have a class that handles a bidirectional stream to communicate with a server written in Go. This class is apart of a plugin that is used in a Unity project. It uses AsyncNext for the context queue so it does not block the main thread / game loop.
Everything works fine until I call out to a function that calls delete on the object managing the gRPC stream. Calling delete blocks and takes more than 5 seconds to return.
By the time delete is called on the object. I have shut down the stream with Finish( or the client context with TryCancel() and completion queue with Shutdown()
What did you expect to see?
I would expect the class and its instance variable destructors to be deallocated fairly quickly.
What did you see instead?
The program hangs for a few seconds until the object is finally deleted. Some profiling in Unity and Instruments have pointed me towards ~ClientContext() and subsequently ~Channel() for being the possible blocking methods.
I have run a test program with export GRPC_VERBOSITY=DEBUG but did not see any logs printed during the deletion of my object.
I've attached two profiles done. One from Unity that shows the delete function hanging:
    void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API MatcherDelete(void *matcher) {
        delete reinterpret_cast<Matcher *>(matcher);
    }

The second is from attaching Instruments to Unity.

My test program all in C++ that calls delete does not freeze as it does when run from Unity.
Anything else we should know about your project / environment?

Can you clarify the following  ?

By the time delete is called on the object. I have shut down the stream with Finish( or the client context with TryCancel() and completion queue with Shutdown()

I am assuming you finished the bidi stream (from client side) by calling Finish(),  called Shutdown() on the completion queue and TryCancel() on the ClientContext object . Is that correct?

Did the ClientAsyncReaderWriter::Finish(Status* status, void *tag) operation complete ? (i.e did the tag you passed return out of the completion queue? also, what is the returned status value ?) .
After you called CompletionQueue::Shutdown(), did you wait until CompletionQueue::Next() returned false? (to make sure that the queue was actually shutdown?)
Approximately how many seconds is it taking for the ClientContext destruction to fully complete?

I do agree that It is a bit strange that it is taking several seconds but from the traces you posted, it seems like this is also calling grpc_shutdown (i.e you no longer have any active grpc calls or channels open. Hence the grpc library is 'shutting down') and this can sometimes take a few seconds to do a clean-shutdown.
In addition to doing export GRPC_VERBOSITY=DEBUG, if you also turn on tracing as mentioned here
Perhaps export GRPC_TRACE=all,-tcp  (all traces except tcp which tend to be very verbose)


Report template "Collection Links" prints always a header

Even though disabled it in template options

Need to add
ul.collection:not(.with-header) li.collection-header {
    display: none;
}


Fixed e2e tests by adding the header element

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)

Fixed e2e task by adding the header element in the template of the app

What is the current behavior? (You can also link to an open issue here)

e2e tests fail

What is the new behavior (if this is a feature change)?

e2e tests pass

Other information:

thanks!


Add Blargg and Mooneye tests as unit tests

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

https://github.com/retrio/gb-test-roms
These tests should be reimplemented in c# to test against the emulator

https://github.com/mattcurrie/dmg-acid2

https://github.com/EricKirschenmann/MBC3-Tester-gb

https://robertheaton.com/gameboy-doctor/


Resizing results from multiple searchengines (-c ALL) overwrites images

https://github.com/cwerner/fastclass/blob/4e418fa9aff2544b01052d005569b3b4912ca641/fc_download.py#L117
It looks like resize overwrites the output files when multiple crawlers are used. For example when resizing it goes throw the google results first and resizes 000001.jpg from the google results to the output folder. Then it resizes the the Bing results 00001.jpg and saves it to the sames folder overwriting the image from Google. And finally resizes the image 00001.jpg from Baidu and also saves it to the output folder overwriting the image from big.
So:
tmp/searchterm.google/000001.jpeg -> dataset/searchterm/000001.jpg
tmp/searchterm.bing/000001.jpeg -> dataset/searchterm/000001.jpg
tmp/searchterm.baidu/000001.jpeg -> dataset/searchterm/000001.jpg
Leaving only the image from the Baidu search in the output folder.

This should be fixed now. In the current version all crawlers save into the same file and increment the file count.


Computed values : seed.config

I re-open https://github.com/mgechev/angular2-seed/pull/968 because it's for me (and propably many users) still an important problem.
I work on windows 10, and computed values bother me a lot. Why :

build.prod is not working with external libraries like ng2-translate, moment, etc... WE need to add them into SYSTEM_BUILDER_CONFIG.packages.
some attributes like APP_CLIENT, APP_SRC are used to compute other attributes into seed.config.ts, so we can't edit it properly into project.config !

The consequences: everytime I pull ng2-seed (I do it frequently because I love your work), I have to merge the seed.config file and take care of any changes :(
A solution, as discussed into previous posts, could and should be to wrap all attributes into an init method called from the constructor of project.config.
Something like :
init() {
  // The purpose of init is to look if this.APP_SRC is already set (ex: from project.config). If not, set default value
  this.APP_SRC = (typeof this.APP_SRC === 'undefined') ? `src/${this.APP_CLIENT}` :  this.APP_SRC;

  // repeat for all attributes of seed.config
}

I sincerely hope, it will not be closed until resolved. Thanks.

Yes, this is an important issue. What do you think about the decorator proposed by https://github.com/mgechev/angular-seed/pull/968? Maybe init is a better solution since we don't introduce new syntax but only a convention.

@lifaon74 let's use init method - seems cleaner, minimalistic with no extra syntax. Do you want to do the change, or I can take it next week?

I dont realy have time, if you don't have too, maybe I'lll take a full evening and do it. As you want.

I played with this task today. The init approach is not very clean:

We cannot provide default values (or if we want to, we need to introduce computations with different logic in seed.config.ts).
We need to introduce the convention to always invoke the init method in project.config.ts.
We will introduce breaking changes with the current way of adding packages (addPackageBundles).

Hum,

I don't see why you could'nt provide default values ?
Why not ?

Another solution: what about a json config file ? Read by seed.config.ts which will extends its own attributes ? And then no more argv['base'], but something like argv['config-file']

@lifaon74 yikes! i actually dig that idea of the .json config file! Reminds me of angular-cli.json they use with angular-cli. Are you interested in sketching out a more detailed proposal? :)


Inference result is not expected, totally fail

Hi, I want to use this code to complete the human body. The input mask is extracted with mask-rcnn. But the result is not expected:

I also tried the example image in the repo, but the result is also bad:

What is the problem? Many thanks!

The mask is too noisy.
There should no margin between two occluding masks, adjust parameter dilate_kernel to avoid it.

Hi, I want to use this code to complete the human body. The input mask is extracted with mask-rcnn. But the result is not expected:  I also tried the example image in the repo, but the result is also bad:  What is the problem? Many thanks!

I now want to experiment with my own data, but I don't know how to label it.
Can you help me ?

Hi, I want to use this code to complete the human body. The input mask is extracted with mask-rcnn. But the result is not expected:  I also tried the example image in the repo, but the result is also bad:  What is the problem? Many thanks!

I now want to experiment with my own data, but I don't know how to label it. Can you help me ?

I now want to experiment with my own data, but I don't know how to label it.
Can you help me ?


Document how to set up Gitlab CI NVIDIA GPU bound builds

Context
I managed to get Unity builds to run on NVIDIA GPUs for Gitlab CI pipelines. I would like to add this to the shared knowledge base of this community. Most of the work consists of setting up the build machine and gitlab-runners. This was done on computers running Ubuntu 20.04 with gitlab-runners using privileged docker executors.
Additional details
Attached is screenshot proof of the results and rough documentation of how I managed to achieve this.

GameCI GPU Setup.md

Amazing pioneering! And thank you so much for documenting the process.
In GitHub (Cloud Runner) documentation we already have a section called Advanced topics.
Please feel free to create such a section under GitLab as well and add this first topic.
It would be helpful if you could brush up the documentation as much as possible where needed, so that it can make for a solid basis on this topic. PRs welcome!

I think there is some of the steps that can be integrated into https://gitlab.com/game-ci/unity3d-gitlab-ci-example. Not sure if that is something that you guys would be interested in.

Definitely! PRs are also welcome in the example repositories.
I do think it is important that it doesn't break the current flow, and is treated as an opt-in feature based on some parameters.
For example, -nographics can't be removed by default (probably not even if there are NVIDIA_VISIBLE_DEVICES, but on an "as needed" basis) because it has been causing many issues - differently between editor versions.
I also like that you kept comments with references to issues, inside the markdown file you linked. These can be very helpful.


Add a pyup config file, and Python 3 ready / security updates badges.

Coverage remained the same at 88.986% when pulling e064734072637c3490e2b51b1f3686e9b614b4f6 on obi1kenobi:pyup into 45b80f51209f2c280501a12e3b1a4064f822f70a on kensho-technologies:master.


refactor: Add new top bar buttons [DRAFT for ACT-1134]

Description
I added a component TopBarIconButtonV2 which is closer to the solution, but I cannot figure where the height prop is being set. When I change the borderRadius, it impacts the width of the ripple, but the height always remains the same. I need to figure out how to set the ripple to be a circle.
Test plan

Related issues

Fixes ACT-1134

Backwards compatibility

Network scalability
If a new NetworkId and/or Network are added in the future, the changes in this PR will:

[ ] Continue to work without code changes, OR trigger a compilation error (guaranteeing we find it when a new network is added)

Ok so I added some changes here where I have different padding for horizontal and vertical. I am using
paddingVertical: Spacing.Small12 and paddingHorizontal: Spacing.Regular16 for the BackButton. I've figured out that this is due to the size of the icon inside, so I think ultimately I want to have the padding amount be responsive to the size of the icon. This way, the shape of the ripple (which is caused by the padding) is always a circle

Split out TopBarButton file and TopBarIconButtonV2 + updated BackChevron icon to accommodate new TopBarIconButtonV2 component. Will add any necessary tests on Monday!

Closing in favor of #5276


[AI] [Inference] fix sample code in README

Packages impacted by this PR
@azure-rest/ai-inference
Issues associated with this PR
N/A
Describe the problem that is addressed by this PR
Fix incorrect sample code

Removing new fix this error, and new does not seem to be needed in most cases where ModelClient is used.

What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
N/A
Are there test cases added in this PR? (If not, why?)
No. This PR just fix sample code only.
Provide a list of related PRs (if any)
N/A
Command used to generate this PR:**(Applicable only to SDK release request PRs)
N/A
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

@microsoft-github-policy-service agree

API change check
API changes are not detected in this pull request.


[SUPPORT] AWSGlueCatalogSyncClient partition AlreadyExistsException when syncing large table from scratch

hudi 0.11.1
spark 3.2.1
I have several hudi tables with > 35k partitions. When running for first time hive sync  (meaning adding 35k partition from scratch into glue), I randomly get the bellow error which says the partition already exists which is weird because the table didn't exist yet and the partition is not duplicated in the list.
As a workaround I catched the error in the AWSGlueCatalogSyncClient, but before proposing a PR, I d'like to know if this is expected.
482394 [Driver] INFO  org.apache.hudi.hive.AWSGlueCatalogSyncClient  - Created table <db>.<table_name> : {}
482394 [Driver] INFO  org.apache.hudi.hive.HiveSyncTool  - Schema sync complete. Syncing partitions for <table_name>
482394 [Driver] INFO  org.apache.hudi.hive.HiveSyncTool  - Last commit time synced was found to be null
482394 [Driver] INFO  org.apache.hudi.sync.common.AbstractSyncHoodieClient  - Last commit time synced is not known, listing all partitions in ...
1041177 [Driver] INFO  org.apache.hudi.hive.HiveSyncTool  - Storage partitions scan complete. Found 35337
1042524 [Driver] INFO  org.apache.hudi.hive.AWSGlueCatalogSyncClient  - Adding 35337 partition(s) in table <db>.<table_name>
2547338 [Driver] INFO  org.apache.spark.deploy.yarn.ApplicationMaster  - Final app status: FAILED, exitCode: 15, (reason: User class threw exception: java.lang.RuntimeException: org.apache.hudi.exception.HoodieException: Got runtime exception when hive syncing <table_name>
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:737)
Caused by: org.apache.hudi.hive.HoodieHiveSyncException: Failed to sync partitions for table <table_name>
        at org.apache.hudi.hive.HiveSyncTool.syncPartitions(HiveSyncTool.java:497)
        at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:264)
        at org.apache.hudi.hive.HiveSyncTool.doSync(HiveSyncTool.java:172)
        at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:159)
        ... 15 more
Caused by: org.apache.hudi.aws.sync.HoodieGlueSyncException: Fail to add partitions to <db>.<table_name>
        at org.apache.hudi.aws.sync.AWSGlueCatalogSyncClient.addPartitionsToTable(AWSGlueCatalogSyncClient.java:145)
        at org.apache.hudi.hive.HiveSyncTool.syncPartitions(HiveSyncTool.java:479)
        ... 18 more
Caused by: org.apache.hudi.aws.sync.HoodieGlueSyncException: Fail to add partitions to<db>.<table_name>
with error(s): [{PartitionValues: [7, 2021-07-14, 13],ErrorDetail: {ErrorCode: AlreadyExistsException,ErrorMessage: Partition already exists.}}]
        at org.apache.hudi.aws.sync.AWSGlueCatalogSyncClient.addPartitionsToTable(AWSGlueCatalogSyncClient.java:140)
        ... 19 more

@parisni the exception of Partition already exists shouldn't happen.  Could you provide the HiveSyncTool command with the arguments you use for reproducing the issue?

@parisni Any update on this issue? If it's still happening, can you please start from scratch syncing to a different database, and provide the sync tool command that you ran?

I am using the sync command programmatically. Indeed the glue error happens from time to time . glue backend look not that stable, then I guess the sync process should handle those cases better othwrwize it fails and leave the glue metastore corrupted
On August 1, 2022 12:04:13 PM UTC, Sagar Sumit @.> wrote:
@. Any update on this issue? If it's still happening, can you please start from scratch syncing to a different database, and provide the sync tool command that you ran?

--
Reply to this email directly or view it on GitHub:
https://github.com/apache/hudi/issues/5960#issuecomment-1201111260
You are receiving this because you were mentioned.
Message ID: @.***>

thanks!


fix(roles): adjust role mapping for company roles

Description
Adjust user role mapping to company role
Why
Currently the osp role has to much roles and the App Provider / Service Provider have missing roles, with this PR this is fixed
Issue
N/A - Jira Issue: CPLP-3509
Corresponding Assets PR
#196
Checklist

[x] I have followed the contributing guidelines
[x] I have performed a self-review of my own code
[x] I have successfully tested my changes locally
[x] I have added tests that prove my changes work
[x] I have checked that new and existing tests pass locally with my changes
[x] I have commented my code, particularly in hard-to-understand areas

The following script needs to be executed on the database:
delete from user_role_assigned_collections
where user_role_id = '58f897ec-0aad-4588-8ffa-5f45d6638632' AND user_role_collection_id = '916b09e7-7841-4e57-bdca-e0d3bd329c27';

Please also review the assets PR:
#196


pointcloud extension

Update https://github.com/stac-extensions/pointcloud with https://github.com/radiantearth/stac-spec/tree/3a83d75aec7f16ae597ee9779777a97e83ff46a4/extensions/pointcloud

Review complete


Crash in ScrollConsoleScreenBuffer when destination coordinates overflow

Environment
Windows build number: Version 10.0.18362.657
Steps to reproduce
Compile and run the following C++ code in a conhost cmd shell:
#include <windows.h>

void main() {
    SMALL_RECT rect = {0, 0, 40, 0};
    COORD dest = {32767, 0};
    CHAR_INFO fill = {L'X', 0x07};
    HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
    ScrollConsoleScreenBufferW(output, &rect, NULL, dest, &fill);
}

Expected behavior
The first 40 characters of the first line should fill with X's.
Actual behavior
The console crashes.
When the ScrollRegion function is copying the area that is being scrolled, the _CopyRectangle function makes use of the Viewport::WalkInBoundsCircular method, and that fails when the target position goes out of bounds. See here:
https://github.com/microsoft/terminal/blob/5de9fa9cf375e9b5bdc582d8d166604eeb519844/src/types/viewport.cpp#L411

FYI, I've just tested with the first open source release (commit d4d59fa3395012ca37ba12665da4ec11c7dcf9cb), and the bug was already present there. However, the legacy console doesn't have this issue.
In some ways this is could be considered a part of issue #4153, but I thought it worth raising separately because of the crash, and the fact that it's not obviously "safe math" code.

Regressed between RS5 (17763) and 19H1 (18362). Thanks!

Off triage, P2, /cc @miniksa for a conhost regression from the scrolling change in 19H1


python driver doesn't connect to all available IPs for a given DNS address

What version of gRPC and what language are you using?
python
grpcio==1.18.0
grpcio-tools==1.18.0
What operating system (Linux, Windows,...) and version?
centos 6
What runtime / compiler are you using (e.g. python version or version of gcc)
don't know
What did you do?
I have a grpc service running on ECS
the service has an autoscale policy based on CPU usage and will from time to time increase/decrease number of tasks running.
the tasks are reporting request metrics and I see that only some of the instance are receiving requests.
From within a client machine I ran some checks:
service is on port :9999
netstat -anp | grep 9999
I see only a single IP:
netstat -anp | grep 9999
tcp6       0      0 <IP_ADDRESS>:49890      <IP_ADDRESS>:9999       ESTABLISHED 3756/python
tcp6       0      0 <IP_ADDRESS>:49902      <IP_ADDRESS>:9999       ESTABLISHED 4123/python
tcp6       0      0 <IP_ADDRESS>:49886      <IP_ADDRESS>:9999       ESTABLISHED 3922/python
tcp6       0      0 <IP_ADDRESS>:49922      <IP_ADDRESS>:9999       ESTABLISHED 4196/python
tcp6       0      0 <IP_ADDRESS>:49914      <IP_ADDRESS>:9999       ESTABLISHED 3576/python
tcp6       0      0 <IP_ADDRESS>:49910      <IP_ADDRESS>:9999       ESTABLISHED 4255/python
tcp6       0      0 <IP_ADDRESS>:49898      <IP_ADDRESS>:9999       ESTABLISHED 4026/python

from the same machine i ran dig on the dns of the service:
> dig my-service.local

...

;; QUESTION SECTION:
;my-service.local.	IN	A

;; ANSWER SECTION:
my-service.local. 60	IN	A	<IP_ADDRESS>
my-service.local. 60	IN	A	<IP_ADDRESS>

;; Query time: 1 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Sun Sep 01 06:50:19 UTC 2019
;; MSG SIZE  rcvd: 74

In other words the driver is only connecting to a single IP while there are 2 that should be connected.
If I go ahead and restart the client (kill the PID and run again), I do see that the 2 IPS are then connected to as expected
My connection is configured like so:
        opts = [("grpc.lb_policy_name", "round_robin"), ("grpc.dns_enable_srv_queries", 1)]
        self.channel = grpc.insecure_channel(service_endpoint, opts)
        self.stub = MyServiceStub(self.channel)

What did you expect to see?
All IPS should be receiving traffic
What did you see instead?
Only a single IP receives traffic

Can you provide more information about the lifetime of your channel? Do you reuse the same channel to send multiple RPCs? Or do you only send a single RPC on each channel before tearing it down?

the channel is long living through out the lifetime of the application. the channel is never explicitly closed/torn down

CC @apolcyn

You mentioned SRV records, but your dig output shows A records. SRV records are only intended for use with gRPCLB.  Are you actually trying to use gRPCLB?

From:
I have a grpc service running on ECS
the service has an autoscale policy based on CPU usage and will from time to time increase/decrease number of tasks running.

and
If I go ahead and restart the client (kill the PID and run again), I do see that the 2 IPS are then connected to as expected

One guess is, was there only a single IP available when you first started the "driver" ?
Note that if you have a grpc client channel that has connections which are "healthy", it won't retry DNS resolution unless provoked to do so (basically the client will only try to refresh DNS resolution  one of your connections goes bad). So in steady state your client won't "learn" about the new IP address as soon as it's available in DNS.
If that's not the case, suggest sharing a log from running your driver under environment variables GRPC_VERBOSITY=DEBUG, and GRPC_TRACE=api,cares_resolver,cares_address_sorting,client_channel_routing

@gnossen
I didn't mention using srv records explicitly. I assume it was implied from the the connection configuration. But in general "dns_enable_srv_queries" shouldn't deduce "dns_USE_ONLY_srv_queries" or some semantic like that. In general all acts normally until a scale event occurs.
(I think the documentation is completely lacking in this regards along with best practice and I arrived at that configuration from a seperate service which does have SRV records enabled (along with A records) and digging around in the C headers)
I can remove "dns_enable_srv_queries" if necessary - or alternatively I can add SRV records for this DNS name as well.
But regarding the SRV records, other services which have them enabled suffer from exactly the same problem. The client will not pick up new instances once the services are scaled. Easily reproduced using the same 'netstat + dig' from above.

Just wanted to +1 this issue to keep it alive. We use DNS-based load balancing so the list of resolved IPs can change frequently.

Note that if you have a grpc client channel that has connections which are "healthy", it won't retry DNS resolution unless provoked to do so (basically the client will only try to refresh DNS resolution one of your connections goes bad).

"...unless provoked to do so" -- Is there a way to do this outside of recreating the channel or failing connection to all resolved IPs? Currently we have channel wrapper embedded into our Python clients that creates a new channel every 30 seconds. New calls will use the most recent channel and we keep the old channels around for a minute or two to allow inflight calls complete. Is there a better way to trigger DNS re-resolution? Ideally all we'd need to do is set appropriate TTLs on DNS records (and I believe we are already doing that). But alternatively it would be nice if there was a hook to trigger DNS re-resolution, so we wouldn't need the extra complexity of channel rotation.

I think this is a duplicate of #12295.


expr2dot does not complain if the expression is not fully parsed

As well as BASM. I guess the problem is more general. Not fully parsed expression is not considered an error.


Random clean up

Removes a rogue "binding.pry" and makes one of the tests more consistent

(Good spot on the tests!)


Update dev dependencies

Codecov Report
Patch and project coverage have no change.

Comparison is base (efadaac) 0.00% compared to head (4a65080) 0.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@          Coverage Diff          @@
##            main     #24   +/-   ##
=====================================
  Coverage   0.00%   0.00%
=====================================
  Files         17      17
  Lines        331     331
=====================================
  Misses       331     331

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Dictionary unpacking causes a transpiling error

Example:
#__pragma__('skip')
def el(name, attrs, *children):
    pass
#__pragma__('noskip')
def App():
    return el("div", {
        **{'class': 'my-class'}
    })

Transcrypt output:
$ python3 -m transcrypt test.py

Transcrypt (TM) Python to JavaScript Small Sane Subset Transpiler Version 3.9.0
Copyright (C) Geatec Engineering. License: Apache 2.0

Saving target code in: /home/tkcook/git/test/__target__/org.transcrypt.__runtime__.js
Saving minified target code in: /home/tkcook/git/test/__target__/org.transcrypt.__runtime__.js

Error while compiling (offending file last):
	File 'test', line 6, namely:

	Error while compiling (offending file last):
	File 'test', line 6, namely:

Aborted

The dictionary unpack is obviously redundant in this case but is useful in more complex cases.

There must be an edge case somewhere in the compiler. With a slightly simpler example, this works:
def test(args):
    print(list(args.keys()))

test(dict(**{'class': 'my-class'}))

But this does not:
def test(args):
    print(list(args.keys()))

test({**{'class': 'my-class'}})

Though both versions work in CPython.

Those last two examples are actually significantly different at the technical/language level, and the latter is actually a lot newer in CPython.

dict(**a_dictionary) is a splatting a dictionary into arguments of a function call. In Python since 2.2 (over 20 years ago).
{**a_dictionary} is splatting a dictionary into a dictionary literal "display". Added in 3.5 by PEP-448.

If I had to guess, Transcrypt has different code paths for "translating the inside a function call" and "translating the stuff inside a dictionary display", and the former is expecting the possibility of a ** while the latter isn't.


Sort record type searches by favorite?

I want to search for all record types sorting by the user's favorites
I tried the steps here https://hprm.info/Record-Type-Sort-Order/
But it only seems to apply to the favorite search, how can I sort a record type search for all record types, showing most recently favorited at the top, followed by other sort orders for unfavorited records?

On second look it seems the favorite search isnt being sorted either

I updated the post, does that help?
On Tue, 10 Jan 2023 at 10:10, Jan Martin @.***> wrote:

On second look it seems the favorite search isnt being sorted either
—
Reply to this email directly, view it on GitHub
https://github.com/content-manager-sdk/Community/issues/37#issuecomment-1376465896,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAG7YHXQELOVMRUZNUT3O6LWRSLEXANCNFSM6AAAAAATV7LQLE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Great thanks, is there a way to set the "SelectRecordTypeUserOptionsFavoritesFirst" for just this one search and not modify the users default options?

Sorry, I do not understand.  Setting the user options is the way you set a
Record Type as a favourite.
On Tue, 10 Jan 2023 at 11:23, Jan Martin @.***> wrote:

Great thanks, is there a way to set the
"SelectRecordTypeUserOptionsFavoritesFirst" for just this one search and
not modify the users default options?
—
Reply to this email directly, view it on GitHub
https://github.com/content-manager-sdk/Community/issues/37#issuecomment-1376536748,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAG7YHQRDCIZL2M5HLOZCBTWRSTW7ANCNFSM6AAAAAATV7LQLE
.
You are receiving this because you commented.Message ID:
@.***>

Sure, just choose the appropriate value from RecordTypeFilter, for
example: RecordTypeFilter.All
On Tue, 10 Jan 2023 at 11:31, Jan Martin @.***> wrote:

Also, is there a way to return all record types with favorites first,
rather than just record types suitable for creation?
—
Reply to this email directly, view it on GitHub
https://github.com/content-manager-sdk/Community/issues/37#issuecomment-1376545731,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAG7YHQZLLX2BHXZV5QWW6LWRSUXPANCNFSM6AAAAAATV7LQLE
.
You are receiving this because you commented.Message ID:
@.***>

RecordTypeFilter.All doesn't seem to do return record types favorites first, only RecordTypeFilter.AllForCreate

If that is the case then you will need to submit an enhancement request.
The feature to sort the Record Types in this way was created to allow the
UI to show the most interesting Record Types first when a user is creating
a Record so I am not surprised if it only the creation related filters.
On Tue, 10 Jan 2023 at 12:17, Jan Martin @.***> wrote:

RecordTypeFilter.All doesn't seem to do return record types favorites
first, only RecordTypeFilter.AllForCreate
[image: image]
https://user-images.githubusercontent.com/137350/211440044-abc79082-c6bb-4028-84ae-dca51d725442.png
—
Reply to this email directly, view it on GitHub
https://github.com/content-manager-sdk/Community/issues/37#issuecomment-1376587765,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAG7YHW3QLKZBFEXV4QRFN3WRS2EPANCNFSM6AAAAAATV7LQLE
.
You are receiving this because you commented.Message ID:
@.***>

Okay thanks I've logged a ticket


feat: add theme color to allow customize button color.

fix https://github.com/stargately/web-boommo/issues/261

Hi @puncsky
This PR is ready for review, please let me know if you have any questions.
Thanks.

One more thing, could you integrate this repo with netlify-bot, thank you！
It will be more convenient for you to live preview any changes.
@puncsky

One more thing, could you integrate this repo with netlify-bot, thank you！
It will be more convenient for you to live preview any changes.
@puncsky

nope, please attach screen shot


404: not found

Hi, I am recently try to use this visualizer, however, no matter where I run the jupyter notebook example of "train_isaacgym_remote_server.ipynb". When click the web url, it will always get "404 not found". Is there something I need to set up?
Thank you!

Hi @tianhaowuhz,
Could you please inform me about your specific scenario? I'm curious to know if you are executing this example on a local machine or a remote server. If it's the latter, you may need to adjust the IP address in the subsequent cell to reflect the IP of your machine where Isaac Gym is operational. For troubleshooting purposes, you can directly access the URL in your browser: http://YOUR_IP_ADDRESS:7000/static/.
# Modify the IP if the jupyter server is not localhost
machine_ip = "<IP_ADDRESS>"
web_visualizer.jupyter_cell(url=f"http://{machine_ip}:7000/static/", height=400)

Thanks.

I am currently trying to run on local machine. I also test for a more simple example. visualize of URDF. Following the README, I first run  "meshcat-server", then run "python render_urdf.py". However, when I try to open the link of "web_url", it shows like this.

From the details you've shared, a potential cause for the issue could be the absence of the recursive command during the repo installation, leading to the non-installation of the meshcat repo. You can confirm this by checking if the sim-web-visualier/3rd_party/meshcat-python/src/meshcat/viewer directory is either empty or non-existent.
If this is indeed the problem, you can rectify it by reinstalling the package. Start by running git submodule update --init --recursive followed by pip install ..

I do find there is no viewer in meshcat-python. However, if I git submodule recursive, the version of the submodule seems not exists. "Fetched in submodule path '3rd_party/meshcat-python', but it did not contain 49471b6866f86be3cd1ea4b8a9b6aeb43be00b69. Direct fetching of that commit failed.
"

Hi @tianhaowuhz ,
Thanks for your information. I just found that the submodule is broken by a recent update to the submodule. This issue is fixed just now e3ca5b25577565542b5425c6fb0744c412987b2b
Please let me know whether you still have the same issue after this update.
Regards,
Yuzhe

Thank you for your update, I can now successfuly install. However, the same issue still happens.

Hi @tianhaowuhz , for additional troubleshooting, please try these commands:
conda create -n visualizer_debug_env python=3.8
conda activate visualizer_debug_env
git clone https://github.com/NVlabs/sim-web-visualizer
cd sim-web-visualizer/
git submodule update --init --recursive
pip3 install .
meshcat-server

Subsequently, please open your web browser and verify if the 404 error persists.
The issue might be due to residual cache or unclean uninstallations from your previous environment. Creating a new conda environment could possibly rectify this problem.

Thank you for your solution, I have successfully run the code on the local. Howver, when I try to run on remote server, it shows following message

Do you might know the solution to this?
Thank you!

Thank you for your solution, I have successfully run the code on the local. Howver, when I try to run on remote server, it shows following message  Do you might know the solution to this? Thank you!

I found this might relate to vscode, the origin url has "static", the url after vscode forward port loose this part, and cause such problem.

Hi @tianhaowuhz ,
Thanks for your update. Maybe I can list this url issue as a common issue in the README so that other people can also get to know about that.

Sure. But I still not figure out how to vis web in remote server, I previous thought this is issue with "static" is because when I access the same url without "static" in local machine produce the same issue (e.g., Can "Upgrade" only to "WebSocket"). However, while testing on the server, again, I met the 404 error, even after I reinstall the environment. Orz...

I finally got it worked on server. I think the prolbem is still relate to the following reason, simply reinstall the environment seems will not cover the file that installed without correct file. I only make it work by reset the system on the server. However, if following the readme to install the tools, it will work fine remote server and local. And either use vscode or ssh to forward port is ok, just need to remember to add "/static/" at the end.

From the details you've shared, a potential cause for the issue could be the absence of the recursive command during the repo installation, leading to the non-installation of the meshcat repo. You can confirm this by checking if the sim-web-visualier/3rd_party/meshcat-python/src/meshcat/viewer directory is either empty or non-existent.
If this is indeed the problem, you can rectify it by reinstalling the package. Start by running git submodule update --init --recursive followed by pip install ..


implement 3 slide in page

I want to create slider of the below picture :

displayed edge of next and previuse sllide and show current slide in center.
how to set option ?

Do you want to ask a question? Are you looking for support? The Swiper forum and Stack Overflow are the best places for getting support

Please, don't use GitHub issues for questions


:sparkles: chore: add new bug template

ref: https://github.com/zwpaper/lsd/issues/new?assignees=zwpaper&labels=bug&template=bug.yml&title=[Bug]%3A+
this can help to gather information easily.

the form also notifies users to reproduce the bug in latest release, add tell us how they install lsd