This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1520843820-1916374079-959074861=:461 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 23 May 2000, Alexandre Ferrieux wrote: > > Great !!! That's exactly the kind of Pythonic translation I was > expecting. Thanks ! Here's a straw man. Try the attached module. To test it, run: python ./watcher.py 10203 then telnet to port 10203 on the local machine. You can open several telnet connections to port 10203 at once. In one session: skuld[1041]% telnet localhost 10203 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. >>> 1 + 2 3 >>> spam = 3 In another session: skuld[1008]% telnet localhost 10203 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. >>> spam 3 > We just register an empty string as the callback name (script). > But this is just a random API choice. Anything more Pythonic is welcome > (an explicit unregister function is okay for me). So is there no way to register more than one callback on a particular file? Do you ever find yourself wanting to do that? -- ?!ng --1520843820-1916374079-959074861=:461 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="watcher.py" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.LNX.4.10.10005230241010.461@localhost> Content-Description: Content-Disposition: attachment; filename="watcher.py" IiIiV2F0Y2hlciBtb2R1bGUsIGJ5IEthLVBpbmcgWWVlICgyMiBNYXkgMjAw MCkuDQoNClRoaXMgbW9kdWxlIGltcGxlbWVudHMgZXZlbnQgaGFuZGxpbmcg b24gZmlsZXMuICBUbyB1c2UgaXQsIGNyZWF0ZSBhDQpXYXRjaGVyIG9iamVj dCwgYW5kIHJlZ2lzdGVyIGNhbGxiYWNrcyBvbiB0aGUgV2F0Y2hlciB3aXRo IHRoZSB3YXRjaCgpDQptZXRob2QuICBXaGVuIHJlYWR5LCBjYWxsIHRoZSBn bygpIG1ldGhvZCB0byBzdGFydCB0aGUgbWFpbiBsb29wLiIiIg0KDQppbXBv cnQgc2VsZWN0DQoNCmNsYXNzIFN0b3BXYXRjaGluZzoNCiAgICAiIiJDYWxs YmFja3MgbWF5IHJhaXNlIHRoaXMgZXhjZXB0aW9uIHRvIGV4aXQgdGhlIG1h aW4gbG9vcC4iIiINCiAgICBwYXNzDQoNCmNsYXNzIFdhdGNoZXI6DQogICAg IiIiVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byByZWdpc3Rl ciBjYWxsYmFja3Mgb24gZmlsZSBldmVudHMuDQogICAgRWFjaCBpbnN0YW5j ZSByZXByZXNlbnRzIG9uZSBtYXBwaW5nIGZyb20gZmlsZSBldmVudHMgdG8g Y2FsbGJhY2tzLiIiIg0KDQogICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KICAg ICAgICBzZWxmLnJlYWRlcnMgPSB7fQ0KICAgICAgICBzZWxmLndyaXRlcnMg PSB7fQ0KICAgICAgICBzZWxmLmVycmhhbmRsZXJzID0ge30NCiAgICAgICAg c2VsZi5kaWN0cyA9IFsoInIiLCBzZWxmLnJlYWRlcnMpLCAoInciLCBzZWxm LndyaXRlcnMpLA0KICAgICAgICAgICAgICAgICAgICAgICgiZSIsIHNlbGYu ZXJyaGFuZGxlcnMpXQ0KDQogICAgZGVmIHdhdGNoKHNlbGYsIGhhbmRsZSwg Y2FsbGJhY2ssIG1vZGVzPSJyIik6DQogICAgICAgICIiIlJlZ2lzdGVyIGEg Y2FsbGJhY2sgb24gYSBmaWxlIGhhbmRsZSBmb3Igc3BlY2lmaWVkIGV2ZW50 cy4NCiAgICAgICAgVGhlICdoYW5kbGUnIGFyZ3VtZW50IG1heSBiZSBhIGZp bGUgb2JqZWN0IG9yIGFueSBvYmplY3QgcHJvdmlkaW5nDQogICAgICAgIGEg ZmFpdGhmdWwgJ2ZpbGVubygpJyBtZXRob2QgKHRoaXMgaW5jbHVkZXMgc29j a2V0cykuICBUaGUgJ21vZGVzJw0KICAgICAgICBhcmd1bWVudCBpcyBhIHN0 cmluZyBjb250YWluaW5nIGFueSBvZiB0aGUgY2hhcnMgInIiLCAidyIsIG9y ICJlIg0KICAgICAgICB0byBzcGVjaWZ5IHRoYXQgdGhlIGNhbGxiYWNrIHNo b3VsZCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZmlsZQ0KICAgICAgICBiZWNv bWVzIHJlYWRhYmxlLCB3cml0YWJsZSwgb3IgZW5jb3VudGVycyBhbiBlcnJv ciwgcmVzcGVjdGl2ZWx5Lg0KICAgICAgICBUaGUgJ2NhbGxiYWNrJyBzaG91 bGQgYmUgYSBmdW5jdGlvbiB0aGF0IGV4cGVjdHMgdG8gYmUgY2FsbGVkIHdp dGgNCiAgICAgICAgdGhlIHRocmVlIGFyZ3VtZW50cyAod2F0Y2hlciwgaGFu ZGxlLCBtb2RlKS4iIiINCiAgICAgICAgZmQgPSBoYW5kbGUuZmlsZW5vKCkN CiAgICAgICAgZm9yIG1vZGUsIGRpY3QgaW4gc2VsZi5kaWN0czoNCiAgICAg ICAgICAgIGlmIG1vZGUgaW4gbW9kZXM6IGRpY3RbZmRdID0gKGhhbmRsZSwg Y2FsbGJhY2spDQoNCiAgICBkZWYgdW53YXRjaChzZWxmLCBoYW5kbGUsIG1v ZGVzPSJyIik6DQogICAgICAgICIiIlVucmVnaXN0ZXIgYW55IGNhbGxiYWNr cyBvbiBhIGZpbGUgZm9yIHRoZSBzcGVjaWZpZWQgZXZlbnRzLg0KICAgICAg ICBUaGUgJ2hhbmRsZScgYXJndW1lbnQgc2hvdWxkIGJlIGEgZmlsZSBvYmpl Y3QgYW5kIHRoZSAnbW9kZXMnDQogICAgICAgIGFyZ3VtZW50IHNob3VsZCBj b250YWluIG9uZSBvciBtb3JlIG9mIHRoZSBjaGFycyAiciIsICJ3Iiwgb3Ig ImUiLiIiIg0KICAgICAgICBmZCA9IGhhbmRsZS5maWxlbm8oKQ0KICAgICAg ICBmb3IgbW9kZSwgZGljdCBpbiBzZWxmLmRpY3RzOg0KICAgICAgICAgICAg aWYgbW9kZSBpbiBtb2RlcyBhbmQgZGljdC5oYXNfa2V5KGZkKTogZGVsIGRp Y3RbZmRdDQogICAgICAgICAgICANCiAgICBkZWYgZ28oc2VsZiwgdGltZW91 dD1Ob25lKToNCiAgICAgICAgIiIiTG9vcCBmb3JldmVyLCB3YXRjaGluZyBm b3IgZmlsZSBldmVudHMgYW5kIHRyaWdnZXJpbmcgY2FsbGJhY2tzLA0KICAg ICAgICB1bnRpbCBzb21lYm9keSByYWlzZXMgYW4gZXhjZXB0aW9uLiAgVGhl IFN0b3BXYXRjaGluZyBleGNlcHRpb24NCiAgICAgICAgcHJvdmlkZXMgYSBx dWlldCB3YXkgdG8gZXhpdCB0aGUgZXZlbnQgbG9vcC4gIElmIGEgdGltZW91 dCBpcyANCiAgICAgICAgc3BlY2lmaWVkLCB0aGUgbG9vcCB3aWxsIGV4aXQg YWZ0ZXIgdGhhdCBtYW55IHNlY29uZHMgcGFzcyBieSB3aXRoDQogICAgICAg IG5vIGV2ZW50cyBvY2N1cnJpbmcuIiIiDQogICAgICAgIHRyeToNCiAgICAg ICAgICAgIHdoaWxlIHNlbGYucmVhZGVycyBvciBzZWxmLndyaXRlcnMgb3Ig c2VsZi5lcnJoYW5kbGVyczoNCiAgICAgICAgICAgICAgICByZCwgd3IsIGV4 ID0gc2VsZWN0LnNlbGVjdChzZWxmLnJlYWRlcnMua2V5cygpLA0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud3Jp dGVycy5rZXlzKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5lcnJoYW5kbGVycy5rZXlzKCksIHRpbWVvdXQp DQogICAgICAgICAgICAgICAgaWYgbm90IChyZCArIHdyICsgZXgpOiBicmVh aw0KICAgICAgICAgICAgICAgIGZvciBmZHMsIChtb2RlLCBkaWN0KSBpbiBt YXAoTm9uZSwgW3JkLCB3ciwgZXhdLCBzZWxmLmRpY3RzKToNCiAgICAgICAg ICAgICAgICAgICAgZm9yIGZkIGluIGZkczoNCiAgICAgICAgICAgICAgICAg ICAgICAgIGhhbmRsZSwgY2FsbGJhY2sgPSBkaWN0W2ZkXQ0KICAgICAgICAg ICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZiwgaGFuZGxlLCBtb2RlKQ0K ICAgICAgICBleGNlcHQgU3RvcFdhdGNoaW5nOiBwYXNzDQoNCmlmIF9fbmFt ZV9fID09ICJfX21haW5fXyI6DQogICAgaW1wb3J0IHN5cywgc29ja2V0LCBj b2RlDQogICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNv Y2tldC5TT0NLX1NUUkVBTSkNCiAgICBzLmJpbmQoImxvY2FsaG9zdCIsIDEw MjAzKSAjIEZpdmUgaXMgUklHSFQgT1VULg0KICAgIHMubGlzdGVuKDEpDQog ICAgY29uc29sZXMgPSB7fQ0KICAgIGxvY2FscyA9IHt9ICMgU2hhcmUgbG9j YWxzLCBqdXN0IGZvciBmdW4uDQoNCiAgICBjbGFzcyBSZWRpcmVjdG9yOg0K ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgd3JpdGUpOg0KICAgICAgICAg ICAgc2VsZi53cml0ZSA9IHdyaXRlDQoNCiAgICBkZWYgZ2V0bGluZShoYW5k bGUpOg0KICAgICAgICBsaW5lID0gIiINCiAgICAgICAgd2hpbGUgMToNCiAg ICAgICAgICAgIGNoID0gaGFuZGxlLnJlY3YoMSkNCiAgICAgICAgICAgIGxp bmUgPSBsaW5lICsgY2gNCiAgICAgICAgICAgIGlmIG5vdCBjaCBvciBjaCA9 PSAiXG4iOiByZXR1cm4gbGluZQ0KDQogICAgZGVmIHJlYWQod2F0Y2hlciwg aGFuZGxlLCBtb2RlKToNCiAgICAgICAgbGluZSA9IGdldGxpbmUoaGFuZGxl KQ0KICAgICAgICBpZiBsaW5lOg0KICAgICAgICAgICAgaWYgbGluZVstMjpd ID09ICJcclxuIjogbGluZSA9IGxpbmVbOi0yXQ0KICAgICAgICAgICAgaWYg bGluZVstMTpdID09ICJcbiI6IGxpbmUgPSBsaW5lWzotMV0NCiAgICAgICAg ICAgIG91dCwgZXJyID0gc3lzLnN0ZG91dCwgc3lzLnN0ZGVycg0KICAgICAg ICAgICAgc3lzLnN0ZG91dCA9IHN5cy5zdGRlcnIgPSBSZWRpcmVjdG9yKGhh bmRsZS5zZW5kKQ0KICAgICAgICAgICAgbW9yZSA9IGNvbnNvbGVzW2hhbmRs ZV0ucHVzaChsaW5lKQ0KICAgICAgICAgICAgaGFuZGxlLnNlbmQobW9yZSBh bmQgIi4uLiAiIG9yICI+Pj4gIikNCiAgICAgICAgICAgIHN5cy5zdGRvdXQs IHN5cy5zdGRlcnIgPSBvdXQsIGVycg0KICAgICAgICBlbHNlOg0KICAgICAg ICAgICAgd2F0Y2hlci51bndhdGNoKGhhbmRsZSkNCiAgICAgICAgICAgIGhh bmRsZS5jbG9zZSgpDQoNCiAgICBkZWYgY29ubmVjdCh3YXRjaGVyLCBoYW5k bGUsIG1vZGUpOg0KICAgICAgICBucywgYWRkciA9IGhhbmRsZS5hY2NlcHQo KQ0KICAgICAgICBjb25zb2xlc1tuc10gPSBjb2RlLkludGVyYWN0aXZlQ29u c29sZShsb2NhbHMsICI8JXM6JWQ+IiAlIGFkZHIpDQogICAgICAgIHdhdGNo ZXIud2F0Y2gobnMsIHJlYWQpDQogICAgICAgIG5zLnNlbmQoIj4+PiAiKQ0K DQogICAgdyA9IFdhdGNoZXIoKQ0KICAgIHcud2F0Y2gocywgY29ubmVjdCkN CiAgICB3LmdvKCkNCg== --1520843820-1916374079-959074861=:461--
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4