Python Bytes - #80 Dan Bader drops by and we found 30 new Python projects
Episode Date: May 29, 2018Topics covered in this episode: Packaging Python Projects gidgethub — An async library for calling GitHub’s API pystemd PyCharm 2018.2 EAP 1 includes improved pytest support 30 amazing Python p...rojects (2018 edition) Extras Joke See the full show notes for this episode on the website at pythonbytes.fm/80
Transcript
Discussion (0)
Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
This is episode 80, recorded May 25th, 2018.
I'm Michael Kennedy.
And I'm Brian Hockett.
And Brian, we have a special guest, don't we?
Yes.
Hey, hello Dan Bader.
Hey guys, it's me, Dan. Good to be back on the show.
And it's always so nice to hear you do this intro live, Mike.
Thank you.
It's unreal.
And you sound so smooth.
I love it.
I guess I've done it 80 times now.
Maybe 82 or 83 for the few times I screwed up with the wrong date.
Well, thank you.
And it's great to have you.
For those of you who don't know Dan, Dan's well-known from RealPython and dbator.org
and a bunch of Python goodness.
Before we get to the show, I want to say thank you to DigitalOcean.
So they're sponsoring this episode and a number of them are coming up,
as well as the actual infrastructure delivering all this technology to you.
So pythonbytes.fm slash DigitalOcean, get a $100 credit for new users.
Pretty awesome.
Brian, I feel like there's a few themes that we touch on frequently
in this podcast yeah i guess that we do and one of them is packaging so we've talked about
packaging a few times and the python packaging authority has a has their like tutorial on how
how to package python packages and uh it used to be out of date, but now they've recently revamped it and rewritten it.
And it's very user-friendly now. It's a short little walkthrough of how to set up a package
and push it to both the test server and then to the full Python package index, PYPI. Yeah,
I got that out. One of the things that's kind of fun to note is that I noted is the readme example is in Markdown.
And that's cool.
And that's a new feature, right?
That's one of the things of them switching to Warehouse and the big release of the new PyPI.org.
I think I remember the old examples for setup.py.
They were either too small.
They didn't include everything they needed.
Or they were too big and kind of scary.
And now this is a medium-sized example set up that is actually pretty nice.
You know, I read through it and it looked like the same tool set that I used to push up.
So I think it's pretty accurate now.
So that's nice.
Nice.
You didn't feel like you were super out of date.
You're like, why am I not using this or using that?
Yeah, because when I learned how to do it the first time, I think i read both the old tutorial and then like four or five or six different blog
articles on how to do it now how to do it now because it changed but now this is all up to date
so it's good very nice dan did you do much packaging yeah so i run a couple of open source
projects and i always felt like you know exactly like what you were just saying brian where I had to combine a couple of tutorials just to get it to work. And it never
really felt all that straightforward. And so I think this is a pretty nice and pretty minimal
write up. I like that. And I'm surprised that we're, you know, that the recommendation now
seems to be to use a Markdown based readme files. Like I really like Markdown, I really,
you know, warmed up to restructure text so much. And it's definitely cool that they're supporting that now.
That's awesome.
I think restructured text maybe predated Markdown.
And it was, you know, it was the thing when the original PyPI was created.
And then just like that thing was, you know, calcified.
And like, let's not touch this.
Let's just not mess with this.
Let's just keep it running, right?
It's really good to see that getting a fresh update.
Also, Brian, you talk about Twine in here.
What's the story with Twine?
I don't know if there's a story with it.
That's just the tool you use to push things up to PyPI.
Oh, nice.
I probably used it and didn't realize it or forgot that I used it.
Maybe there's another way, but that's what I've always used.
Yeah, cool.
Actually, there's a cool project to throw in the mix here. it's called flit f-l-i-t and um it's well what's a good way to
describe it it's sort of a minimal simple way to put python packages on pypi so they kind of
completely done away with the setup.py instead you write an init file where you just put in you
know your author name and your home page or. And it generates all of that other stuff.
And it might not be really necessary anymore now, you know, if you have like a really sort of short and sweet tutorial like the one that we were just talking about.
But it is super, super beginner friendly, this flit thing.
That's cool.
Nice.
It's FLIT?
It's FLIT.
Yeah.
Awesome.
All right.
And so that's probably on GitHub, isn't it, Dan?
Yes, it is. Nice transition.
So the next thing you have for us is an async library for calling GitHub's API.
Yeah. Yeah. So I was going to talk about this thing called Gidget Hub, which is a Python wrapper around the GitHub API. So basically allows you to talk to GitHub and you can interact with all the different
content types that GitHub provides or exposes. So you can add and modify issues. You can, you know,
create pull requests. You can add comments to pull requests. You can download all the comments to pull
requests and all that stuff. So the other thing it does, it allows you to parse GitHub's webhooks.
So you can configure GitHub so that every time a new pull
request or something like that is created, it essentially calls an API callback on the web,
like on some URL that you gave it. And so what you can use Gidget Hub for is a really nice and
clean way to write GitHub bots with Python, essentially. And it's just a really cool library. And I think its
API is super well designed. So we were recently using it on a workshop that we did in Vancouver,
like Marietta, who's a CPython core developer, did a nicer T8 and was running around helping her.
And so she wrote a really cool tutorial about how to use GitHub. I think it's just a really nice example from modern Python
web API library. It looks really great. And so you just go over here and you say like,
I'd like to open a PR. So you get some PR data, then you say await GitHub.post. And you know,
all your all your methods are async. Yeah, definitely nice and scalable. It looks like it's based on AIO HTTP,
which is a really nice client-side async-enabled REST library.
What's really, really cool about this Gidget Hub thing
is that it's actually abstracting away from the actual backend, I want to say,
what the actual library used to talk to or to handle those web requests, whether they're
incoming or outbound.
So I just learned that this is referred to as a SANS IO library.
So basically, it's just a protocol implementation that doesn't really specify how the IO is
performed.
So it allows you to plug in different backends, different concrete implementations that make this thing super reusable.
Because, well, if there's a new async library,
you know, flavor of the day kind of thing
in a couple of months,
then, well, you can probably just plug that in
and work with that.
So it's kind of nice.
It's really well designed.
Yeah, so you can use AIO HTTP.
You can use Tornado.
Yeah, I was, recently we covered it on the show,
this thing called Unsync instead of Async, UnSync.
And it's a different implementation with a different thing,
a different event loop thing.
Maybe you could use that here as well.
That's pretty awesome.
I like it.
Nice pick.
Nice, yeah.
It's nice to use.
Super friendly.
Yeah, Brian, do you guys do any GitHub automation?
You just started with Git at your organization, right?
We're doing it.
We've got a private server, so we don't go through GitHub for work stuff.
But I use GitHub all the time.
Yeah, of course.
Locally.
Yeah, nice.
Yeah, I feel like this kind of automation is more relevant and useful when either you're building an app or you have a big organization and you want to automate your company's interaction with github right like me as an individual i just don't really see
a massive use of this for me because i just don't do that much different other than what i personally
do with github but i think it looks really cool and i love the way it works some uses where you
could often use like travis or something like that. If you were watching different... If your project depended on a bunch of dependencies
and you wanted to, if they changed,
pull them in and repackage everything
and run some tests against it,
you could do that locally with something like this.
Yeah, that's pretty cool.
Or you have that one person on your team
that often breaks the build,
so you run extra tests when you see them do a check-in.
That's good.
Harassment bot that just goes in and be careful.
I think they use it on CPython.
They moved all of the source for that to GitHub.
And I think now they run a couple of bots that I think one of the things they do is,
so when you contribute to CPython, they need you to sign an agreement that you're giving up the rights essentially for your contributions.
And so I think Marietta actually runs that bot.
I might be mistaken here, but it's a bot that checks if that committer or that contributor already has given their permission.
And if they didn't yet, then it's just going to ask them to do it and it sets a flag on the PR.
So it's super cool that way when you can sort of code up a workflow like that, that you never have to worry about again in your life because it's 100% automated.
So I think it's great for that sort of use case.
That is a great use case.
Yeah, that's really, really awesome.
Okay, so the next one that I wanted to talk about actually was recommended to me and Brian because of some stuff that I had recently been doing. I think, you know, we were all at PyCon.
I think maybe we were all at the same meeting or get together.
And I had just decided, like, that's it.
I'm writing a Python systemd daemon that will synchronize all of my course data,
basically across the various servers in the different locations.
So there's like eight or nine places in the world that serve up course content based on
where you are.
And so I wrote a service in Python that is a system D service that will basically keep
all those places in sync.
Nothing too impressive, but it's kind of cool.
You can do that in Python.
So we got pointed at this thing called PySystemD, and this was actually presented at pycon 2018 so
there's a whole talk and you go learn about what is system d why you care about it how is it used
but the short version is this pi system d is an api into the system d whole api part of linux so
you can create things that are daemons you can can say like, I would like to have my Python web app start
and I want it to start in this way,
but I want it to not start before my MongoDB server starts.
I don't want MongoDB to start in that way.
You can configure these things to all just happen on boot
or on demand, things like that.
So I think this is really pretty awesome.
So if anyone's doing any sort of automation with SystemD
and they're already using Python,
here's a really great way to just import this library
and just ask, hey, let's load up this unit,
which is like one of these services,
and ask, is it running?
Let's start it.
Let's create a new one.
All sorts of stuff.
Really, really nice.
That's cool.
Yeah, also kind of cool how this was built.
So this is based on Cython. So it's a wrapper and the C library that actually talks to systemd, right?
Yeah, I think so. And actually, I'm going to cover in the next episode, this sort of article on using Cython as a way for a simple way to wrap C APIs.
That's what surprised me. Yeah, I think that's why because it doesn't seem like a performance thing, right? I think it's like, let's use Cython to get a really simple API
into the C layer, as well as build the integration back into Python. So pretty cool. Yeah, nice. I'd
love to see that because I'm surprised they're using Cython for data, not just, you know,
C types or C FFI or something like that. But I'm sure there's a reason for that.
The other thing I want to point out about this is this was created and presented by Alvaro Leiva.
Sorry if I'm mispronouncing your last name there.
But he's a production engineer at Instagram and Facebook.
And so, you know, they have a few servers to manage.
And this is probably pretty polished
and comes from a pretty well-informed space
if it's being used there, right?
Pretty sweet.
All right. So before we get to the next one, let me tell you guys about DigitalOcean. So DigitalOcean is definitely one of the best hosting frameworks or places out there. You can go up,
create a server super easy, create a load balancer. You can create floating APIs that allow you to switch between various machines with perceived zero downtime, all sorts of stuff.
All of our code and our sites, our delivery, all that stuff is running on top of it.
It has been for a long time, and it's been working great. So like I said, if you're thinking about running servers and you want to do it affordably, high performance with lots of control,
then go to pythonbytes.fm slash digitalocean.
If you're a new user, you'll get $100 credit.
And, you know, check out what they have.
It takes about 60 seconds to set up a new server,
and you'll be SSH'd in and doing all sorts of good stuff.
Maybe you could even use PySystemD to, like, automate some cool stuff on it afterwards.
So check them out. It helps support the show, and it's definitely of good stuff. Maybe you could even use Pi System D to automate some cool stuff on it afterwards. So check them out.
It helps support the show,
and it's definitely a good product worth checking out.
Speaking of products, Brian, you're excited about one.
You want to update one, right?
Yeah, I am.
I usually, for a while, I was running the latest
or the last 2017 release of PyCharm,
but I don't know how recent this was, but not too long ago
we had the early access program
build one of 2018.2
is out for PyCharm. And the really exciting bit, and we got notified
by this from Bruno Oliveira, who goes by
Nicodermis on Twitter.
But it supports a whole bunch of new PyTest features.
And I'm kind of a PyTest kind of nut.
So the things that I'm really excited about.
You could say you wrote the book on it.
Yeah.
Well, you could, because I did.
Anyway, a couple of the features that I was really waiting for is PyCharm's really being an IDE has a lot of like, what do you call that?
IntelliSense or something?
Yeah, autocomplete IntelliSense.
Autocomplete.
That didn't work for fixtures to a test.
So if your test was using fixtures and it was returning an object or a function or something and you were trying to call that, you didn't have all of those cool autocomplete features.
Those are now in for fixtures of tests,
and that's really cool.
But the thing that I'm really excited about
is parameterization now works seamlessly within PyCharm.
So if you've got a test that is parameterized
so that you've got several,
or in my case sometimes dozens of different parameter sets that are run through the same test, you can always run that through, run all of those parameterizations in PyCharm.
And that was wonderful.
If you wanted to rerun one or rerun the failing ones, it would just rerun all of them.
I see.
It treated it like a whole method in the decorator bit that had here's all the variations. That was just like a thing that it would just rerun all of them. I see. It treated it like a whole method in the decorator bit that had, here's all the variations.
That was just like a thing that it would just rerun, right?
Yeah.
So now you can run a test and in the left sidebar, you can right click on one of them
and rerun just one of the parameterizations.
Or you can, like for instance, if like only two or three or some of them failed, when
you rerun failures, it only runs the parameterizations that failed.
And this is a huge time saver for me.
So I'm really excited about it.
Yeah, that's nice.
I use that feature a lot
where I just say rerun the failed tests.
For people that are like really,
and may not be too much of an issue
for people that are running really quick tests,
but a lot of my tests talk to hardware.
So they're not really that fast.
So this will save me like an hour a day, I'm sure. That's talk to hardware, so they're not really that fast. So this will save me
like an hour a day, I'm sure. That's awesome. Yeah, very, very cool. Dan, do you use PyTest?
Yeah, I do. Yeah, I actually just, you know, used it. We wrote the backend for realpython.com. So
we've got PyTest powered tests and integration tests for that. And yeah, it's just been a joy
to use, like especially the parameterization stuff. It's just so nice when you can reuse a lot of test code, you don't have to
like copy paste it around so much. So Dan, one thing I was going to cover, but you put it in
here before, before I could get to it. So you're faster is basically why is installing Python 3.6
so hard? And so sort of confusing, right? Like, you talked about this workshop that you recently
did.
And I've thrown this out on Twitter. And people sometimes tell me, oh, it's not hard. It's super easy. You do this. But then you if you actually go teach a workshop to beginners, you're like,
why are those four people over there not ready yet? Like, it's been 10 minutes,
what could they have possibly been doing? And it's because it's like, there's all these edge
cases, right? It's one of these things where in theory, it's easy. And it's not a problem that you really run into when you have a little bit more experience under your belt.
But for people getting into Python, it is definitely a barrier.
And we were teaching this workshop.
So Marietta was teaching it.
I was just running around kind of supporting people.
And for some people, we spend almost like two hours to get them to a working Python 3.6 install.
And, you know, there were some really, like you hit all of these interesting, but obviously kind of frustrating edge cases.
Like some people were running, they were running a Windows host.
And then they were also running the Linux subsystem for Windows.
So now you can, you know, can essentially boot up a VM that is integrated into Windows.
And it boots Ubuntu or Debian or some other Linux
distribution, I think. I think it defaults to Ubuntu, I'm not sure. I think it's Ubuntu as
well. Yeah, that's nice. So basically you have this like really tightly integrated Linux environment
that you can just work from your Windows host environment. The problem is that people maybe
accidentally installed Python in the Linux environment and they try and access it from the Windows environment
because it's a little bit unclear if you're a beginner
what actually the difference is
between these two different terminal windows.
Right, and you also might open PowerShell,
which is like a third still.
Exactly, things like that.
And then you have your path set in different ways.
And other issues were that
so the previous long-term release of Ubuntu,
I think it was 16. 1604 so it doesn't ship
with python 3.6 and so for this tutorial we specifically needed 3.6 and so you know people
started googling and just copying a bunch of stuff from stack overflow to install python 3.6 on
ubuntu well it turns out there's like two different ppas so like third-party packages that you can
install this from and one of them is broken or was broken during that time.
So, you know, people would have Python 3, but it had broken SSL and no PIP.
So it was essentially useless for the purposes of this tutorial.
And it's kind of crazy just into, you know, all of the edge cases you can encounter with this.
And I think it's really something we need to keep in mind, you know, when we're teaching beginners or kind of telling people how awesome Python is.
It can be a pretty jarring experience if you try to set it up and you're just sitting there.
Well, okay, I just wanted to try this.
It doesn't work.
For sure.
Well, so you guys are writing this up at realpython.com slash installing-python as sort of an ongoing guide, right?
Yeah.
So we decided to do something about it.
So shout out to John Sturtz and Jim Anderson.
And we got together and put together
this sort of the ultimate Python 3 install guide.
And we're going to keep it maintained.
And it tells you how to install Python
in very specific steps
in all kinds of different configurations.
So Linux, macOS, different Linux distributions,
how to compile it from source. And we're just going to add to it and improve it based on feedback.
And hopefully that's something we can just use in the next workshop and then tell people what to do.
I hope that when you refer to Python 2 in there to say, oh, don't do Python 2,
do Python 3, that you call it legacy Python. So just throw that in there.
I'm still trying to make that a thing.
I don't think we even mentioned it in that particular piece this is python 3 only yeah and then my mac is about ready for a format
because you know it's time it's been like it's been bad so anyway it's about time for a format
what would you like after going through this whole experience we could do homebrew you could
do anaconda you could do download the pkg file from python.org etc etc what would you
do if you were setting up a new computer like on mac yeah on mac yeah i so i'm a big homebrew
fan because it makes it makes upgrading very easy and um it's just something that i personally use
for other purposes as well so one of the things i usually do, you know, when I set up a new macOS development environment,
I upgrade Bash.
So I use Bash as my preferred shell
and macOS ships with a super old version of Bash.
And with Homebrew, it's super easy
just to get the latest version of Bash
and then, you know, a bunch of other command line tools
that I use.
And so I just use that to install Python as well.
So I kind of like that.
I mean, Python org version, it works as well. So I kind of like that. I mean, Python
org version, it works as well. But if you're going to use homebrew anyway, which I think
you want to use, if you're on a Mac, then I would just keep everything in homebrew.
Yeah, that's what I'm thinking as well. It makes a lot of sense. Awesome.
Both on Mac and on Windows. I just always just use the python.org installer.
Yeah, that's what I've been doing as well. But with Homebrew, you just type upgrade, you know, and you can have different versions and stuff.
I don't know.
I'm thinking of playing with Homebrew next time.
But anyway, very cool.
Yeah, there's also PyEnf.
So that's sort of the other.
If you're going to go with Homebrew, you could just go, you know, brew installed Python 3 and you get sort of one, the latest version of Python 3.
Or you could install something called pyenv first
and then that's sort of another layer of abstraction on top that allows you to switch
between different versions of python including different versions of python 3 so you can just go
you know i want python 3 5 for testing and i'm going to run all of my latest stuff on the python
3 7 beta version or something like that so that's
super nice it's maybe a little bit more advanced so i feel like you're probably there mike but for
a complete beginner i'm not sure if i would recommend it yeah yeah yeah sure of course i
don't think i'm there i've tried it several times and it hasn't worked for me so i don't want to go
too much longer this but uh what i've started doing on my servers is when i ssh in part of my
my shell profile automatically configures the main virtual environment for whatever that purpose of that server is.
So when I SSH in, I'm actually running just a virtual environment just by default.
And I was considering doing even that for my Mac and just changing the shell back so it doesn't do something weird.
I don't know. I may get myself into trouble with that, but it's been working so far. All right. So I want to round this out with just a short little list of 30 amazing Python
projects from 2018. So there's this thing called MyBridge. And MyBridge is a little bit like a
readability or a little bit like a flipboard where they kind of keep track of different articles,
but it's more technology focused than just say Flipboard or Zite, those types of things. And the article starts with the MyBridge AI evaluates the quality by considering
popularity, engagement, recency, and so on. So apparently they have this AI, which is kind of
cool that goes through and like looks at human interaction with all these articles, these tech
articles in the Python space, and then says, here's the articles that our community
sort of interacted with that they really liked, or packages actually in this case.
So let me just give you a quick rundown on these just to kind of give you all some exposure
and like, oh, hey, I hadn't heard of that package. That's pretty cool. And then you guys can jump in
and give me some thoughts. So I'll go from the least popular to the most popular. So number 30 is PDF
tab extract, which is a set of tools for getting tables out of PDF documents, which is pretty cool
and data mining on scan documents. Pretty sweet. There's number 28 is surprise, which is a scikit
learn extension for building and analyzing, building a recommender system.
So you can like say, you might also like this,
which is kind of cool.
Number 27, we won't do all of them.
That's why I'm skipping number 29.
Number 27 is EEL,
which is basically a simple equivalent
of the Python's version of an ElectronJS system.
What do you guys think of that?
How have we not
covered that already i think we might have mentioned it because we have been on a i think i
think we've covered it but there's two variations and the the sort of story that seems to go along
with this is like it's a simple library it's not really like fully there's my understanding that
you can build simple apps but not like full-on apps. But if you could build full on massive apps,
I'd be all over this. That's awesome. Number 25, Clairvoyant, a Python program that identifies
and monitors historical cues for short, short term stock movement and stuff. So I don't do
really any stock trading. I mean, I put my, I put money into mutual funds, so I don't really care
that much about it. But the reason I bring this up is Python actually is pretty involved in the whole stock trading,
automation, and real-time stuff. There's actually a really good documentary called
The Wall Street Code that goes into all these programmers that are building like AIs and stuff
in Python. And it's pretty cool. So it's free on YouTube. Nice. Yeah. Brian, are you a fan of Mr.
Robot or Dan? Either of you guys? Yeah, I was just going to say. No? No. Oh, man. Dan? I like it. Yeah. Good show. I think it went a
little weird in episode two. I'm sorry, season two. But like the first year, I was just like
blown away. So there's this thing called F Society, which is a hacking tools pack for
penetration testing in Python, which of course, Python is very big in the cybersecurity space.
You might, if you want to like check your own stuff, run some of these tools against your
things before someone else does. We talked about Kenneth Wright's last time and number 18 was Maya,
DateTime for Humans, Better Exceptions. I think we covered that as well. 16, API Star, a really
cool expressive Python 3.5 based API from Tom Christie,
same guy that does Django REST framework,
but this is like the re-envisioned Python 3 version, which is cool.
MicroPython, very awesome for little projects of spacey industrial strength.
Natural Language Processor is number six.
Number two was PyTorch for machine learning.
That seems to be sort of becoming one of the main machine learning libraries. And number one, Home Assistant for open source home automation. Very cool. I keep
dreaming of like creating some IoT thing with MicroPython and then plugging it into Home
Assistant. But I just have to figure out what that thing is going to be. It's a solution looking for
a problem, right? But it's a good, good solution, I think. Yeah, yeah, I think so. it's a solution looking for a problem right but it's a good good solution i think yeah
yeah i think so it's a good solution if i could just find a problem to like apply it to those
that i read off there those surprising any of those like super interesting to you guys i'm a
huge fan of micro python so i just learned a little bit more about it and so it's basically
this like super small and lean re-implementation of Python 3, I guess, that runs on these super low-power, low-computational-power microcontrollers.
And it's just so cool to be running Python on tiny, tiny machines that have very little RAM.
And we're talking kilobytes and stuff.
Right, like a $5 chip.
Yeah, so cool.
Yeah, and you got one of those
little bat in your your goodie bag at pycon right they did like a video review of that on youtube
and i was just you know all giddy about it just playing with this thing just plugs into your usb
and you can you know start running python on this thing that's a really good implementation they did
brian how about you yeah i guess i'd have to second that micro python is awesome and a bunch
of the adafruit products run are able to run it and uh yeah it's all fun api store something i've
been meaning to try still i haven't done any projects with it but it looks fun yeah it
definitely looks fun quite cool all right there's one one final thing I want to cover. We had the GDPR stuff come out, basically come into effect at the end of last week. So just a quick point to an article from our friend Chris Medina at tryexceptpass.org slash article slash GDPR, sort of a take for developers. And if you haven't got your stuff all in line yet, please consider doing so for your own own good pythonbytes.fm is all up and
ready so yeah dan you probably had to do the same for uh real python right yeah some sleepless nights
because it's well it's everything is up for interpretation right so it's it's kind of hard to
yeah just to put it into concrete terms but um i mean it's just been nuts you know that now that
the deadline for that law to go into effect is passed.
Like we've seen some services shut down.
I think like Instapaper is a service that I really I've been using it for a long time and they just shut down in Europe.
They say it's temporary, but who knows?
Yeah, we'll see.
It's temporary until it's not.
But yeah, hopefully they get that figured out.
But yeah, I saw that.
That was quite the discussion on Hacker News.
The other thing I wanted to bring up, which I't know this is this is pretty cool to me i deal with an insane amount of large files
and i use dropbox mostly for that like to give you a sense like i have the terabyte plan and
it's like sometimes gets too full and i have to clean up my dropbox storage but my hard drive
doesn't really want to sync that much stuff did you guys know that dropbox released this thing called smart sync yes and i've been wanting to use it but it installs a
kernel module and so i was like ah right because it's gotta it's gotta get into the file driver
yes so if people have this problem they have dropbox came out this thing called smart sync
that will basically give you and your Explorer
and your Open Dialogs and Windows or Mac
a view which pretends as if the files are there.
And as soon as you try to interact with them,
even from the command line,
they will automatically download if they're not,
which basically lets you sync nothing
but what you interact with, which is really amazing.
It sounds super cool.
I have a lot of trust in the Dropbox engineering team.
And if it works that smoothly, I think it's an amazing feature.
I've sort of been hesitant about enabling it.
All right.
When you enable it, you tell us how it goes.
I'll probably try it out.
I'll give you guys a report eventually.
Cool.
All right.
Well, I think that's it.
Unless Brian or Dan, you have extra stuff to share with everyone?
No.
Right on.
Well.
I think I'm all good. Yeah. Great to be back. Well, I think that's it. Unless Brian or Dan, you have extra stuff to share with everyone? No. Right on. Well. I think I'm all good. Yeah. Great to be back.
Yeah, definitely. Brian, thank you so much. And Dan, thanks for dropping in and adding some
spice to the mix for our whole podcast here.
Awesome. Thanks, guys.
Yep. Bye, everyone.
Bye.
Bye.
Thank you for listening to Python Bytes. Follow the show on Twitter via at Python Bytes. That's
Python Bytes as in B-Y-T-E-S. And get the full show notes at PythonBytes.fm. If you have a news
item you want featured, just visit PythonBytes.fm and send it our way. We're always on the lookout
for sharing something cool. On behalf of myself and Brian Auchin, this is Michael Kennedy.
Thank you for listening and sharing this podcast with your friends and colleagues.